feat(cli): Add a --sort flag

This commit is contained in:
Ed Page 2024-02-07 16:06:19 -06:00
parent ad80305210
commit eb99975267
7 changed files with 17 additions and 4 deletions

View file

@ -40,6 +40,10 @@ pub(crate) struct Args {
#[arg(short = 'j', long = "threads", default_value = "0")]
pub(crate) threads: usize,
/// Sort results
#[arg(long)]
pub(crate) sort: bool,
/// Respect excluded files even for paths passed explicitly.
#[arg(long, help_heading = None)]
pub(crate) force_exclude: bool,

View file

@ -221,7 +221,11 @@ fn run_checks(args: &args::Args) -> proc_exit::ExitResult {
.with_code(proc_exit::sysexits::CONFIG_ERR)?;
let walk_policy = engine.walk(&cwd);
let threads = if path.is_file() { 1 } else { args.threads };
let threads = if path.is_file() || args.sort {
1
} else {
args.threads
};
let single_threaded = threads == 1;
let mut walk = ignore::WalkBuilder::new(path);
@ -233,6 +237,9 @@ fn run_checks(args: &args::Args) -> proc_exit::ExitResult {
.git_ignore(walk_policy.ignore_vcs())
.git_exclude(walk_policy.ignore_vcs())
.parents(walk_policy.ignore_parent());
if args.sort {
walk.sort_by_file_name(|a, b| a.cmp(b));
}
if !walk_policy.extend_exclude.is_empty() {
let mut overrides = ignore::overrides::OverrideBuilder::new(".");
for pattern in walk_policy.extend_exclude.iter() {

View file

@ -1,4 +1,5 @@
bin.name = "typos"
args = "--sort"
status.code = 2
stdin = ""
stdout = """

View file

@ -1,5 +1,5 @@
bin.name = "typos"
args = "-j1"
args = "--sort"
stdin = ""
stdout = """
error: `hello` should be `goodbye`

View file

@ -1,5 +1,5 @@
bin.name = "typos"
args = "--file-list -"
args = "--sort --file-list -"
stdin = """
b.fail
d.fail

View file

@ -11,6 +11,7 @@ Arguments:
Options:
--file-list <FILE_LIST> Read the list of newline separated paths from file or stdin (if `-`)
-j, --threads <THREADS> The approximate number of threads to use [default: 0]
--sort Sort results
--force-exclude Respect excluded files even for paths passed explicitly
-h, --help Print help
-V, --version Print version

View file

@ -1,5 +1,5 @@
bin.name = "typos"
stdin = ""
stdin = "--sort"
stdout = """
error: `hello` should be `goodbye`
--> ./file.ignore:1:1