Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fd for openSUSE:Factory checked in at 2022-02-05 23:23:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fd (Old) and /work/SRC/openSUSE:Factory/.fd.new.1898 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fd" Sat Feb 5 23:23:25 2022 rev:13 rq:951787 version:8.3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/fd/fd.changes 2022-01-08 23:24:24.446270249 +0100 +++ /work/SRC/openSUSE:Factory/.fd.new.1898/fd.changes 2022-02-05 23:24:39.775317443 +0100 @@ -1,0 +2,14 @@ +Sat Jan 29 16:58:24 UTC 2022 - [email protected] + +- Update to version 8.3.2: + * Add temporary version of logo + * Bump version to v8.3.2 + * Add clippy run in CI/CD + * Add tavianator sponsoring link + * Bump MSRV to 1.54 + * Upgrade to clap 3.0 + * Add CHANGELOG entry + * Change test_opposing to be less flaky. + * Update normpath to 0.3.2 to fix issue #931 + +------------------------------------------------------------------- @@ -6,0 +21 @@ +>>>>>>> ./fd.changes.new Old: ---- fd-8.3.1.tar.gz New: ---- _service _servicedata fd-8.3.2.obscpio fd-8.3.2.tar.gz fd.obsinfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fd.spec ++++++ --- /var/tmp/diff_new_pack.BuuunL/_old 2022-02-05 23:24:40.515312382 +0100 +++ /var/tmp/diff_new_pack.BuuunL/_new 2022-02-05 23:24:40.519312355 +0100 @@ -17,7 +17,7 @@ Name: fd -Version: 8.3.1 +Version: 8.3.2 Release: 0 Summary: An alternative to the "find" utility License: Apache-2.0 AND MIT ++++++ _service ++++++ <services> <service mode="disabled" name="obs_scm"> <param name="url">https://github.com/sharkdp/fd.git</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> <param name="revision">v8.3.2</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> <param name="changesgenerate">enable</param> </service> <service mode="disabled" name="tar" /> <service mode="disabled" name="recompress"> <param name="file">*.tar</param> <param name="compression">xz</param> </service> <service mode="disabled" name="set_version" /> <service name="cargo_vendor" mode="disabled"> <param name="srcdir">fd</param> <param name="compression">xz</param> <param name="update">true</param> </service> <service name="cargo_audit" mode="disabled" /> </services> ++++++ _servicedata ++++++ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/sharkdp/fd.git</param> <param name="changesrevision">9f5ed8534e824b3e2a0934ff3aa0b781cb370688</param></service></servicedata> (No newline at EOF) ++++++ fd-8.3.1.tar.gz -> fd-8.3.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/.github/FUNDING.yml new/fd-8.3.2/.github/FUNDING.yml --- old/fd-8.3.1/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/fd-8.3.2/.github/FUNDING.yml 2022-01-29 16:53:13.000000000 +0100 @@ -0,0 +1 @@ +github: [sharkdp, tavianator] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/.github/workflows/CICD.yml new/fd-8.3.2/.github/workflows/CICD.yml --- old/fd-8.3.1/.github/workflows/CICD.yml 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/.github/workflows/CICD.yml 2022-01-29 16:53:13.000000000 +0100 @@ -1,7 +1,7 @@ name: CICD env: - MIN_SUPPORTED_RUST_VERSION: "1.53.0" + MIN_SUPPORTED_RUST_VERSION: "1.54.0" CICD_INTERMEDIATES_DIR: "_cicd-intermediates" on: @@ -46,11 +46,18 @@ steps: - name: Checkout source code uses: actions/checkout@v2 + - name: Install rust toolchain (v${{ env.MIN_SUPPORTED_RUST_VERSION }}) uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.MIN_SUPPORTED_RUST_VERSION }} default: true + components: clippy + - name: Run clippy (on minimum supported rust version to prevent warnings we can't fix) + uses: actions-rs/cargo@v1 + with: + command: clippy + args: --locked --all-targets --all-features profile: minimal # minimal component installation (ie, no documentation) - name: Run tests uses: actions-rs/cargo@v1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/CHANGELOG.md new/fd-8.3.2/CHANGELOG.md --- old/fd-8.3.1/CHANGELOG.md 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/CHANGELOG.md 2022-01-29 16:53:13.000000000 +0100 @@ -15,6 +15,11 @@ ## Other +# v8.3.2 + +## Bugfixes + +- Invalid absolute path on windows when searching from the drive root, see #931 and #936 (@gbarta) # v8.3.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/Cargo.lock new/fd-8.3.2/Cargo.lock --- old/fd-8.3.1/Cargo.lock 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/Cargo.lock 2022-01-29 16:53:13.000000000 +0100 @@ -85,18 +85,28 @@ [[package]] name = "clap" -version = "2.34.0" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "f6f34b09b9ee8c7c7b400fe2f8df39cafc9538b03d6ba7f4ae13e4cb90bfbb7d" dependencies = [ - "ansi_term", "atty", "bitflags", + "indexmap", + "lazy_static", + "os_str_bytes", "strsim", - "term_size", + "termcolor", + "terminal_size", "textwrap", - "unicode-width", - "vec_map", +] + +[[package]] +name = "clap_complete" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a394f7ec0715b42a4e52b294984c27c9a61f77c8d82f7774c5198350be143f19" +dependencies = [ + "clap", ] [[package]] @@ -148,13 +158,14 @@ [[package]] name = "fd-find" -version = "8.3.1" +version = "8.3.2" dependencies = [ "ansi_term", "anyhow", "atty", "chrono", "clap", + "clap_complete", "ctrlc", "diff", "dirs-next", @@ -232,6 +243,12 @@ ] [[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] name = "hermit-abi" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -265,6 +282,16 @@ ] [[package]] +name = "indexmap" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] name = "jemalloc-sys" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -323,9 +350,9 @@ [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -345,9 +372,9 @@ [[package]] name = "normpath" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "640c20e9df4a2d4a5adad5b47e17d76dac3e824346b181931c3ec9f7a85687b1" +checksum = "04aaf5e9cb0fbf883cc0423159eacdf96a9878022084b35c462c428cab73bcaf" dependencies = [ "winapi", ] @@ -388,19 +415,28 @@ checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] +name = "os_str_bytes" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" +dependencies = [ + "memchr", +] + +[[package]] name = "proc-macro2" -version = "1.0.32" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" dependencies = [ "proc-macro2", ] @@ -498,15 +534,15 @@ [[package]] name = "strsim" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.82" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" +checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" dependencies = [ "proc-macro2", "quote", @@ -524,10 +560,19 @@ ] [[package]] -name = "term_size" -version = "0.3.2" +name = "termcolor" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" dependencies = [ "libc", "winapi", @@ -548,12 +593,11 @@ [[package]] name = "textwrap" -version = "0.11.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" dependencies = [ - "term_size", - "unicode-width", + "terminal_size", ] [[package]] @@ -576,12 +620,6 @@ ] [[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - -[[package]] name = "unicode-xid" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -598,12 +636,6 @@ ] [[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/Cargo.toml new/fd-8.3.2/Cargo.toml --- old/fd-8.3.1/Cargo.toml 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/Cargo.toml 2022-01-29 16:53:13.000000000 +0100 @@ -16,7 +16,7 @@ name = "fd-find" readme = "README.md" repository = "https://github.com/sharkdp/fd" -version = "8.3.1" +version = "8.3.2" edition= "2018" [badges.appveyor] @@ -30,7 +30,8 @@ path = "src/main.rs" [build-dependencies] -clap = "2.34.0" +clap = "3.0" +clap_complete = "3.0" version_check = "0.9" [dependencies] @@ -46,13 +47,13 @@ globset = "0.4" anyhow = "1.0" dirs-next = "2.0" -normpath = "0.3" +normpath = "0.3.2" chrono = "0.4" once_cell = "1.9.0" [dependencies.clap] -version = "2.34.0" -features = ["suggestions", "color", "wrap_help"] +version = "3.0" +features = ["suggestions", "color", "wrap_help", "cargo"] [target.'cfg(unix)'.dependencies] users = "0.11.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/README.md new/fd-8.3.2/README.md --- old/fd-8.3.1/README.md 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/README.md 2022-01-29 16:53:13.000000000 +0100 @@ -535,7 +535,7 @@ If you use an older version of Ubuntu, you can download the latest `.deb` package from the [release page](https://github.com/sharkdp/fd/releases) and install it via: ``` bash -sudo dpkg -i fd_8.3.1_amd64.deb # adapt version number and architecture +sudo dpkg -i fd_8.3.2_amd64.deb # adapt version number and architecture ``` ### On Debian @@ -652,7 +652,7 @@ ``` cargo install fd-find ``` -Note that rust version *1.53.0* or later is required. +Note that rust version *1.54.0* or later is required. `make` is also needed for the build. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/build.rs new/fd-8.3.2/build.rs --- old/fd-8.3.1/build.rs 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/build.rs 2022-01-29 16:53:13.000000000 +0100 @@ -1,11 +1,13 @@ use std::fs; -use clap::Shell; +use clap_complete::{generate_to, Shell}; +use Shell::*; +//use clap_complete::shells::Shel{Bash, Fish, PowerShell, Elvish}; include!("src/app.rs"); fn main() { - let min_version = "1.53"; + let min_version = "1.54"; match version_check::is_min_version(min_version) { Some(true) => {} @@ -24,7 +26,8 @@ fs::create_dir_all(&outdir).unwrap(); let mut app = build_app(); - app.gen_completions("fd", Shell::Bash, &outdir); - app.gen_completions("fd", Shell::Fish, &outdir); - app.gen_completions("fd", Shell::PowerShell, &outdir); + // NOTE: zsh completions are hand written in contrib/completion/_fd + for shell in [Bash, PowerShell, Fish, Elvish] { + generate_to(shell, &mut app, "fd", &outdir).unwrap(); + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/clippy.toml new/fd-8.3.2/clippy.toml --- old/fd-8.3.1/clippy.toml 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/clippy.toml 2022-01-29 16:53:13.000000000 +0100 @@ -1 +1 @@ -msrv = "1.53.0" +msrv = "1.54.0" Binary files old/fd-8.3.1/doc/logo.png and new/fd-8.3.2/doc/logo.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/doc/logo.svg new/fd-8.3.2/doc/logo.svg --- old/fd-8.3.1/doc/logo.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/fd-8.3.2/doc/logo.svg 2022-01-29 16:53:13.000000000 +0100 @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="66mm" + height="66mm" + viewBox="0 0 66 66.000001" + version="1.1" + id="svg5" + inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)" + sodipodi:docname="logo.svg" + inkscape:export-filename="/home/shark/Informatik/rust/fd/doc/logo.png" + inkscape:export-xdpi="192.42" + inkscape:export-ydpi="192.42" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#999999" + borderopacity="1" + inkscape:pageshadow="0" + inkscape:pageopacity="1" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="2.1795515" + inkscape:cx="114.47309" + inkscape:cy="176.18304" + inkscape:window-width="1920" + inkscape:window-height="1175" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + showguides="false" + inkscape:guide-bbox="true" + inkscape:snap-global="false" + fit-margin-top="2" + fit-margin-left="2" + fit-margin-right="2" + fit-margin-bottom="2" + lock-margins="true"> + <sodipodi:guide + position="26.228232,26.126763" + orientation="0,-1" + id="guide47826" /> + <sodipodi:guide + position="25.799494,2.3628924" + orientation="0,-1" + id="guide47828" /> + </sodipodi:namedview> + <defs + id="defs2" /> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-21.358009,-148.28012)"> + <g + id="g66267" + transform="matrix(0.84959471,0,0,0.84959471,7.9920783,43.351816)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.7126px;line-height:0;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, ';white-space:pre;inline-size:37.3715;fill:#e5e5e5;fill-opacity:1;stroke-width:0.742816" + x="50.647034" + y="173.19841" + id="text50653" + transform="matrix(1.0604862,0,0,1.0604862,-3.3101428,-10.150043)"><tspan + x="50.647034" + y="173.19841" + id="tspan66635"><tspan + style="font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro'" + id="tspan66633">fd</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.7126px;line-height:0;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, ';white-space:pre;inline-size:37.3715;fill:#00ccff;fill-opacity:0.996078;stroke-width:0.742816" + x="50.647034" + y="173.19841" + id="text1244" + transform="matrix(1.0604862,0,0,1.0604862,-2.8008599,-9.6407599)"><tspan + x="50.647034" + y="173.19841" + id="tspan66639"><tspan + style="font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro'" + id="tspan66637">fd</tspan></tspan></text> + <g + id="g47824" + transform="translate(0.1724878,-0.35338542)"> + <g + id="g42041"> + <path + style="fill:none;stroke:#939dac;stroke-width:1.065;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 28.209616,155.51329 v 15.68758 H 40.83001" + id="path39763" + sodipodi:nodetypes="ccc" /> + <path + style="fill:#b7bec8;stroke:#939dac;stroke-width:1.065;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 27.869464,161.83767 H 40.261291" + id="path39765" /> + </g> + <g + id="g41945" + transform="translate(-1.0583333)"> + <path + style="fill:#0088aa;fill-opacity:0.993797;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 42.164961,159.42939 -1.554274,-1.89462 -1.975227,-0.005 c -0.941841,0.014 -1.165466,0.27232 -1.14085,2.88812 z" + id="path40006" + sodipodi:nodetypes="ccccc" /> + <rect + style="fill:#01ccff;fill-opacity:1;stroke:none;stroke-width:2.3;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.80126;paint-order:stroke fill markers" + id="rect39949" + width="9.4925022" + height="6.2080379" + x="37.492516" + y="158.82776" + ry="0.90871465" /> + </g> + <g + id="g41951" + transform="translate(-1.0583334,9.3665773)"> + <path + style="fill:#373e48;fill-opacity:0.993797;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 42.164961,159.42939 -1.554274,-1.89462 -1.975227,-0.005 c -0.941841,0.014 -1.165466,0.27232 -1.14085,2.88812 z" + id="path41947" + sodipodi:nodetypes="ccccc" /> + <rect + style="fill:#535d6c;fill-opacity:0.993797;stroke:none;stroke-width:2.3;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.80126;paint-order:stroke fill markers" + id="rect41949" + width="9.4925022" + height="6.2080379" + x="37.492516" + y="158.82776" + ry="0.90871465" /> + </g> + <g + id="g41957" + transform="translate(-14.306994,-6.8962642)"> + <path + style="fill:#373e48;fill-opacity:0.993797;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 42.164961,159.42939 -1.554274,-1.89462 -1.975227,-0.005 c -0.941841,0.014 -1.165466,0.27232 -1.14085,2.88812 z" + id="path41953" + sodipodi:nodetypes="ccccc" /> + <rect + style="fill:#535d6c;fill-opacity:0.993797;stroke:none;stroke-width:2.3;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.80126;paint-order:stroke fill markers" + id="rect41955" + width="9.4925022" + height="6.2080379" + x="37.492516" + y="158.82776" + ry="0.90871465" /> + </g> + </g> + <g + id="g65006" + transform="matrix(0.55302761,0,0,0.55302761,66.463548,117.45819)" /> + </g> + </g> +</svg> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/src/app.rs new/fd-8.3.2/src/app.rs --- old/fd-8.3.1/src/app.rs 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/src/app.rs 2022-01-29 16:53:13.000000000 +0100 @@ -1,25 +1,25 @@ -use clap::{crate_version, App, AppSettings, Arg}; +use clap::{crate_version, App, AppSettings, Arg, ColorChoice}; -pub fn build_app() -> App<'static, 'static> { - let clap_color_setting = if std::env::var_os("NO_COLOR").is_none() { - AppSettings::ColoredHelp +pub fn build_app() -> App<'static> { + let clap_color_choice = if std::env::var_os("NO_COLOR").is_none() { + ColorChoice::Auto } else { - AppSettings::ColorNever + ColorChoice::Never }; let mut app = App::new("fd") .version(crate_version!()) - .usage("fd [FLAGS/OPTIONS] [<pattern>] [<path>...]") - .setting(clap_color_setting) + .color(clap_color_choice) .setting(AppSettings::DeriveDisplayOrder) + .setting(AppSettings::DontCollapseArgsInUsage) .after_help( "Note: `fd -h` prints a short and concise overview while `fd --help` gives all \ details.", ) .arg( - Arg::with_name("hidden") + Arg::new("hidden") .long("hidden") - .short("H") + .short('H') .overrides_with("hidden") .help("Search hidden files and directories") .long_help( @@ -30,18 +30,18 @@ ), ) .arg( - Arg::with_name("no-hidden") + Arg::new("no-hidden") .long("no-hidden") .overrides_with("hidden") - .hidden(true) + .hide(true) .long_help( "Overrides --hidden.", ), ) .arg( - Arg::with_name("no-ignore") + Arg::new("no-ignore") .long("no-ignore") - .short("I") + .short('I') .overrides_with("no-ignore") .help("Do not respect .(git|fd)ignore files") .long_help( @@ -51,19 +51,19 @@ ), ) .arg( - Arg::with_name("ignore") + Arg::new("ignore") .long("ignore") .overrides_with("no-ignore") - .hidden(true) + .hide(true) .long_help( "Overrides --no-ignore.", ), ) .arg( - Arg::with_name("no-ignore-vcs") + Arg::new("no-ignore-vcs") .long("no-ignore-vcs") .overrides_with("no-ignore-vcs") - .hidden_short_help(true) + .hide_short_help(true) .help("Do not respect .gitignore files") .long_help( "Show search results from files and directories that would otherwise be \ @@ -71,19 +71,19 @@ ), ) .arg( - Arg::with_name("ignore-vcs") + Arg::new("ignore-vcs") .long("ignore-vcs") .overrides_with("no-ignore-vcs") - .hidden(true) + .hide(true) .long_help( "Overrides --no-ignore-vcs.", ), ) .arg( - Arg::with_name("no-ignore-parent") + Arg::new("no-ignore-parent") .long("no-ignore-parent") .overrides_with("no-ignore-parent") - .hidden_short_help(true) + .hide_short_help(true) .help("Do not respect .(git|fd)ignore files in parent directories") .long_help( "Show search results from files and directories that would otherwise be \ @@ -91,19 +91,19 @@ ), ) .arg( - Arg::with_name("no-global-ignore-file") + Arg::new("no-global-ignore-file") .long("no-global-ignore-file") - .hidden(true) + .hide(true) .help("Do not respect the global ignore file") .long_help("Do not respect the global ignore file."), ) .arg( - Arg::with_name("rg-alias-hidden-ignore") - .short("u") + Arg::new("rg-alias-hidden-ignore") + .short('u') .long("unrestricted") .overrides_with_all(&["ignore", "no-hidden"]) - .multiple(true) - .hidden_short_help(true) + .multiple_occurrences(true) + .hide_short_help(true) .help("Alias for '--no-ignore', and '--hidden' when given twice") .long_help( "Alias for '--no-ignore'. Can be repeated. '-uu' is an alias for \ @@ -111,9 +111,9 @@ ), ) .arg( - Arg::with_name("case-sensitive") + Arg::new("case-sensitive") .long("case-sensitive") - .short("s") + .short('s') .overrides_with_all(&["ignore-case", "case-sensitive"]) .help("Case-sensitive search (default: smart case)") .long_help( @@ -123,9 +123,9 @@ ), ) .arg( - Arg::with_name("ignore-case") + Arg::new("ignore-case") .long("ignore-case") - .short("i") + .short('i') .overrides_with_all(&["case-sensitive", "ignore-case"]) .help("Case-insensitive search (default: smart case)") .long_help( @@ -135,19 +135,19 @@ ), ) .arg( - Arg::with_name("glob") + Arg::new("glob") .long("glob") - .short("g") + .short('g') .conflicts_with("fixed-strings") .overrides_with("glob") .help("Glob-based search (default: regular expression)") .long_help("Perform a glob-based search instead of a regular expression search."), ) .arg( - Arg::with_name("regex") + Arg::new("regex") .long("regex") .overrides_with_all(&["glob", "regex"]) - .hidden_short_help(true) + .hide_short_help(true) .help("Regular-expression based search (default)") .long_help( "Perform a regular-expression based search (default). This can be used to \ @@ -155,12 +155,12 @@ ), ) .arg( - Arg::with_name("fixed-strings") + Arg::new("fixed-strings") .long("fixed-strings") - .short("F") + .short('F') .alias("literal") .overrides_with("fixed-strings") - .hidden_short_help(true) + .hide_short_help(true) .help("Treat pattern as literal string instead of regex") .long_help( "Treat the pattern as a literal string instead of a regular expression. Note \ @@ -169,9 +169,9 @@ ), ) .arg( - Arg::with_name("absolute-path") + Arg::new("absolute-path") .long("absolute-path") - .short("a") + .short('a') .overrides_with("absolute-path") .help("Show absolute instead of relative paths") .long_help( @@ -180,18 +180,18 @@ ), ) .arg( - Arg::with_name("relative-path") + Arg::new("relative-path") .long("relative-path") .overrides_with("absolute-path") - .hidden(true) + .hide(true) .long_help( "Overrides --absolute-path.", ), ) .arg( - Arg::with_name("list-details") + Arg::new("list-details") .long("list-details") - .short("l") + .short('l') .conflicts_with("absolute-path") .help("Use a long listing format with file metadata") .long_help( @@ -202,9 +202,9 @@ ), ) .arg( - Arg::with_name("follow") + Arg::new("follow") .long("follow") - .short("L") + .short('L') .alias("dereference") .overrides_with("follow") .help("Follow symbolic links") @@ -215,18 +215,18 @@ ), ) .arg( - Arg::with_name("no-follow") + Arg::new("no-follow") .long("no-follow") .overrides_with("follow") - .hidden(true) + .hide(true) .long_help( "Overrides --follow.", ), ) .arg( - Arg::with_name("full-path") + Arg::new("full-path") .long("full-path") - .short("p") + .short('p') .overrides_with("full-path") .help("Search full abs. path (default: filename only)") .long_help( @@ -237,12 +237,12 @@ ), ) .arg( - Arg::with_name("null_separator") + Arg::new("null_separator") .long("print0") - .short("0") + .short('0') .overrides_with("print0") .conflicts_with("list-details") - .hidden_short_help(true) + .hide_short_help(true) .help("Separate results by the null character") .long_help( "Separate search results by the null character (instead of newlines). \ @@ -250,9 +250,9 @@ ), ) .arg( - Arg::with_name("max-depth") + Arg::new("max-depth") .long("max-depth") - .short("d") + .short('d') .takes_value(true) .value_name("depth") .help("Set maximum search depth (default: none)") @@ -263,18 +263,18 @@ ) // support --maxdepth as well, for compatibility with rg .arg( - Arg::with_name("rg-depth") + Arg::new("rg-depth") .long("maxdepth") - .hidden(true) + .hide(true) .takes_value(true) .help("Set maximum search depth (default: none)") ) .arg( - Arg::with_name("min-depth") + Arg::new("min-depth") .long("min-depth") .takes_value(true) .value_name("depth") - .hidden_short_help(true) + .hide_short_help(true) .help("Only show results starting at given depth") .long_help( "Only show search results starting at the given depth. \ @@ -282,11 +282,11 @@ ), ) .arg( - Arg::with_name("exact-depth") + Arg::new("exact-depth") .long("exact-depth") .takes_value(true) .value_name("depth") - .hidden_short_help(true) + .hide_short_help(true) .conflicts_with_all(&["max-depth", "min-depth"]) .help("Only show results at exact given depth") .long_help( @@ -295,19 +295,19 @@ ), ) .arg( - Arg::with_name("prune") + Arg::new("prune") .long("prune") .conflicts_with_all(&["size", "exact-depth"]) - .hidden_short_help(true) + .hide_short_help(true) .help("Do not traverse into matching directories") .long_help("Do not traverse into directories that match the search criteria. If \ you want to exclude specific directories, use the '--exclude=???' option.") ) .arg( - Arg::with_name("file-type") + Arg::new("file-type") .long("type") - .short("t") - .multiple(true) + .short('t') + .multiple_occurrences(true) .number_of_values(1) .takes_value(true) .value_name("filetype") @@ -366,10 +366,10 @@ ), ) .arg( - Arg::with_name("extension") + Arg::new("extension") .long("extension") - .short("e") - .multiple(true) + .short('e') + .multiple_occurrences(true) .number_of_values(1) .takes_value(true) .value_name("ext") @@ -382,9 +382,9 @@ ), ) .arg( - Arg::with_name("exec") + Arg::new("exec") .long("exec") - .short("x") + .short('x') .min_values(1) .allow_hyphen_values(true) .value_terminator(";") @@ -413,9 +413,9 @@ ), ) .arg( - Arg::with_name("exec-batch") + Arg::new("exec-batch") .long("exec-batch") - .short("X") + .short('X') .min_values(1) .allow_hyphen_values(true) .value_terminator(";") @@ -440,11 +440,11 @@ ), ) .arg( - Arg::with_name("batch-size") + Arg::new("batch-size") .long("batch-size") .takes_value(true) .value_name("size") - .hidden_short_help(true) + .hide_short_help(true) .requires("exec-batch") .help("Max number of arguments to run as a batch with -X") .long_help( @@ -455,13 +455,13 @@ ), ) .arg( - Arg::with_name("exclude") + Arg::new("exclude") .long("exclude") - .short("E") + .short('E') .takes_value(true) .value_name("pattern") .number_of_values(1) - .multiple(true) + .multiple_occurrences(true) .help("Exclude entries that match the given glob pattern") .long_help( "Exclude files/directories that match the given glob pattern. This \ @@ -473,13 +473,13 @@ ), ) .arg( - Arg::with_name("ignore-file") + Arg::new("ignore-file") .long("ignore-file") .takes_value(true) .value_name("path") .number_of_values(1) - .multiple(true) - .hidden_short_help(true) + .multiple_occurrences(true) + .hide_short_help(true) .help("Add custom ignore-file in '.gitignore' format") .long_help( "Add a custom ignore-file in '.gitignore' format. These files have a low \ @@ -487,9 +487,9 @@ ), ) .arg( - Arg::with_name("color") + Arg::new("color") .long("color") - .short("c") + .short('c') .takes_value(true) .value_name("when") .possible_values(&["never", "auto", "always"]) @@ -503,12 +503,12 @@ ), ) .arg( - Arg::with_name("threads") + Arg::new("threads") .long("threads") - .short("j") + .short('j') .takes_value(true) .value_name("num") - .hidden_short_help(true) + .hide_short_help(true) .help("Set number of threads") .long_help( "Set number of threads to use for searching & executing (default: number \ @@ -516,13 +516,13 @@ ), ) .arg( - Arg::with_name("size") + Arg::new("size") .long("size") - .short("S") + .short('S') .takes_value(true) .number_of_values(1) .allow_hyphen_values(true) - .multiple(true) + .multiple_occurrences(true) .help("Limit results based on the size of files") .long_help( "Limit results based on the size of files using the format <+-><NUM><UNIT>.\n \ @@ -544,10 +544,10 @@ ), ) .arg( - Arg::with_name("max-buffer-time") + Arg::new("max-buffer-time") .long("max-buffer-time") .takes_value(true) - .hidden(true) + .hide(true) .help("Milliseconds to buffer before streaming search results to console") .long_help( "Amount of time in milliseconds to buffer, before streaming the search \ @@ -555,7 +555,7 @@ ), ) .arg( - Arg::with_name("changed-within") + Arg::new("changed-within") .long("changed-within") .alias("change-newer-than") .alias("newer") @@ -575,7 +575,7 @@ ), ) .arg( - Arg::with_name("changed-before") + Arg::new("changed-before") .long("changed-before") .alias("change-older-than") .alias("older") @@ -594,7 +594,7 @@ ), ) .arg( - Arg::with_name("max-results") + Arg::new("max-results") .long("max-results") .takes_value(true) .value_name("count") @@ -604,14 +604,14 @@ // same search with `--exec rm` attached and get a reliable removal of // the files they saw in the previous search. .conflicts_with_all(&["exec", "exec-batch", "list-details"]) - .hidden_short_help(true) + .hide_short_help(true) .help("Limit number of search results") .long_help("Limit the number of search results to 'count' and quit immediately."), ) .arg( - Arg::with_name("max-one-result") - .short("1") - .hidden_short_help(true) + Arg::new("max-one-result") + .short('1') + .hide_short_help(true) .overrides_with("max-results") .conflicts_with_all(&["exec", "exec-batch", "list-details"]) .help("Limit search to a single result") @@ -619,11 +619,11 @@ This is an alias for '--max-results=1'.") ) .arg( - Arg::with_name("quiet") + Arg::new("quiet") .long("quiet") - .short("q") + .short('q') .alias("has-results") - .hidden_short_help(true) + .hide_short_help(true) .conflicts_with_all(&["exec", "exec-batch", "list-details", "max-results"]) .help("Print nothing, exit code 0 if match found, 1 otherwise") .long_help( @@ -634,9 +634,9 @@ ) ) .arg( - Arg::with_name("show-errors") + Arg::new("show-errors") .long("show-errors") - .hidden_short_help(true) + .hide_short_help(true) .overrides_with("show-errors") .help("Show filesystem errors") .long_help( @@ -645,12 +645,13 @@ ), ) .arg( - Arg::with_name("base-directory") + Arg::new("base-directory") .long("base-directory") .takes_value(true) .value_name("path") .number_of_values(1) - .hidden_short_help(true) + .allow_invalid_utf8(true) + .hide_short_help(true) .help("Change current working directory") .long_help( "Change the current working directory of fd to the provided path. This \ @@ -661,7 +662,9 @@ ), ) .arg( - Arg::with_name("pattern").help( + Arg::new("pattern") + .allow_invalid_utf8(true) + .help( "the search pattern (a regular expression, unless '--glob' is used; optional)", ).long_help( "the search pattern which is either a regular expression (default) or a glob \ @@ -670,11 +673,11 @@ pass '--' first, or it will be considered as a flag (fd -- '-foo').") ) .arg( - Arg::with_name("path-separator") + Arg::new("path-separator") .takes_value(true) .value_name("separator") .long("path-separator") - .hidden_short_help(true) + .hide_short_help(true) .help("Set path separator when printing file paths") .long_help( "Set the path separator to use when printing file paths. The default is \ @@ -682,8 +685,9 @@ ), ) .arg( - Arg::with_name("path") - .multiple(true) + Arg::new("path") + .multiple_occurrences(true) + .allow_invalid_utf8(true) .help("the root directory for the filesystem search (optional)") .long_help( "The directory where the filesystem search is rooted (optional). If \ @@ -691,25 +695,26 @@ ), ) .arg( - Arg::with_name("search-path") + Arg::new("search-path") .long("search-path") .takes_value(true) .conflicts_with("path") - .multiple(true) - .hidden_short_help(true) + .multiple_occurrences(true) + .hide_short_help(true) .number_of_values(1) + .allow_invalid_utf8(true) .help("Provide paths to search as an alternative to the positional <path>") .long_help( "Provide paths to search as an alternative to the positional <path> \ - argument. Changes the usage to `fd [FLAGS/OPTIONS] --search-path <path> \ + argument. Changes the usage to `fd [OPTIONS] --search-path <path> \ --search-path <path2> [<pattern>]`", ), ) .arg( - Arg::with_name("strip-cwd-prefix") + Arg::new("strip-cwd-prefix") .long("strip-cwd-prefix") .conflicts_with_all(&["path", "search-path"]) - .hidden_short_help(true) + .hide_short_help(true) .help("strip './' prefix from non-tty outputs") .long_help( "By default, relative paths are prefixed with './' when the output goes to a non \ @@ -719,9 +724,9 @@ if cfg!(unix) { app = app.arg( - Arg::with_name("owner") + Arg::new("owner") .long("owner") - .short("o") + .short('o') .takes_value(true) .value_name("user:group") .help("Filter by owning user and/or group") @@ -742,10 +747,10 @@ // Provide aliases `mount` and `xdev` for people coming from `find`. if cfg!(any(unix, windows)) { app = app.arg( - Arg::with_name("one-file-system") + Arg::new("one-file-system") .long("one-file-system") .aliases(&["mount", "xdev"]) - .hidden_short_help(true) + .hide_short_help(true) .help("Do not descend into a different file system") .long_help( "By default, fd will traverse the file system tree as far as other options \ @@ -758,3 +763,8 @@ app } + +#[test] +fn verify_app() { + build_app().debug_assert() +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/tests/testenv/mod.rs new/fd-8.3.2/tests/testenv/mod.rs --- old/fd-8.3.1/tests/testenv/mod.rs 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/tests/testenv/mod.rs 2022-01-29 16:53:13.000000000 +0100 @@ -130,6 +130,17 @@ lines.join("\n") } +/// Trim whitespace from the beginning of each line. +fn trim_lines(s: &str) -> String { + s.lines() + .map(|line| line.trim_start()) + .fold(String::new(), |mut str, line| { + str.push_str(line); + str.push('\n'); + str + }) +} + impl TestEnv { pub fn new(directories: &[&'static str], files: &[&'static str]) -> TestEnv { let temp_dir = create_working_directory(directories, files).expect("working directory"); @@ -203,6 +214,19 @@ output } + pub fn assert_success_and_get_normalized_output<P: AsRef<Path>>( + &self, + path: P, + args: &[&str], + ) -> String { + let output = self.assert_success_and_get_output(path, args); + normalize_output( + &String::from_utf8_lossy(&output.stdout), + false, + self.normalize_line, + ) + } + /// Assert that calling *fd* with the specified arguments produces the expected output. pub fn assert_output(&self, args: &[&str], expected: &str) { self.assert_output_subdirectory(".", args, expected) @@ -224,15 +248,9 @@ args: &[&str], expected: &str, ) { - let output = self.assert_success_and_get_output(path, args); - // Normalize both expected and actual output. let expected = normalize_output(expected, true, self.normalize_line); - let actual = normalize_output( - &String::from_utf8_lossy(&output.stdout), - false, - self.normalize_line, - ); + let actual = self.assert_success_and_get_normalized_output(path, args); // Compare actual output to expected output. if expected != actual { @@ -280,12 +298,8 @@ if let Some(expected) = expected { // Normalize both expected and actual output. - let expected_error = normalize_output(expected, true, self.normalize_line); - let actual_err = normalize_output( - &String::from_utf8_lossy(&output.stderr), - false, - self.normalize_line, - ); + let expected_error = trim_lines(expected); + let actual_err = trim_lines(&String::from_utf8_lossy(&output.stderr)); // Compare actual output to expected output. if !actual_err.trim_start().starts_with(&expected_error) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fd-8.3.1/tests/tests.rs new/fd-8.3.2/tests/tests.rs --- old/fd-8.3.1/tests/tests.rs 2022-01-06 14:20:02.000000000 +0100 +++ new/fd-8.3.2/tests/tests.rs 2022-01-29 16:53:13.000000000 +0100 @@ -1420,12 +1420,12 @@ te.assert_failure_with_error( &["foo", "--exec-batch", "echo", "{/}", ";", "-x", "echo"], - "error: The argument '--exec <cmd>' cannot be used with '--exec-batch <cmd>'", + "error: The argument '--exec-batch <cmd>...' cannot be used with '--exec <cmd>...'", ); te.assert_failure_with_error( &["foo", "--exec-batch"], - "error: The argument '--exec-batch <cmd>' requires a value but none was supplied", + "error: The argument '--exec-batch <cmd>...' requires a value but none was supplied", ); te.assert_failure_with_error( @@ -1970,8 +1970,8 @@ let mut flags = vec![flag]; flags.extend_from_slice(opposing_flags); - let out_no_flags = te.assert_success_and_get_output(".", &[]); - let out_opposing_flags = te.assert_success_and_get_output(".", &flags); + let out_no_flags = te.assert_success_and_get_normalized_output(".", &[]); + let out_opposing_flags = te.assert_success_and_get_normalized_output(".", &flags); assert_eq!( out_no_flags, ++++++ fd.obsinfo ++++++ name: fd version: 8.3.2 mtime: 1643471593 commit: 9f5ed8534e824b3e2a0934ff3aa0b781cb370688 ++++++ vendor.tar.xz ++++++ /work/SRC/openSUSE:Factory/fd/vendor.tar.xz /work/SRC/openSUSE:Factory/.fd.new.1898/vendor.tar.xz differ: char 13, line 1
