diff --git a/Cargo.lock b/Cargo.lock index 02ba5eb..355ae97 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,50 +4,72 @@ version = 3 [[package]] name = "ansi_term" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.4", + "winapi", ] [[package]] -name = "ansi_term" -version = "0.12.1" +name = "anstream" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ - "winapi 0.3.4", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", ] [[package]] -name = "anyhow" -version = "1.0.75" +name = "anstyle" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] -name = "atty" +name = "anstyle-parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d912da0db7fa85514874458ca3651fe2cddace8d0b0505571dbdcd41ab490159" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ - "kernel32-sys", - "libc", - "winapi 0.2.8", + "utf8parse", ] [[package]] -name = "autocfg" -version = "0.1.7" +name = "anstyle-query" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] [[package]] -name = "bitflags" -version = "1.2.1" +name = "anstyle-wincon" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "autocfg" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "bitflags" @@ -72,28 +94,69 @@ checksum = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" [[package]] name = "clap" -version = "2.33.3" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" dependencies = [ - "ansi_term 0.11.0", - "atty", - "bitflags 1.2.1", + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", "strsim", - "term_size", - "textwrap", - "unicode-width", - "vec_map", + "terminal_size", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "errno" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +dependencies = [ + "libc", + "windows-sys", ] [[package]] name = "git-tree" version = "0.1.5" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "anyhow", + "clap", "git2", - "structopt", ] [[package]] @@ -102,7 +165,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd" dependencies = [ - "bitflags 2.4.0", + "bitflags", "libc", "libgit2-sys", "log", @@ -113,12 +176,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" -dependencies = [ - "unicode-segmentation", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "idna" @@ -140,27 +200,11 @@ dependencies = [ "libc", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" -version = "0.2.66" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libgit2-sys" @@ -202,6 +246,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" + [[package]] name = "log" version = "0.4.8" @@ -258,107 +308,62 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.8" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] [[package]] -name = "strsim" -version = "0.8.0" +name = "rustix" +version = "0.38.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" dependencies = [ - "clap", - "lazy_static", - "structopt-derive", + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", ] [[package]] -name = "structopt-derive" -version = "0.4.18" +name = "strsim" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.57" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", - "unicode-xid", -] - -[[package]] -name = "term_size" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9" -dependencies = [ - "libc", - "winapi 0.3.4", + "unicode-ident", ] [[package]] -name = "textwrap" -version = "0.11.0" +name = "terminal_size" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "term_size", - "unicode-width", + "rustix", + "windows-sys", ] [[package]] @@ -371,28 +376,16 @@ dependencies = [ ] [[package]] -name = "unicode-normalization" -version = "0.1.5" +name = "unicode-ident" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] -name = "unicode-segmentation" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" - -[[package]] -name = "unicode-width" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" - -[[package]] -name = "unicode-xid" -version = "0.2.1" +name = "unicode-normalization" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f" [[package]] name = "url" @@ -405,6 +398,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "vcpkg" version = "0.2.2" @@ -412,47 +411,89 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b" [[package]] -name = "vec_map" -version = "0.8.0" +name = "winapi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "version_check" -version = "0.9.2" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "winapi" -version = "0.2.8" +name = "windows-sys" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] [[package]] -name = "winapi" -version = "0.3.4" +name = "windows-targets" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] -name = "winapi-build" -version = "0.1.1" +name = "windows_aarch64_gnullvm" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "windows_aarch64_msvc" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows_i686_gnu" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/Cargo.toml b/Cargo.toml index ae44f11..7b68e8c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,4 +11,4 @@ anyhow = "1.0.75" # We vendor OpenSSL. If we do not, compilation will fail on recent (as of # January 2023) Ubuntu systems. git2 = { version = "0.18.1", features = ["vendored-openssl"] } -structopt = { version = "0.3", features = [ "suggestions", "wrap_help" ] } +clap = { version = "4", features = [ "derive", "wrap_help" ] } diff --git a/src/main.rs b/src/main.rs index 82950c9..60c19d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ use ansi_term::Colour::{Blue, Fixed, Green, Red, White, Yellow}; use anyhow::{anyhow, Result}; +use clap::Parser; use git2::{Branch, Repository, Status}; use std::collections::BTreeMap; use std::ffi::{OsStr, OsString}; @@ -7,7 +8,6 @@ use std::fmt; use std::fs::ReadDir; use std::path::{Component, Components, Path}; use std::str; -use structopt::StructOpt; #[derive(Debug)] enum Node { @@ -243,15 +243,15 @@ impl fmt::Display for Node { } } -fn walk_repository(repo: &Repository, name: &OsStr, opt: &Opt) -> Result> { - if opt.summary { - walk_summary(&repo, name, &opt) +fn walk_repository(repo: &Repository, name: &OsStr, args: &Args) -> Result> { + if args.summary { + walk_summary(&repo, name, &args) } else { - walk_entries(&repo, name, &opt) + walk_entries(&repo, name, &args) } } -fn walk_entries(repo: &Repository, name: &OsStr, opt: &Opt) -> Result> { +fn walk_entries(repo: &Repository, name: &OsStr, args: &Args) -> Result> { let statuses = repo.statuses(None)?; let mut root = Tree { @@ -260,7 +260,7 @@ fn walk_entries(repo: &Repository, name: &OsStr, opt: &Opt) -> Result &OsStr { path.file_name().unwrap_or_else(|| path.as_os_str()) } -fn walk_summary(repo: &Repository, name: &OsStr, opt: &Opt) -> Result> { +fn walk_summary(repo: &Repository, name: &OsStr, args: &Args) -> Result> { let stats = DiffStat::from(repo)?; - if opt.only_show_changes && stats.insertions == 0 && stats.deletions == 0 { + if args.only_show_changes && stats.insertions == 0 && stats.deletions == 0 { return Ok(None); } @@ -305,7 +305,7 @@ fn walk_summary(repo: &Repository, name: &OsStr, opt: &Opt) -> Result Result { +fn walk_directory(path: &Path, iter: ReadDir, depth: usize, args: &Args) -> Result { let mut tree = Tree { name: file_name(path).into(), children: BTreeMap::new(), @@ -316,7 +316,7 @@ fn walk_directory(path: &Path, iter: ReadDir, depth: usize, opt: &Opt) -> Result let new_entries = directories .iter() .filter_map(|ref entry| { - walk_path(&entry.path(), depth - 1, &opt) + walk_path(&entry.path(), depth - 1, &args) .ok() .and_then(|child| child.map(|child| (child, entry.file_name()))) }) @@ -329,18 +329,18 @@ fn walk_directory(path: &Path, iter: ReadDir, depth: usize, opt: &Opt) -> Result Ok(Node::Tree(tree)) } -fn walk_path(path: &Path, depth: usize, opt: &Opt) -> Result> { +fn walk_path(path: &Path, depth: usize, args: &Args) -> Result> { if path.is_dir() { match Repository::open(&path) { Ok(repo) => { - let node = walk_repository(&repo, file_name(path), &opt)?; + let node = walk_repository(&repo, file_name(path), &args)?; Ok(node) } _ => { if depth > 0 { - let node = walk_directory(&path, path.read_dir()?, depth, &opt)?; + let node = walk_directory(&path, path.read_dir()?, depth, &args)?; Ok(Some(node)) } else { @@ -353,7 +353,7 @@ fn walk_path(path: &Path, depth: usize, opt: &Opt) -> Result> { } } -fn fallback(path: &Path, opt: &Opt) -> Result> { +fn fallback(path: &Path, args: &Args) -> Result> { let repo = match Repository::discover(&path) { Err(ref error) if (error.class() == git2::ErrorClass::Repository @@ -369,10 +369,10 @@ fn fallback(path: &Path, opt: &Opt) -> Result> { otherwise => otherwise?, }; - walk_repository(&repo, file_name(path), &opt) + walk_repository(&repo, file_name(path), &args) } -#[derive(Debug, StructOpt)] +#[derive(Parser, Debug)] /// tree + git status: displays git status info in a tree /// /// git-tree searches for a git repository the same way git does, and displays @@ -383,35 +383,35 @@ fn fallback(path: &Path, opt: &Opt) -> Result> { /// /// A column in front of each file’s name indicates changes to the index and /// the working tree, respectively (M: modified, N: new). -#[structopt(author)] -struct Opt { - #[structopt(short, long)] +#[command(author, version, about)] +struct Args { /// Include ignored files + #[arg(short, long)] all: bool, - #[structopt(long, default_value = "0")] /// Recursively search for repositories up to levels deep + #[arg(long, default_value = "0")] depth: usize, - #[structopt(short, long)] /// Show only a summary containing the number of additions, deletions, and /// changed files + #[arg(short, long)] summary: bool, - #[structopt(long)] /// Only show repositories that contains changes (useful in combination /// with --depth and --summary) + #[arg(long)] only_show_changes: bool, } fn run() -> Result<()> { - let opt = Opt::from_args(); + let args = Args::parse(); let path = Path::new("."); - let node = match walk_path(&path, opt.depth, &opt)? { + let node = match walk_path(&path, args.depth, &args)? { node @ Some(_) => node, - None => fallback(&path, &opt)?, + None => fallback(&path, &args)?, }; match node {