mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-29 12:07:46 +00:00
Merge branch 'uutils:main' into stat-fails-to-read-a-file-redirected-to-stdin
This commit is contained in:
commit
6b85579498
237 changed files with 1632 additions and 992 deletions
8
.github/workflows/CICD.yml
vendored
8
.github/workflows/CICD.yml
vendored
|
@ -638,7 +638,7 @@ jobs:
|
|||
# target-specific options
|
||||
# * CARGO_FEATURES_OPTION
|
||||
CARGO_FEATURES_OPTION='' ;
|
||||
if [ -n "${{ matrix.job.features }}" ]; then CARGO_FEATURES_OPTION='--features "${{ matrix.job.features }}"' ; fi
|
||||
if [ -n "${{ matrix.job.features }}" ]; then CARGO_FEATURES_OPTION='--features=${{ matrix.job.features }}' ; fi
|
||||
outputs CARGO_FEATURES_OPTION
|
||||
# * CARGO_USE_CROSS (truthy)
|
||||
CARGO_USE_CROSS='true' ; case '${{ matrix.job.use-cross }}' in ''|0|f|false|n|no) unset CARGO_USE_CROSS ;; esac;
|
||||
|
@ -705,7 +705,7 @@ jobs:
|
|||
## Dependent VARs setup
|
||||
outputs() { step_id="dep_vars"; for var in "$@" ; do echo steps.${step_id}.outputs.${var}="${!var}"; echo ::set-output name=${var}::${!var}; done; }
|
||||
# * determine sub-crate utility list
|
||||
UTILITY_LIST="$(./util/show-utils.sh ${CARGO_FEATURES_OPTION})"
|
||||
UTILITY_LIST="$(./util/show-utils.sh ${{ steps.vars.outputs.CARGO_FEATURES_OPTION }})"
|
||||
echo UTILITY_LIST=${UTILITY_LIST}
|
||||
CARGO_UTILITY_LIST_OPTIONS="$(for u in ${UTILITY_LIST}; do echo "-puu_${u}"; done;)"
|
||||
outputs CARGO_UTILITY_LIST_OPTIONS
|
||||
|
@ -948,7 +948,7 @@ jobs:
|
|||
# target-specific options
|
||||
# * CARGO_FEATURES_OPTION
|
||||
CARGO_FEATURES_OPTION='--all-features' ; ## default to '--all-features' for code coverage
|
||||
if [ -n "${{ matrix.job.features }}" ]; then CARGO_FEATURES_OPTION='--features "${{ matrix.job.features }}"' ; fi
|
||||
if [ -n "${{ matrix.job.features }}" ]; then CARGO_FEATURES_OPTION='--features=${{ matrix.job.features }}' ; fi
|
||||
outputs CARGO_FEATURES_OPTION
|
||||
# * CODECOV_FLAGS
|
||||
CODECOV_FLAGS=$( echo "${{ matrix.job.os }}" | sed 's/[^[:alnum:]]/_/g' )
|
||||
|
@ -988,7 +988,7 @@ jobs:
|
|||
## Dependent VARs setup
|
||||
outputs() { step_id="dep_vars"; for var in "$@" ; do echo steps.${step_id}.outputs.${var}="${!var}"; echo ::set-output name=${var}::${!var}; done; }
|
||||
# * determine sub-crate utility list
|
||||
UTILITY_LIST="$(./util/show-utils.sh ${CARGO_FEATURES_OPTION})"
|
||||
UTILITY_LIST="$(./util/show-utils.sh ${{ steps.vars.outputs.CARGO_FEATURES_OPTION }})"
|
||||
CARGO_UTILITY_LIST_OPTIONS="$(for u in ${UTILITY_LIST}; do echo "-puu_${u}"; done;)"
|
||||
outputs CARGO_UTILITY_LIST_OPTIONS
|
||||
- name: Test uucore
|
||||
|
|
|
@ -48,6 +48,7 @@ EditorConfig
|
|||
FreeBSD
|
||||
Gmail
|
||||
GNU
|
||||
Illumos
|
||||
Irix
|
||||
MS-DOS
|
||||
MSDOS
|
||||
|
|
228
Cargo.lock
generated
228
Cargo.lock
generated
|
@ -280,9 +280,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "3.0.10"
|
||||
version = "3.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a30c3bf9ff12dfe5dae53f0a96e0febcd18420d1c0e7fad77796d9d5c4b5375"
|
||||
checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"bitflags",
|
||||
|
@ -292,7 +292,7 @@ dependencies = [
|
|||
"strsim 0.10.0",
|
||||
"termcolor",
|
||||
"terminal_size",
|
||||
"textwrap 0.14.2",
|
||||
"textwrap 0.15.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -301,7 +301,7 @@ version = "3.0.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d044e9db8cd0f68191becdeb5246b7462e4cf0c069b19ae00d1bf3fa9889498d"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -331,7 +331,7 @@ version = "0.0.12"
|
|||
dependencies = [
|
||||
"atty",
|
||||
"chrono",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"clap_complete",
|
||||
"conv",
|
||||
"filetime",
|
||||
|
@ -349,7 +349,7 @@ dependencies = [
|
|||
"selinux",
|
||||
"sha1",
|
||||
"tempfile",
|
||||
"textwrap 0.14.2",
|
||||
"textwrap 0.15.0",
|
||||
"time",
|
||||
"unindent",
|
||||
"unix_socket",
|
||||
|
@ -1065,9 +1065,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.113"
|
||||
version = "0.2.121"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eef78b64d87775463c549fbd80e19249ef436ea3bf1de2a1eb7e717ec7fab1e9"
|
||||
checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
|
@ -1375,9 +1375,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ouroboros"
|
||||
version = "0.14.2"
|
||||
version = "0.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "71643f290d126e18ac2598876d01e1d57aed164afc78fdb6e2a0c6589a1f6662"
|
||||
checksum = "9f31a3b678685b150cba82b702dcdc5e155893f63610cf388d30cd988d4ca2bf"
|
||||
dependencies = [
|
||||
"aliasable",
|
||||
"ouroboros_macro",
|
||||
|
@ -1386,9 +1386,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ouroboros_macro"
|
||||
version = "0.14.2"
|
||||
version = "0.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed9a247206016d424fe8497bc611e510887af5c261fbbf977877c4bb55ca4d82"
|
||||
checksum = "084fd65d5dd8b3772edccb5ffd1e4b7eba43897ecd0f9401e330e8c542959408"
|
||||
dependencies = [
|
||||
"Inflector",
|
||||
"proc-macro-error",
|
||||
|
@ -2087,9 +2087,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "textwrap"
|
||||
version = "0.14.2"
|
||||
version = "0.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80"
|
||||
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
|
||||
dependencies = [
|
||||
"smawk",
|
||||
"terminal_size",
|
||||
|
@ -2282,7 +2282,7 @@ checksum = "7cf7d77f457ef8dfa11e4cd5933c5ddb5dc52a94664071951219a97710f0a32b"
|
|||
name = "uu_arch"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"platform-info",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2291,7 +2291,7 @@ dependencies = [
|
|||
name = "uu_base32"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2307,7 +2307,7 @@ dependencies = [
|
|||
name = "uu_basename"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2315,7 +2315,7 @@ dependencies = [
|
|||
name = "uu_basenc"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uu_base32",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2325,7 +2325,7 @@ name = "uu_cat"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"nix 0.23.1",
|
||||
"thiserror",
|
||||
"unix_socket",
|
||||
|
@ -2336,7 +2336,7 @@ dependencies = [
|
|||
name = "uu_chcon"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"fts-sys",
|
||||
"libc",
|
||||
"selinux",
|
||||
|
@ -2348,7 +2348,7 @@ dependencies = [
|
|||
name = "uu_chgrp"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2356,7 +2356,7 @@ dependencies = [
|
|||
name = "uu_chmod"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2365,7 +2365,7 @@ dependencies = [
|
|||
name = "uu_chown"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2373,7 +2373,7 @@ dependencies = [
|
|||
name = "uu_chroot"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2381,7 +2381,7 @@ dependencies = [
|
|||
name = "uu_cksum"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2389,7 +2389,7 @@ dependencies = [
|
|||
name = "uu_comm"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2397,7 +2397,7 @@ dependencies = [
|
|||
name = "uu_cp"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"exacl",
|
||||
"filetime",
|
||||
"ioctl-sys",
|
||||
|
@ -2414,7 +2414,7 @@ dependencies = [
|
|||
name = "uu_csplit"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"regex",
|
||||
"thiserror",
|
||||
"uucore",
|
||||
|
@ -2426,7 +2426,7 @@ version = "0.0.12"
|
|||
dependencies = [
|
||||
"atty",
|
||||
"bstr",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"memchr 2.4.1",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2436,7 +2436,7 @@ name = "uu_date"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
"winapi 0.3.9",
|
||||
|
@ -2447,7 +2447,7 @@ name = "uu_dd"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"byte-unit",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"gcd",
|
||||
"libc",
|
||||
"signal-hook",
|
||||
|
@ -2458,7 +2458,7 @@ dependencies = [
|
|||
name = "uu_df"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"number_prefix",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2467,7 +2467,7 @@ dependencies = [
|
|||
name = "uu_dircolors"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"glob",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2476,7 +2476,7 @@ dependencies = [
|
|||
name = "uu_dirname"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2485,7 +2485,7 @@ name = "uu_du"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
@ -2494,7 +2494,7 @@ dependencies = [
|
|||
name = "uu_echo"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2502,7 +2502,7 @@ dependencies = [
|
|||
name = "uu_env"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"rust-ini",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2511,7 +2511,7 @@ dependencies = [
|
|||
name = "uu_expand"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"unicode-width",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2520,7 +2520,7 @@ dependencies = [
|
|||
name = "uu_expr"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"num-bigint",
|
||||
"num-traits",
|
||||
"onig",
|
||||
|
@ -2531,7 +2531,7 @@ dependencies = [
|
|||
name = "uu_factor"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"coz",
|
||||
"num-traits",
|
||||
"paste",
|
||||
|
@ -2545,7 +2545,7 @@ dependencies = [
|
|||
name = "uu_false"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2553,7 +2553,7 @@ dependencies = [
|
|||
name = "uu_fmt"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"unicode-width",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2562,7 +2562,7 @@ dependencies = [
|
|||
name = "uu_fold"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2570,7 +2570,7 @@ dependencies = [
|
|||
name = "uu_groups"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2580,7 +2580,7 @@ version = "0.0.12"
|
|||
dependencies = [
|
||||
"blake2b_simd",
|
||||
"blake3",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"digest",
|
||||
"hex",
|
||||
"md-5",
|
||||
|
@ -2596,7 +2596,7 @@ dependencies = [
|
|||
name = "uu_head"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"memchr 2.4.1",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2605,7 +2605,7 @@ dependencies = [
|
|||
name = "uu_hostid"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2614,7 +2614,7 @@ dependencies = [
|
|||
name = "uu_hostname"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"hostname",
|
||||
"uucore",
|
||||
"winapi 0.3.9",
|
||||
|
@ -2624,7 +2624,7 @@ dependencies = [
|
|||
name = "uu_id"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"selinux",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2633,7 +2633,7 @@ dependencies = [
|
|||
name = "uu_install"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"file_diff",
|
||||
"filetime",
|
||||
"libc",
|
||||
|
@ -2644,7 +2644,7 @@ dependencies = [
|
|||
name = "uu_join"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"memchr 2.4.1",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2653,7 +2653,7 @@ dependencies = [
|
|||
name = "uu_kill"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2662,7 +2662,7 @@ dependencies = [
|
|||
name = "uu_link"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2670,7 +2670,7 @@ dependencies = [
|
|||
name = "uu_ln"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2678,7 +2678,7 @@ dependencies = [
|
|||
name = "uu_logname"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2689,7 +2689,7 @@ version = "0.0.12"
|
|||
dependencies = [
|
||||
"atty",
|
||||
"chrono",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"glob",
|
||||
"lazy_static",
|
||||
"lscolors",
|
||||
|
@ -2706,7 +2706,7 @@ dependencies = [
|
|||
name = "uu_mkdir"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2714,7 +2714,7 @@ dependencies = [
|
|||
name = "uu_mkfifo"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2723,7 +2723,7 @@ dependencies = [
|
|||
name = "uu_mknod"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2732,7 +2732,7 @@ dependencies = [
|
|||
name = "uu_mktemp"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"rand",
|
||||
"tempfile",
|
||||
"uucore",
|
||||
|
@ -2743,7 +2743,7 @@ name = "uu_more"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"crossterm",
|
||||
"nix 0.23.1",
|
||||
"unicode-segmentation",
|
||||
|
@ -2755,7 +2755,7 @@ dependencies = [
|
|||
name = "uu_mv"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"fs_extra",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2764,7 +2764,7 @@ dependencies = [
|
|||
name = "uu_nice"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"nix 0.23.1",
|
||||
"uucore",
|
||||
|
@ -2774,7 +2774,7 @@ dependencies = [
|
|||
name = "uu_nl"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"regex",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2784,7 +2784,7 @@ name = "uu_nohup"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2793,7 +2793,7 @@ dependencies = [
|
|||
name = "uu_nproc"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"num_cpus",
|
||||
"uucore",
|
||||
|
@ -2803,7 +2803,7 @@ dependencies = [
|
|||
name = "uu_numfmt"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2812,7 +2812,7 @@ name = "uu_od"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"half",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2821,7 +2821,7 @@ dependencies = [
|
|||
name = "uu_paste"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2829,7 +2829,7 @@ dependencies = [
|
|||
name = "uu_pathchk"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2838,7 +2838,7 @@ dependencies = [
|
|||
name = "uu_pinky"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2847,7 +2847,7 @@ name = "uu_pr"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"itertools",
|
||||
"quick-error",
|
||||
"regex",
|
||||
|
@ -2858,7 +2858,7 @@ dependencies = [
|
|||
name = "uu_printenv"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2866,7 +2866,7 @@ dependencies = [
|
|||
name = "uu_printf"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2874,7 +2874,7 @@ dependencies = [
|
|||
name = "uu_ptx"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"regex",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2883,7 +2883,7 @@ dependencies = [
|
|||
name = "uu_pwd"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2891,7 +2891,7 @@ dependencies = [
|
|||
name = "uu_readlink"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2899,7 +2899,7 @@ dependencies = [
|
|||
name = "uu_realpath"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2907,7 +2907,7 @@ dependencies = [
|
|||
name = "uu_relpath"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2915,7 +2915,7 @@ dependencies = [
|
|||
name = "uu_rm"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"remove_dir_all",
|
||||
"uucore",
|
||||
"walkdir",
|
||||
|
@ -2926,7 +2926,7 @@ dependencies = [
|
|||
name = "uu_rmdir"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2935,7 +2935,7 @@ dependencies = [
|
|||
name = "uu_runcon"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"selinux",
|
||||
"thiserror",
|
||||
|
@ -2947,7 +2947,7 @@ name = "uu_seq"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"bigdecimal",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"num-bigint",
|
||||
"num-traits",
|
||||
"uucore",
|
||||
|
@ -2957,7 +2957,7 @@ dependencies = [
|
|||
name = "uu_shred"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"rand",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -2966,7 +2966,7 @@ dependencies = [
|
|||
name = "uu_shuf"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"rand",
|
||||
"rand_core",
|
||||
"uucore",
|
||||
|
@ -2976,7 +2976,7 @@ dependencies = [
|
|||
name = "uu_sleep"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -2985,7 +2985,7 @@ name = "uu_sort"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"binary-heap-plus",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"compare",
|
||||
"ctrlc",
|
||||
"fnv",
|
||||
|
@ -3003,7 +3003,7 @@ dependencies = [
|
|||
name = "uu_split"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"memchr 2.4.1",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -3012,7 +3012,7 @@ dependencies = [
|
|||
name = "uu_stat"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3020,7 +3020,7 @@ dependencies = [
|
|||
name = "uu_stdbuf"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"tempfile",
|
||||
"uu_stdbuf_libstdbuf",
|
||||
"uucore",
|
||||
|
@ -3040,7 +3040,7 @@ dependencies = [
|
|||
name = "uu_sum"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3048,7 +3048,7 @@ dependencies = [
|
|||
name = "uu_sync"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
"winapi 0.3.9",
|
||||
|
@ -3058,7 +3058,7 @@ dependencies = [
|
|||
name = "uu_tac"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"memchr 2.4.1",
|
||||
"memmap2",
|
||||
"regex",
|
||||
|
@ -3069,7 +3069,7 @@ dependencies = [
|
|||
name = "uu_tail"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"nix 0.23.1",
|
||||
"uucore",
|
||||
|
@ -3080,7 +3080,7 @@ dependencies = [
|
|||
name = "uu_tee"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"retain_mut",
|
||||
"uucore",
|
||||
|
@ -3090,7 +3090,7 @@ dependencies = [
|
|||
name = "uu_test"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"uucore",
|
||||
|
@ -3100,7 +3100,7 @@ dependencies = [
|
|||
name = "uu_timeout"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"nix 0.23.1",
|
||||
"uucore",
|
||||
|
@ -3110,7 +3110,7 @@ dependencies = [
|
|||
name = "uu_touch"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"filetime",
|
||||
"time",
|
||||
"uucore",
|
||||
|
@ -3121,7 +3121,7 @@ dependencies = [
|
|||
name = "uu_tr"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"nom",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -3130,7 +3130,7 @@ dependencies = [
|
|||
name = "uu_true"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3138,7 +3138,7 @@ dependencies = [
|
|||
name = "uu_truncate"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3146,7 +3146,7 @@ dependencies = [
|
|||
name = "uu_tsort"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3155,7 +3155,7 @@ name = "uu_tty"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -3164,7 +3164,7 @@ dependencies = [
|
|||
name = "uu_uname"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"platform-info",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -3173,7 +3173,7 @@ dependencies = [
|
|||
name = "uu_unexpand"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"unicode-width",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -3182,7 +3182,7 @@ dependencies = [
|
|||
name = "uu_uniq"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"strum",
|
||||
"strum_macros",
|
||||
"uucore",
|
||||
|
@ -3192,7 +3192,7 @@ dependencies = [
|
|||
name = "uu_unlink"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3201,7 +3201,7 @@ name = "uu_uptime"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3209,7 +3209,7 @@ dependencies = [
|
|||
name = "uu_users"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3218,7 +3218,7 @@ name = "uu_wc"
|
|||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"bytecount",
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"nix 0.23.1",
|
||||
"unicode-width",
|
||||
|
@ -3230,7 +3230,7 @@ dependencies = [
|
|||
name = "uu_who"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
|
@ -3238,7 +3238,7 @@ dependencies = [
|
|||
name = "uu_whoami"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"libc",
|
||||
"uucore",
|
||||
"winapi 0.3.9",
|
||||
|
@ -3248,7 +3248,7 @@ dependencies = [
|
|||
name = "uu_yes"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"nix 0.23.1",
|
||||
"uucore",
|
||||
]
|
||||
|
@ -3257,7 +3257,7 @@ dependencies = [
|
|||
name = "uucore"
|
||||
version = "0.0.12"
|
||||
dependencies = [
|
||||
"clap 3.0.10",
|
||||
"clap 3.1.6",
|
||||
"data-encoding",
|
||||
"data-encoding-macro",
|
||||
"dns-lookup",
|
||||
|
|
|
@ -245,11 +245,11 @@ test = [ "uu_test" ]
|
|||
[workspace]
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
clap_complete = "3.0"
|
||||
phf = "0.10.1"
|
||||
lazy_static = { version="1.3" }
|
||||
textwrap = { version="0.14", features=["terminal_size"] }
|
||||
textwrap = { version="0.15", features=["terminal_size"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="src/uucore" }
|
||||
selinux = { version="0.2", optional = true }
|
||||
ureq = "2.4.0"
|
||||
|
|
2
build.rs
2
build.rs
|
@ -43,7 +43,7 @@ pub fn main() {
|
|||
let mut tf = File::create(Path::new(&out_dir).join("test_modules.rs")).unwrap();
|
||||
|
||||
mf.write_all(
|
||||
"type UtilityMap<T> = phf::Map<&'static str, (fn(T) -> i32, fn() -> App<'static>)>;\n\
|
||||
"type UtilityMap<T> = phf::Map<&'static str, (fn(T) -> i32, fn() -> Command<'static>)>;\n\
|
||||
\n\
|
||||
fn util_map<T: uucore::Args>() -> UtilityMap<T> {\n"
|
||||
.as_bytes(),
|
||||
|
|
|
@ -40,6 +40,8 @@ TARGETS = [
|
|||
"x86_64-linux-android",
|
||||
# Solaris
|
||||
"x86_64-sun-solaris",
|
||||
# Illumos
|
||||
"x86_64-unknown-illumos",
|
||||
# WASM
|
||||
"wasm32-wasi",
|
||||
# Redox
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
|
||||
use clap::{App, Arg};
|
||||
use clap::{Arg, Command};
|
||||
use clap_complete::Shell;
|
||||
use std::cmp;
|
||||
use std::ffi::OsStr;
|
||||
|
@ -138,7 +138,7 @@ fn gen_completions<T: uucore::Args>(
|
|||
.chain(util_map.keys().copied())
|
||||
.collect();
|
||||
|
||||
let matches = App::new("completion")
|
||||
let matches = Command::new("completion")
|
||||
.about("Prints completions to stdout")
|
||||
.arg(
|
||||
Arg::new("utility")
|
||||
|
@ -155,7 +155,7 @@ fn gen_completions<T: uucore::Args>(
|
|||
let utility = matches.value_of("utility").unwrap();
|
||||
let shell = matches.value_of("shell").unwrap();
|
||||
|
||||
let mut app = if utility == "coreutils" {
|
||||
let mut command = if utility == "coreutils" {
|
||||
gen_coreutils_app(util_map)
|
||||
} else {
|
||||
util_map.get(utility).unwrap().1()
|
||||
|
@ -163,15 +163,15 @@ fn gen_completions<T: uucore::Args>(
|
|||
let shell: Shell = shell.parse().unwrap();
|
||||
let bin_name = std::env::var("PROG_PREFIX").unwrap_or_default() + utility;
|
||||
|
||||
clap_complete::generate(shell, &mut app, bin_name, &mut io::stdout());
|
||||
clap_complete::generate(shell, &mut command, bin_name, &mut io::stdout());
|
||||
io::stdout().flush().unwrap();
|
||||
process::exit(0);
|
||||
}
|
||||
|
||||
fn gen_coreutils_app<T: uucore::Args>(util_map: &UtilityMap<T>) -> App<'static> {
|
||||
let mut app = App::new("coreutils");
|
||||
fn gen_coreutils_app<T: uucore::Args>(util_map: &UtilityMap<T>) -> Command<'static> {
|
||||
let mut command = Command::new("coreutils");
|
||||
for (_, (_, sub_app)) in util_map {
|
||||
app = app.subcommand(sub_app());
|
||||
command = command.subcommand(sub_app());
|
||||
}
|
||||
app
|
||||
command
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// file that was distributed with this source code.
|
||||
// spell-checker:ignore tldr
|
||||
|
||||
use clap::App;
|
||||
use clap::Command;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::File;
|
||||
use std::io::Cursor;
|
||||
|
@ -46,13 +46,13 @@ fn main() -> io::Result<()> {
|
|||
|
||||
let mut utils = utils.entries().collect::<Vec<_>>();
|
||||
utils.sort();
|
||||
for (&name, (_, app)) in utils {
|
||||
for (&name, (_, command)) in utils {
|
||||
if name == "[" {
|
||||
continue;
|
||||
}
|
||||
let p = format!("docs/src/utils/{}.md", name);
|
||||
if let Ok(f) = File::create(&p) {
|
||||
write_markdown(f, &mut app(), name, &mut tldr_zip)?;
|
||||
write_markdown(f, &mut command(), name, &mut tldr_zip)?;
|
||||
println!("Wrote to '{}'", p);
|
||||
} else {
|
||||
println!("Error writing to {}", p);
|
||||
|
@ -64,29 +64,29 @@ fn main() -> io::Result<()> {
|
|||
|
||||
fn write_markdown(
|
||||
mut w: impl Write,
|
||||
app: &mut App,
|
||||
command: &mut Command,
|
||||
name: &str,
|
||||
tldr_zip: &mut zip::ZipArchive<impl Read + Seek>,
|
||||
) -> io::Result<()> {
|
||||
write!(w, "# {}\n\n", name)?;
|
||||
write_version(&mut w, app)?;
|
||||
write_usage(&mut w, app, name)?;
|
||||
write_description(&mut w, app)?;
|
||||
write_options(&mut w, app)?;
|
||||
write_version(&mut w, command)?;
|
||||
write_usage(&mut w, command, name)?;
|
||||
write_description(&mut w, command)?;
|
||||
write_options(&mut w, command)?;
|
||||
write_examples(&mut w, name, tldr_zip)
|
||||
}
|
||||
|
||||
fn write_version(w: &mut impl Write, app: &App) -> io::Result<()> {
|
||||
fn write_version(w: &mut impl Write, command: &Command) -> io::Result<()> {
|
||||
writeln!(
|
||||
w,
|
||||
"<div class=\"version\">version: {}</div>",
|
||||
app.render_version().split_once(' ').unwrap().1
|
||||
command.render_version().split_once(' ').unwrap().1
|
||||
)
|
||||
}
|
||||
|
||||
fn write_usage(w: &mut impl Write, app: &mut App, name: &str) -> io::Result<()> {
|
||||
fn write_usage(w: &mut impl Write, command: &mut Command, name: &str) -> io::Result<()> {
|
||||
writeln!(w, "\n```")?;
|
||||
let mut usage: String = app
|
||||
let mut usage: String = command
|
||||
.render_usage()
|
||||
.lines()
|
||||
.skip(1)
|
||||
|
@ -99,8 +99,8 @@ fn write_usage(w: &mut impl Write, app: &mut App, name: &str) -> io::Result<()>
|
|||
writeln!(w, "```")
|
||||
}
|
||||
|
||||
fn write_description(w: &mut impl Write, app: &App) -> io::Result<()> {
|
||||
if let Some(about) = app.get_long_about().or_else(|| app.get_about()) {
|
||||
fn write_description(w: &mut impl Write, command: &Command) -> io::Result<()> {
|
||||
if let Some(about) = command.get_long_about().or_else(|| command.get_about()) {
|
||||
writeln!(w, "{}", about)
|
||||
} else {
|
||||
Ok(())
|
||||
|
@ -152,10 +152,10 @@ fn get_zip_content(archive: &mut ZipArchive<impl Read + Seek>, name: &str) -> Op
|
|||
Some(s)
|
||||
}
|
||||
|
||||
fn write_options(w: &mut impl Write, app: &App) -> io::Result<()> {
|
||||
fn write_options(w: &mut impl Write, command: &Command) -> io::Result<()> {
|
||||
writeln!(w, "<h2>Options</h2>")?;
|
||||
write!(w, "<dl>")?;
|
||||
for arg in app.get_arguments() {
|
||||
for arg in command.get_arguments() {
|
||||
write!(w, "<dt>")?;
|
||||
let mut first = true;
|
||||
for l in arg.get_long_and_visible_aliases().unwrap_or_default() {
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/arch.rs"
|
|||
|
||||
[dependencies]
|
||||
platform-info = "0.2"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
use platform_info::*;
|
||||
|
||||
use clap::{crate_version, App, AppSettings};
|
||||
use clap::{crate_version, Command};
|
||||
use uucore::error::{FromIo, UResult};
|
||||
|
||||
static ABOUT: &str = "Display machine architecture";
|
||||
|
@ -23,10 +23,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.after_help(SUMMARY)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/base32.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features = ["encoding"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
use std::io::{stdin, Read};
|
||||
|
||||
use clap::App;
|
||||
use clap::Command;
|
||||
use uucore::{encoding::Format, error::UResult};
|
||||
|
||||
pub mod base_common;
|
||||
|
@ -44,6 +44,6 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
base_common::base_app(ABOUT, USAGE)
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ use std::fs::File;
|
|||
use std::io::{BufReader, Stdin};
|
||||
use std::path::Path;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
|
||||
pub static BASE_CMD_PARSE_ERROR: i32 = 1;
|
||||
|
||||
|
@ -86,19 +86,19 @@ impl Config {
|
|||
}
|
||||
|
||||
pub fn parse_base_cmd_args(args: impl uucore::Args, about: &str, usage: &str) -> UResult<Config> {
|
||||
let app = base_app(about, usage);
|
||||
let command = base_app(about, usage);
|
||||
let arg_list = args
|
||||
.collect_str(InvalidEncodingHandling::ConvertLossy)
|
||||
.accept_any();
|
||||
Config::from(&app.get_matches_from(arg_list))
|
||||
Config::from(&command.get_matches_from(arg_list))
|
||||
}
|
||||
|
||||
pub fn base_app<'a>(about: &'a str, usage: &'a str) -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn base_app<'a>(about: &'a str, usage: &'a str) -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(about)
|
||||
.override_usage(format_usage(usage))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
// Format arguments.
|
||||
.arg(
|
||||
Arg::new(options::DECODE)
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/basename.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
// spell-checker:ignore (ToDO) fullname
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::path::{is_separator, PathBuf};
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{UResult, UUsageError};
|
||||
|
@ -87,12 +87,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::MULTIPLE)
|
||||
.short('a')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/basenc.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features = ["encoding"] }
|
||||
uu_base32 = { version=">=0.0.8", package="uu_base32", path="../base32"}
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
//spell-checker:ignore (args) lsbf msbf
|
||||
|
||||
use clap::{App, Arg};
|
||||
use clap::{Arg, Command};
|
||||
use uu_base32::base_common::{self, Config, BASE_CMD_PARSE_ERROR};
|
||||
|
||||
use uucore::{
|
||||
|
@ -40,12 +40,12 @@ const ENCODINGS: &[(&str, Format)] = &[
|
|||
|
||||
const USAGE: &str = "{} [OPTION]... [FILE]";
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
let mut app = base_common::base_app(ABOUT, USAGE);
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
let mut command = base_common::base_app(ABOUT, USAGE);
|
||||
for encoding in ENCODINGS {
|
||||
app = app.arg(Arg::new(encoding.0).long(encoding.0));
|
||||
command = command.arg(Arg::new(encoding.0).long(encoding.0));
|
||||
}
|
||||
app
|
||||
command
|
||||
}
|
||||
|
||||
fn parse_cmd_args(args: impl uucore::Args) -> UResult<(Config, Format)> {
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/cat.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
thiserror = "1.0"
|
||||
atty = "0.2"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["fs", "pipes"] }
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
extern crate unix_socket;
|
||||
|
||||
// last synced with: cat (GNU coreutils) 8.13
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::fs::{metadata, File};
|
||||
use std::io::{self, Read, Write};
|
||||
use thiserror::Error;
|
||||
|
@ -239,13 +239,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
cat_files(&files, &options)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.name(NAME)
|
||||
.version(crate_version!())
|
||||
.override_usage(format_usage(USAGE))
|
||||
.about(SUMMARY)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::FILE)
|
||||
.hide(true)
|
||||
|
|
|
@ -14,7 +14,7 @@ edition = "2018"
|
|||
path = "src/chcon.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version = ">=0.0.9", package="uucore", path="../../uucore", features=["entries", "fs", "perms"] }
|
||||
selinux = { version = "0.2" }
|
||||
fts-sys = { version = "0.2" }
|
||||
|
|
|
@ -6,7 +6,7 @@ use uucore::error::{UResult, USimpleError, UUsageError};
|
|||
use uucore::format_usage;
|
||||
use uucore::{display::Quotable, show_error, show_warning};
|
||||
|
||||
use clap::{App, AppSettings, Arg};
|
||||
use clap::{Arg, Command};
|
||||
use selinux::{OpaqueSecurityContext, SecurityContext};
|
||||
|
||||
use std::borrow::Cow;
|
||||
|
@ -29,6 +29,7 @@ const USAGE: &str = "\
|
|||
{} [OPTION]... --reference=RFILE FILE...";
|
||||
|
||||
pub mod options {
|
||||
pub static HELP: &str = "help";
|
||||
pub static VERBOSE: &str = "verbose";
|
||||
|
||||
pub static REFERENCE: &str = "reference";
|
||||
|
@ -65,7 +66,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(r) => r,
|
||||
Err(r) => {
|
||||
if let Error::CommandLine(r) = &r {
|
||||
match r.kind {
|
||||
match r.kind() {
|
||||
clap::ErrorKind::DisplayHelp | clap::ErrorKind::DisplayVersion => {
|
||||
println!("{}", r);
|
||||
return Ok(());
|
||||
|
@ -154,12 +155,17 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Err(libc::EXIT_FAILURE.into())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(VERSION)
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::HELP)
|
||||
.long(options::HELP)
|
||||
.help("Print help information."),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::dereference::DEREFERENCE)
|
||||
.long(options::dereference::DEREFERENCE)
|
||||
|
@ -303,7 +309,7 @@ struct Options {
|
|||
files: Vec<PathBuf>,
|
||||
}
|
||||
|
||||
fn parse_command_line(config: clap::App, args: impl uucore::Args) -> Result<Options> {
|
||||
fn parse_command_line(config: clap::Command, args: impl uucore::Args) -> Result<Options> {
|
||||
let matches = config.try_get_matches_from(args)?;
|
||||
|
||||
let verbose = matches.is_present(options::VERBOSE);
|
||||
|
@ -402,23 +408,21 @@ enum RecursiveMode {
|
|||
impl RecursiveMode {
|
||||
fn is_recursive(self) -> bool {
|
||||
match self {
|
||||
RecursiveMode::NotRecursive => false,
|
||||
Self::NotRecursive => false,
|
||||
|
||||
RecursiveMode::RecursiveButDoNotFollowSymLinks
|
||||
| RecursiveMode::RecursiveAndFollowAllDirSymLinks
|
||||
| RecursiveMode::RecursiveAndFollowArgDirSymLinks => true,
|
||||
Self::RecursiveButDoNotFollowSymLinks
|
||||
| Self::RecursiveAndFollowAllDirSymLinks
|
||||
| Self::RecursiveAndFollowArgDirSymLinks => true,
|
||||
}
|
||||
}
|
||||
|
||||
fn fts_open_options(self) -> c_int {
|
||||
match self {
|
||||
RecursiveMode::NotRecursive | RecursiveMode::RecursiveButDoNotFollowSymLinks => {
|
||||
fts_sys::FTS_PHYSICAL
|
||||
}
|
||||
Self::NotRecursive | Self::RecursiveButDoNotFollowSymLinks => fts_sys::FTS_PHYSICAL,
|
||||
|
||||
RecursiveMode::RecursiveAndFollowAllDirSymLinks => fts_sys::FTS_LOGICAL,
|
||||
Self::RecursiveAndFollowAllDirSymLinks => fts_sys::FTS_LOGICAL,
|
||||
|
||||
RecursiveMode::RecursiveAndFollowArgDirSymLinks => {
|
||||
Self::RecursiveAndFollowArgDirSymLinks => {
|
||||
fts_sys::FTS_PHYSICAL | fts_sys::FTS_COMFOLLOW
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/chgrp.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "fs", "perms"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -13,7 +13,7 @@ use uucore::error::{FromIo, UResult, USimpleError};
|
|||
use uucore::format_usage;
|
||||
use uucore::perms::{chown_base, options, IfFrom};
|
||||
|
||||
use clap::{App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{Arg, ArgMatches, Command};
|
||||
|
||||
use std::fs;
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
|
@ -54,12 +54,17 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
chown_base(uu_app(), args, options::ARG_GROUP, parse_gid_and_uid, true)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(VERSION)
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::HELP)
|
||||
.long(options::HELP)
|
||||
.help("Print help information.")
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::verbosity::CHANGES)
|
||||
.short('c')
|
||||
|
|
|
@ -15,8 +15,8 @@ edition = "2018"
|
|||
path = "src/chmod.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.42"
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.121"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["fs", "mode"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
// spell-checker:ignore (ToDO) Chmoder cmode fmode fperm fref ugoa RFILE RFILE's
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::fs;
|
||||
use std::os::unix::fs::{MetadataExt, PermissionsExt};
|
||||
use std::path::Path;
|
||||
|
@ -112,12 +112,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
chmoder.chmod(&files)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::CHANGES)
|
||||
.long(options::CHANGES)
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/chown.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "fs", "perms"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -14,7 +14,7 @@ use uucore::perms::{chown_base, options, IfFrom};
|
|||
|
||||
use uucore::error::{FromIo, UResult, USimpleError};
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
|
||||
use std::fs;
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
|
@ -63,12 +63,17 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::HELP)
|
||||
.long(options::HELP)
|
||||
.help("Print help information."),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::verbosity::CHANGES)
|
||||
.short('c')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/chroot.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
mod error;
|
||||
|
||||
use crate::error::ChrootError;
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::ffi::CString;
|
||||
use std::io::Error;
|
||||
use std::path::Path;
|
||||
use std::process::Command;
|
||||
use std::process;
|
||||
use uucore::error::{set_exit_code, UResult};
|
||||
use uucore::libc::{self, chroot, setgid, setgroups, setuid};
|
||||
use uucore::{entries, format_usage, InvalidEncodingHandling};
|
||||
|
@ -77,7 +77,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
// NOTE: Tests can only trigger code beyond this point if they're invoked with root permissions
|
||||
set_context(newroot, &matches)?;
|
||||
|
||||
let pstatus = match Command::new(chroot_command).args(chroot_args).status() {
|
||||
let pstatus = match process::Command::new(chroot_command)
|
||||
.args(chroot_args)
|
||||
.status()
|
||||
{
|
||||
Ok(status) => status,
|
||||
Err(e) => return Err(ChrootError::CommandFailed(command[0].to_string(), e).into()),
|
||||
};
|
||||
|
@ -91,12 +94,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::NEWROOT)
|
||||
.hide(true)
|
||||
|
|
|
@ -55,25 +55,25 @@ impl UError for ChrootError {
|
|||
impl Display for ChrootError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
match self {
|
||||
ChrootError::CannotEnter(s, e) => write!(f, "cannot chroot to {}: {}", s.quote(), e,),
|
||||
ChrootError::CommandFailed(s, e) => {
|
||||
Self::CannotEnter(s, e) => write!(f, "cannot chroot to {}: {}", s.quote(), e,),
|
||||
Self::CommandFailed(s, e) => {
|
||||
write!(f, "failed to run command {}: {}", s.to_string().quote(), e,)
|
||||
}
|
||||
ChrootError::InvalidUserspec(s) => write!(f, "invalid userspec: {}", s.quote(),),
|
||||
ChrootError::MissingNewRoot => write!(
|
||||
Self::InvalidUserspec(s) => write!(f, "invalid userspec: {}", s.quote(),),
|
||||
Self::MissingNewRoot => write!(
|
||||
f,
|
||||
"Missing operand: NEWROOT\nTry '{} --help' for more information.",
|
||||
uucore::execution_phrase(),
|
||||
),
|
||||
ChrootError::NoSuchGroup(s) => write!(f, "no such group: {}", s.maybe_quote(),),
|
||||
ChrootError::NoSuchDirectory(s) => write!(
|
||||
Self::NoSuchGroup(s) => write!(f, "no such group: {}", s.maybe_quote(),),
|
||||
Self::NoSuchDirectory(s) => write!(
|
||||
f,
|
||||
"cannot change root directory to {}: no such directory",
|
||||
s.quote(),
|
||||
),
|
||||
ChrootError::SetGidFailed(s, e) => write!(f, "cannot set gid to {}: {}", s, e),
|
||||
ChrootError::SetGroupsFailed(e) => write!(f, "cannot set groups: {}", e),
|
||||
ChrootError::SetUserFailed(s, e) => {
|
||||
Self::SetGidFailed(s, e) => write!(f, "cannot set gid to {}: {}", s, e),
|
||||
Self::SetGroupsFailed(e) => write!(f, "cannot set groups: {}", e),
|
||||
Self::SetUserFailed(s, e) => {
|
||||
write!(f, "cannot set user to {}: {}", s.maybe_quote(), e)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/cksum.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
// file that was distributed with this source code.
|
||||
|
||||
// spell-checker:ignore (ToDO) fname
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::fs::File;
|
||||
use std::io::{self, stdin, BufReader, Read};
|
||||
use std::path::Path;
|
||||
|
@ -140,13 +140,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.name(NAME)
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::FILE)
|
||||
.hide(true)
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/comm.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -15,7 +15,7 @@ use uucore::error::FromIo;
|
|||
use uucore::error::UResult;
|
||||
use uucore::{format_usage, InvalidEncodingHandling};
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
|
||||
static ABOUT: &str = "compare two sorted files line by line";
|
||||
static LONG_HELP: &str = "";
|
||||
|
@ -143,13 +143,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.after_help(LONG_HELP)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::COLUMN_1)
|
||||
.short('1')
|
||||
|
|
|
@ -19,9 +19,9 @@ edition = "2018"
|
|||
path = "src/cp.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
filetime = "0.2"
|
||||
libc = "0.2.85"
|
||||
libc = "0.2.121"
|
||||
quick-error = "2.0.1"
|
||||
selinux = { version="0.2", optional=true }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "fs", "perms", "mode"] }
|
||||
|
|
|
@ -28,7 +28,7 @@ use winapi::um::fileapi::GetFileInformationByHandle;
|
|||
|
||||
use std::borrow::Cow;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use filetime::FileTime;
|
||||
#[cfg(unix)]
|
||||
use libc::mkfifo;
|
||||
|
@ -296,7 +296,7 @@ static DEFAULT_ATTRIBUTES: &[Attribute] = &[
|
|||
Attribute::Timestamps,
|
||||
];
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
const MODE_ARGS: &[&str] = &[
|
||||
options::LINK,
|
||||
options::REFLINK,
|
||||
|
@ -304,17 +304,23 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
options::ATTRIBUTES_ONLY,
|
||||
options::COPY_CONTENTS,
|
||||
];
|
||||
App::new(uucore::util_name())
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(Arg::new(options::TARGET_DIRECTORY)
|
||||
.short('t')
|
||||
.conflicts_with(options::NO_TARGET_DIRECTORY)
|
||||
.long(options::TARGET_DIRECTORY)
|
||||
.value_name(options::TARGET_DIRECTORY)
|
||||
.takes_value(true)
|
||||
.validator(|s| {
|
||||
if Path::new(s).is_dir() {
|
||||
return Ok(());
|
||||
}
|
||||
Err(format!("'{}' is not a directory", s))
|
||||
})
|
||||
.help("copy all SOURCE arguments into target-directory"))
|
||||
.arg(Arg::new(options::NO_TARGET_DIRECTORY)
|
||||
.short('T')
|
||||
|
@ -389,7 +395,7 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
.long(options::PRESERVE)
|
||||
.takes_value(true)
|
||||
.multiple_occurrences(true)
|
||||
.use_delimiter(true)
|
||||
.use_value_delimiter(true)
|
||||
.possible_values(PRESERVABLE_ATTRIBUTES)
|
||||
.min_values(0)
|
||||
.value_name("ATTR_LIST")
|
||||
|
@ -469,7 +475,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
LONG_HELP,
|
||||
backup_control::BACKUP_CONTROL_LONG_HELP
|
||||
))
|
||||
.get_matches_from(args);
|
||||
.try_get_matches_from(args)?;
|
||||
|
||||
let options = Options::from_matches(&matches)?;
|
||||
|
||||
|
@ -1087,8 +1093,8 @@ fn copy_directory(
|
|||
impl OverwriteMode {
|
||||
fn verify(&self, path: &Path) -> CopyResult<()> {
|
||||
match *self {
|
||||
OverwriteMode::NoClobber => Err(Error::NotAllFilesCopied),
|
||||
OverwriteMode::Interactive(_) => {
|
||||
Self::NoClobber => Err(Error::NotAllFilesCopied),
|
||||
Self::Interactive(_) => {
|
||||
if prompt_yes!("{}: overwrite {}? ", uucore::util_name(), path.quote()) {
|
||||
Ok(())
|
||||
} else {
|
||||
|
@ -1098,7 +1104,7 @@ impl OverwriteMode {
|
|||
)))
|
||||
}
|
||||
}
|
||||
OverwriteMode::Clobber(_) => Ok(()),
|
||||
Self::Clobber(_) => Ok(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/csplit.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
thiserror = "1.0"
|
||||
regex = "1.0.0"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "fs"] }
|
||||
|
|
|
@ -12,7 +12,7 @@ use std::{
|
|||
io::{BufRead, BufWriter, Write},
|
||||
};
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use regex::Regex;
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{FromIo, UResult};
|
||||
|
@ -746,12 +746,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::SUFFIX_FORMAT)
|
||||
.short('b')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/cut.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
memchr = "2"
|
||||
bstr = "0.2"
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
extern crate uucore;
|
||||
|
||||
use bstr::io::BufReadExt;
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::fs::File;
|
||||
use std::io::{stdin, stdout, BufReader, BufWriter, Read, Write};
|
||||
use std::path::Path;
|
||||
|
@ -533,14 +533,14 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.name(NAME)
|
||||
.version(crate_version!())
|
||||
.override_usage(format_usage(USAGE))
|
||||
.about(SUMMARY)
|
||||
.after_help(LONG_HELP)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::BYTES)
|
||||
.short('b')
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/date.rs"
|
|||
|
||||
[dependencies]
|
||||
chrono = "^0.4.11"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
use chrono::{DateTime, FixedOffset, Local, Offset, Utc};
|
||||
#[cfg(windows)]
|
||||
use chrono::{Datelike, Timelike};
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
#[cfg(all(unix, not(target_os = "macos"), not(target_os = "redox")))]
|
||||
use libc::{clock_settime, timespec, CLOCK_REALTIME};
|
||||
use std::fs::File;
|
||||
|
@ -254,12 +254,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(OPT_DATE)
|
||||
.short('d')
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/dd.rs"
|
|||
|
||||
[dependencies]
|
||||
byte-unit = "4.0"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
gcd = "2.0"
|
||||
libc = "0.2"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
//
|
||||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
// spell-checker:ignore ctable, outfile
|
||||
// spell-checker:ignore ctable, outfile, iseek, oseek
|
||||
|
||||
use std::error::Error;
|
||||
|
||||
|
@ -120,6 +120,8 @@ pub mod options {
|
|||
pub const COUNT: &str = "count";
|
||||
pub const SKIP: &str = "skip";
|
||||
pub const SEEK: &str = "seek";
|
||||
pub const ISEEK: &str = "iseek";
|
||||
pub const OSEEK: &str = "oseek";
|
||||
pub const STATUS: &str = "status";
|
||||
pub const CONV: &str = "conv";
|
||||
pub const IFLAG: &str = "iflag";
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
|
||||
// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rremain, rsofar, rstat, sigusr, wlen, wstat seekable
|
||||
// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, iseek, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, oseek, outfile, parseargs, rlen, rmax, rremain, rsofar, rstat, sigusr, wlen, wstat seekable
|
||||
|
||||
mod datastructures;
|
||||
use datastructures::*;
|
||||
|
@ -34,7 +34,7 @@ use std::sync::mpsc;
|
|||
use std::thread;
|
||||
use std::time;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use gcd::Gcd;
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{FromIo, UResult};
|
||||
|
@ -60,7 +60,9 @@ impl Input<io::Stdin> {
|
|||
let print_level = parseargs::parse_status_level(matches)?;
|
||||
let cflags = parseargs::parse_conv_flag_input(matches)?;
|
||||
let iflags = parseargs::parse_iflags(matches)?;
|
||||
let skip = parseargs::parse_skip_amt(&ibs, &iflags, matches)?;
|
||||
let skip = parseargs::parse_seek_skip_amt(&ibs, iflags.skip_bytes, matches, options::SKIP)?;
|
||||
let iseek =
|
||||
parseargs::parse_seek_skip_amt(&ibs, iflags.skip_bytes, matches, options::ISEEK)?;
|
||||
let count = parseargs::parse_count(&iflags, matches)?;
|
||||
|
||||
let mut i = Self {
|
||||
|
@ -73,7 +75,9 @@ impl Input<io::Stdin> {
|
|||
iflags,
|
||||
};
|
||||
|
||||
if let Some(amt) = skip {
|
||||
// The --skip and --iseek flags are additive. On a stream, they discard bytes.
|
||||
let amt = skip.unwrap_or(0) + iseek.unwrap_or(0);
|
||||
if amt > 0 {
|
||||
if let Err(e) = i.read_skip(amt) {
|
||||
if let io::ErrorKind::UnexpectedEof = e.kind() {
|
||||
show_error!("'standard input': cannot skip to specified offset");
|
||||
|
@ -131,7 +135,9 @@ impl Input<File> {
|
|||
let print_level = parseargs::parse_status_level(matches)?;
|
||||
let cflags = parseargs::parse_conv_flag_input(matches)?;
|
||||
let iflags = parseargs::parse_iflags(matches)?;
|
||||
let skip = parseargs::parse_skip_amt(&ibs, &iflags, matches)?;
|
||||
let skip = parseargs::parse_seek_skip_amt(&ibs, iflags.skip_bytes, matches, options::SKIP)?;
|
||||
let iseek =
|
||||
parseargs::parse_seek_skip_amt(&ibs, iflags.skip_bytes, matches, options::ISEEK)?;
|
||||
let count = parseargs::parse_count(&iflags, matches)?;
|
||||
|
||||
if let Some(fname) = matches.value_of(options::INFILE) {
|
||||
|
@ -148,7 +154,9 @@ impl Input<File> {
|
|||
.map_err_context(|| "failed to open input file".to_string())?
|
||||
};
|
||||
|
||||
if let Some(amt) = skip {
|
||||
// The --skip and --iseek flags are additive. On a file, they seek.
|
||||
let amt = skip.unwrap_or(0) + iseek.unwrap_or(0);
|
||||
if amt > 0 {
|
||||
src.seek(io::SeekFrom::Start(amt))
|
||||
.map_err_context(|| "failed to seek in input file".to_string())?;
|
||||
}
|
||||
|
@ -292,12 +300,16 @@ impl OutputTrait for Output<io::Stdout> {
|
|||
let obs = parseargs::parse_obs(matches)?;
|
||||
let cflags = parseargs::parse_conv_flag_output(matches)?;
|
||||
let oflags = parseargs::parse_oflags(matches)?;
|
||||
let seek = parseargs::parse_seek_amt(&obs, &oflags, matches)?;
|
||||
let seek = parseargs::parse_seek_skip_amt(&obs, oflags.seek_bytes, matches, options::SEEK)?;
|
||||
let oseek =
|
||||
parseargs::parse_seek_skip_amt(&obs, oflags.seek_bytes, matches, options::OSEEK)?;
|
||||
|
||||
let mut dst = io::stdout();
|
||||
|
||||
// The --seek and --oseek flags are additive.
|
||||
let amt = seek.unwrap_or(0) + oseek.unwrap_or(0);
|
||||
// stdout is not seekable, so we just write null bytes.
|
||||
if let Some(amt) = seek {
|
||||
if amt > 0 {
|
||||
io::copy(&mut io::repeat(0u8).take(amt as u64), &mut dst)
|
||||
.map_err_context(|| String::from("write error"))?;
|
||||
}
|
||||
|
@ -508,7 +520,9 @@ impl OutputTrait for Output<File> {
|
|||
let obs = parseargs::parse_obs(matches)?;
|
||||
let cflags = parseargs::parse_conv_flag_output(matches)?;
|
||||
let oflags = parseargs::parse_oflags(matches)?;
|
||||
let seek = parseargs::parse_seek_amt(&obs, &oflags, matches)?;
|
||||
let seek = parseargs::parse_seek_skip_amt(&obs, oflags.seek_bytes, matches, options::SEEK)?;
|
||||
let oseek =
|
||||
parseargs::parse_seek_skip_amt(&obs, oflags.seek_bytes, matches, options::OSEEK)?;
|
||||
|
||||
if let Some(fname) = matches.value_of(options::OUTFILE) {
|
||||
let mut dst = open_dst(Path::new(&fname), &cflags, &oflags)
|
||||
|
@ -522,7 +536,9 @@ impl OutputTrait for Output<File> {
|
|||
// Instead, we suppress the error by calling
|
||||
// `Result::ok()`. This matches the behavior of GNU `dd`
|
||||
// when given the command-line argument `of=/dev/null`.
|
||||
let i = seek.unwrap_or(0);
|
||||
|
||||
// The --seek and --oseek flags are additive.
|
||||
let i = seek.unwrap_or(0) + oseek.unwrap_or(0);
|
||||
if !cflags.notrunc {
|
||||
dst.set_len(i).ok();
|
||||
}
|
||||
|
@ -730,11 +746,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::INFILE)
|
||||
.long(options::INFILE)
|
||||
|
@ -807,6 +823,24 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
.value_name("N")
|
||||
.help("(alternatively seek=N) seeks N obs-sized records into output before beginning copy/convert operations. See oflag=seek_bytes if seeking N bytes is preferred. Multiplier strings permitted.")
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::ISEEK)
|
||||
.long(options::ISEEK)
|
||||
.overrides_with(options::ISEEK)
|
||||
.takes_value(true)
|
||||
.require_equals(true)
|
||||
.value_name("N")
|
||||
.help("(alternatively iseek=N) seeks N obs-sized records into input before beginning copy/convert operations. See iflag=seek_bytes if seeking N bytes is preferred. Multiplier strings permitted.")
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::OSEEK)
|
||||
.long(options::OSEEK)
|
||||
.overrides_with(options::OSEEK)
|
||||
.takes_value(true)
|
||||
.require_equals(true)
|
||||
.value_name("N")
|
||||
.help("(alternatively oseek=N) seeks N obs-sized records into output before beginning copy/convert operations. See oflag=seek_bytes if seeking N bytes is preferred. Multiplier strings permitted.")
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::COUNT)
|
||||
.long(options::COUNT)
|
||||
|
@ -846,8 +880,8 @@ Printing performance stats is also triggered by the INFO signal (where supported
|
|||
.long(options::CONV)
|
||||
.takes_value(true)
|
||||
.multiple_occurrences(true)
|
||||
.use_delimiter(true)
|
||||
.require_delimiter(true)
|
||||
.use_value_delimiter(true)
|
||||
.require_value_delimiter(true)
|
||||
.multiple_values(true)
|
||||
.require_equals(true)
|
||||
.value_name("CONV")
|
||||
|
@ -887,8 +921,8 @@ Conversion Flags:
|
|||
.long(options::IFLAG)
|
||||
.takes_value(true)
|
||||
.multiple_occurrences(true)
|
||||
.use_delimiter(true)
|
||||
.require_delimiter(true)
|
||||
.use_value_delimiter(true)
|
||||
.require_value_delimiter(true)
|
||||
.multiple_values(true)
|
||||
.require_equals(true)
|
||||
.value_name("FLAG")
|
||||
|
@ -917,8 +951,8 @@ General-Flags
|
|||
.long(options::OFLAG)
|
||||
.takes_value(true)
|
||||
.multiple_occurrences(true)
|
||||
.use_delimiter(true)
|
||||
.require_delimiter(true)
|
||||
.use_value_delimiter(true)
|
||||
.require_value_delimiter(true)
|
||||
.multiple_values(true)
|
||||
.require_equals(true)
|
||||
.value_name("FLAG")
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
//
|
||||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
// spell-checker:ignore ctty, ctable, iconvflags, oconvflags parseargs
|
||||
// spell-checker:ignore ctty, ctable, iseek, oseek, iconvflags, oconvflags parseargs
|
||||
|
||||
#[cfg(test)]
|
||||
mod unit_tests;
|
||||
|
@ -100,16 +100,16 @@ impl std::fmt::Display for ParseError {
|
|||
Self::StatusLevelNotRecognized(arg) => {
|
||||
write!(f, "status=LEVEL not recognized -> {}", arg)
|
||||
}
|
||||
ParseError::BsOutOfRange => {
|
||||
Self::BsOutOfRange => {
|
||||
write!(f, "bs=N cannot fit into memory")
|
||||
}
|
||||
ParseError::IbsOutOfRange => {
|
||||
Self::IbsOutOfRange => {
|
||||
write!(f, "ibs=N cannot fit into memory")
|
||||
}
|
||||
ParseError::ObsOutOfRange => {
|
||||
Self::ObsOutOfRange => {
|
||||
write!(f, "obs=N cannot fit into memory")
|
||||
}
|
||||
ParseError::CbsOutOfRange => {
|
||||
Self::CbsOutOfRange => {
|
||||
write!(f, "cbs=N cannot fit into memory")
|
||||
}
|
||||
Self::Unimplemented(arg) => {
|
||||
|
@ -740,15 +740,15 @@ pub fn parse_oflags(matches: &Matches) -> Result<OFlags, ParseError> {
|
|||
Ok(oflags)
|
||||
}
|
||||
|
||||
/// Parse the amount of the input file to skip.
|
||||
pub fn parse_skip_amt(
|
||||
pub fn parse_seek_skip_amt(
|
||||
ibs: &usize,
|
||||
iflags: &IFlags,
|
||||
bytes: bool,
|
||||
matches: &Matches,
|
||||
option: &str,
|
||||
) -> Result<Option<u64>, ParseError> {
|
||||
if let Some(amt) = matches.value_of(options::SKIP) {
|
||||
if let Some(amt) = matches.value_of(option) {
|
||||
let n = parse_bytes_with_opt_multiplier(amt)?;
|
||||
if iflags.skip_bytes {
|
||||
if bytes {
|
||||
Ok(Some(n))
|
||||
} else {
|
||||
Ok(Some(*ibs as u64 * n))
|
||||
|
@ -758,24 +758,6 @@ pub fn parse_skip_amt(
|
|||
}
|
||||
}
|
||||
|
||||
/// Parse the amount of the output file to seek.
|
||||
pub fn parse_seek_amt(
|
||||
obs: &usize,
|
||||
oflags: &OFlags,
|
||||
matches: &Matches,
|
||||
) -> Result<Option<u64>, ParseError> {
|
||||
if let Some(amt) = matches.value_of(options::SEEK) {
|
||||
let n = parse_bytes_with_opt_multiplier(amt)?;
|
||||
if oflags.seek_bytes {
|
||||
Ok(Some(n))
|
||||
} else {
|
||||
Ok(Some(*obs as u64 * n))
|
||||
}
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
/// Parse the value of count=N and the type of N implied by iflags
|
||||
pub fn parse_count(iflags: &IFlags, matches: &Matches) -> Result<Option<CountType>, ParseError> {
|
||||
if let Some(amt) = matches.value_of(options::COUNT) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat
|
||||
// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, iseek, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, oseek, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat
|
||||
|
||||
use super::*;
|
||||
|
||||
|
@ -112,6 +112,8 @@ fn test_all_top_level_args_no_leading_dashes() {
|
|||
String::from("count=2"),
|
||||
String::from("skip=2"),
|
||||
String::from("seek=2"),
|
||||
String::from("iseek=2"),
|
||||
String::from("oseek=2"),
|
||||
String::from("status=progress"),
|
||||
String::from("conv=ascii,ucase"),
|
||||
String::from("iflag=count_bytes,skip_bytes"),
|
||||
|
@ -140,13 +142,25 @@ fn test_all_top_level_args_no_leading_dashes() {
|
|||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_skip_amt(&100, &IFlags::default(), &matches)
|
||||
parse_seek_skip_amt(&100, IFlags::default().skip_bytes, &matches, options::SKIP)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_amt(&100, &OFlags::default(), &matches)
|
||||
parse_seek_skip_amt(&100, OFlags::default().seek_bytes, &matches, options::SEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_skip_amt(&100, IFlags::default().skip_bytes, &matches, options::ISEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_skip_amt(&100, OFlags::default().seek_bytes, &matches, options::OSEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
|
@ -197,6 +211,8 @@ fn test_all_top_level_args_with_leading_dashes() {
|
|||
String::from("--count=2"),
|
||||
String::from("--skip=2"),
|
||||
String::from("--seek=2"),
|
||||
String::from("--iseek=2"),
|
||||
String::from("--oseek=2"),
|
||||
String::from("--status=progress"),
|
||||
String::from("--conv=ascii,ucase"),
|
||||
String::from("--iflag=count_bytes,skip_bytes"),
|
||||
|
@ -225,13 +241,25 @@ fn test_all_top_level_args_with_leading_dashes() {
|
|||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_skip_amt(&100, &IFlags::default(), &matches)
|
||||
parse_seek_skip_amt(&100, IFlags::default().skip_bytes, &matches, options::SKIP)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_amt(&100, &OFlags::default(), &matches)
|
||||
parse_seek_skip_amt(&100, OFlags::default().seek_bytes, &matches, options::SEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_skip_amt(&100, IFlags::default().skip_bytes, &matches, options::ISEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_skip_amt(&100, OFlags::default().seek_bytes, &matches, options::OSEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
|
@ -303,10 +331,10 @@ fn test_status_level_noxfer() {
|
|||
fn test_multiple_flags_options() {
|
||||
let args = vec![
|
||||
String::from("dd"),
|
||||
String::from("--iflag=fullblock,directory"),
|
||||
String::from("--iflag=fullblock,count_bytes"),
|
||||
String::from("--iflag=skip_bytes"),
|
||||
String::from("--oflag=direct"),
|
||||
String::from("--oflag=dsync"),
|
||||
String::from("--oflag=append"),
|
||||
String::from("--oflag=seek_bytes"),
|
||||
String::from("--conv=ascii,ucase"),
|
||||
String::from("--conv=unblock"),
|
||||
];
|
||||
|
@ -315,13 +343,13 @@ fn test_multiple_flags_options() {
|
|||
// iflag
|
||||
let iflags = parse_flag_list::<Flag>(options::IFLAG, &matches).unwrap();
|
||||
assert_eq!(
|
||||
vec![Flag::FullBlock, Flag::Directory, Flag::SkipBytes],
|
||||
vec![Flag::FullBlock, Flag::CountBytes, Flag::SkipBytes],
|
||||
iflags
|
||||
);
|
||||
|
||||
// oflag
|
||||
let oflags = parse_flag_list::<Flag>(options::OFLAG, &matches).unwrap();
|
||||
assert_eq!(vec![Flag::Direct, Flag::Dsync], oflags);
|
||||
assert_eq!(vec![Flag::Append, Flag::SeekBytes], oflags);
|
||||
|
||||
// conv
|
||||
let conv = parse_flag_list::<ConvFlag>(options::CONV, &matches).unwrap();
|
||||
|
@ -349,6 +377,10 @@ fn test_override_multiple_options() {
|
|||
String::from("--skip=2"),
|
||||
String::from("--seek=0"),
|
||||
String::from("--seek=2"),
|
||||
String::from("--iseek=0"),
|
||||
String::from("--iseek=2"),
|
||||
String::from("--oseek=0"),
|
||||
String::from("--oseek=2"),
|
||||
String::from("--status=none"),
|
||||
String::from("--status=noxfer"),
|
||||
String::from("--count=512"),
|
||||
|
@ -381,7 +413,7 @@ fn test_override_multiple_options() {
|
|||
// skip
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_skip_amt(&100, &IFlags::default(), &matches)
|
||||
parse_seek_skip_amt(&100, IFlags::default().skip_bytes, &matches, options::SKIP)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
|
@ -389,7 +421,23 @@ fn test_override_multiple_options() {
|
|||
// seek
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_amt(&100, &OFlags::default(), &matches)
|
||||
parse_seek_skip_amt(&100, OFlags::default().seek_bytes, &matches, options::SEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
|
||||
// iseek
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_skip_amt(&100, IFlags::default().skip_bytes, &matches, options::ISEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
|
||||
// oseek
|
||||
assert_eq!(
|
||||
200,
|
||||
parse_seek_skip_amt(&100, OFlags::default().seek_bytes, &matches, options::OSEEK)
|
||||
.unwrap()
|
||||
.unwrap()
|
||||
);
|
||||
|
@ -685,7 +733,7 @@ mod test_64bit_arch {
|
|||
#[test]
|
||||
#[should_panic]
|
||||
fn test_overflow_panic() {
|
||||
let bs_str = format!("{}KiB", usize::MAX);
|
||||
let bs_str = format!("{}KiB", u64::MAX);
|
||||
|
||||
parse_bytes_with_opt_multiplier(&bs_str).unwrap();
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/df.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
number_prefix = "0.4"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["libc", "fsext"] }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ use uucore::error::{UResult, USimpleError};
|
|||
use uucore::format_usage;
|
||||
use uucore::fsext::{read_fs_list, MountInfo};
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
|
||||
use std::fmt;
|
||||
use std::path::Path;
|
||||
|
@ -29,9 +29,9 @@ static ABOUT: &str = "Show information about the file system on which each FILE
|
|||
or all file systems by default.";
|
||||
const USAGE: &str = "{} [OPTION]... [FILE]...";
|
||||
|
||||
static OPT_HELP: &str = "help";
|
||||
static OPT_ALL: &str = "all";
|
||||
static OPT_BLOCKSIZE: &str = "blocksize";
|
||||
static OPT_DIRECT: &str = "direct";
|
||||
static OPT_TOTAL: &str = "total";
|
||||
static OPT_HUMAN_READABLE: &str = "human-readable";
|
||||
static OPT_HUMAN_READABLE_2: &str = "human-readable-2";
|
||||
|
@ -316,12 +316,17 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(OPT_HELP)
|
||||
.long(OPT_HELP)
|
||||
.help("Print help information."),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(OPT_ALL)
|
||||
.short('a')
|
||||
|
@ -338,11 +343,6 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
'-BM' prints sizes in units of 1,048,576 bytes",
|
||||
),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(OPT_DIRECT)
|
||||
.long("direct")
|
||||
.help("show statistics for a file instead of mount point"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(OPT_TOTAL)
|
||||
.long("total")
|
||||
|
@ -385,7 +385,7 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
Arg::new(OPT_OUTPUT)
|
||||
.long("output")
|
||||
.takes_value(true)
|
||||
.use_delimiter(true)
|
||||
.use_value_delimiter(true)
|
||||
.possible_values(OUTPUT_FIELD_LIST)
|
||||
.default_missing_values(&OUTPUT_FIELD_LIST)
|
||||
.default_values(&["source", "size", "used", "avail", "pcent", "target"])
|
||||
|
@ -428,7 +428,7 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
.long("exclude-type")
|
||||
.allow_invalid_utf8(true)
|
||||
.takes_value(true)
|
||||
.use_delimiter(true)
|
||||
.use_value_delimiter(true)
|
||||
.multiple_occurrences(true)
|
||||
.help("limit listing to file systems not of type TYPE"),
|
||||
)
|
||||
|
|
|
@ -39,8 +39,8 @@ pub(crate) struct Row {
|
|||
/// Number of used bytes.
|
||||
bytes_used: u64,
|
||||
|
||||
/// Number of free bytes.
|
||||
bytes_free: u64,
|
||||
/// Number of available bytes.
|
||||
bytes_avail: u64,
|
||||
|
||||
/// Percentage of bytes that are used, given as a float between 0 and 1.
|
||||
///
|
||||
|
@ -78,7 +78,7 @@ impl Row {
|
|||
fs_mount: "-".into(),
|
||||
bytes: 0,
|
||||
bytes_used: 0,
|
||||
bytes_free: 0,
|
||||
bytes_avail: 0,
|
||||
bytes_usage: None,
|
||||
#[cfg(target_os = "macos")]
|
||||
bytes_capacity: None,
|
||||
|
@ -106,7 +106,7 @@ impl AddAssign for Row {
|
|||
fs_mount: "-".into(),
|
||||
bytes,
|
||||
bytes_used,
|
||||
bytes_free: self.bytes_free + rhs.bytes_free,
|
||||
bytes_avail: self.bytes_avail + rhs.bytes_avail,
|
||||
bytes_usage: if bytes == 0 {
|
||||
None
|
||||
} else {
|
||||
|
@ -139,7 +139,6 @@ impl From<Filesystem> for Row {
|
|||
blocksize,
|
||||
blocks,
|
||||
bfree,
|
||||
#[cfg(target_os = "macos")]
|
||||
bavail,
|
||||
files,
|
||||
ffree,
|
||||
|
@ -151,7 +150,7 @@ impl From<Filesystem> for Row {
|
|||
fs_mount: mount_dir,
|
||||
bytes: blocksize * blocks,
|
||||
bytes_used: blocksize * (blocks - bfree),
|
||||
bytes_free: blocksize * bfree,
|
||||
bytes_avail: blocksize * bavail,
|
||||
bytes_usage: if blocks == 0 {
|
||||
None
|
||||
} else {
|
||||
|
@ -236,7 +235,7 @@ impl fmt::Display for DisplayRow<'_> {
|
|||
Column::Source => write!(f, "{0: <16} ", self.row.fs_device)?,
|
||||
Column::Size => write!(f, "{0: >12} ", self.scaled(self.row.bytes)?)?,
|
||||
Column::Used => write!(f, "{0: >12} ", self.scaled(self.row.bytes_used)?)?,
|
||||
Column::Avail => write!(f, "{0: >12} ", self.scaled(self.row.bytes_free)?)?,
|
||||
Column::Avail => write!(f, "{0: >12} ", self.scaled(self.row.bytes_avail)?)?,
|
||||
Column::Pcent => {
|
||||
write!(f, "{0: >5} ", DisplayRow::percentage(self.row.bytes_usage))?;
|
||||
}
|
||||
|
@ -413,7 +412,7 @@ mod tests {
|
|||
|
||||
bytes: 100,
|
||||
bytes_used: 25,
|
||||
bytes_free: 75,
|
||||
bytes_avail: 75,
|
||||
bytes_usage: Some(0.25),
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
|
@ -444,7 +443,7 @@ mod tests {
|
|||
|
||||
bytes: 100,
|
||||
bytes_used: 25,
|
||||
bytes_free: 75,
|
||||
bytes_avail: 75,
|
||||
bytes_usage: Some(0.25),
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
|
@ -475,7 +474,7 @@ mod tests {
|
|||
|
||||
bytes: 100,
|
||||
bytes_used: 25,
|
||||
bytes_free: 75,
|
||||
bytes_avail: 75,
|
||||
bytes_usage: Some(0.25),
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
|
@ -506,7 +505,7 @@ mod tests {
|
|||
|
||||
bytes: 4000,
|
||||
bytes_used: 1000,
|
||||
bytes_free: 3000,
|
||||
bytes_avail: 3000,
|
||||
bytes_usage: Some(0.25),
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
|
@ -537,7 +536,7 @@ mod tests {
|
|||
|
||||
bytes: 4096,
|
||||
bytes_used: 1024,
|
||||
bytes_free: 3072,
|
||||
bytes_avail: 3072,
|
||||
bytes_usage: Some(0.25),
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
|
@ -567,7 +566,7 @@ mod tests {
|
|||
|
||||
bytes: 100,
|
||||
bytes_used: 25,
|
||||
bytes_free: 75,
|
||||
bytes_avail: 75,
|
||||
bytes_usage: Some(0.251),
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/dircolors.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
glob = "0.3.0"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ use std::env;
|
|||
use std::fs::File;
|
||||
use std::io::{BufRead, BufReader};
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{UResult, USimpleError, UUsageError};
|
||||
|
||||
|
@ -154,13 +154,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.after_help(LONG_HELP)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::BOURNE_SHELL)
|
||||
.long("sh")
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/dirname.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::path::Path;
|
||||
use uucore::display::print_verbatim;
|
||||
use uucore::error::{UResult, UUsageError};
|
||||
|
@ -76,12 +76,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.about(ABOUT)
|
||||
.version(crate_version!())
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::ZERO)
|
||||
.long(options::ZERO)
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/du.rs"
|
|||
|
||||
[dependencies]
|
||||
chrono = "^0.4.11"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
|
|
|
@ -10,7 +10,7 @@ extern crate uucore;
|
|||
|
||||
use chrono::prelude::DateTime;
|
||||
use chrono::Local;
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use std::collections::HashSet;
|
||||
use std::env;
|
||||
use std::fs;
|
||||
|
@ -47,6 +47,7 @@ use winapi::um::winbase::GetFileInformationByHandleEx;
|
|||
use winapi::um::winnt::{FILE_ID_128, ULONGLONG};
|
||||
|
||||
mod options {
|
||||
pub const HELP: &str = "help";
|
||||
pub const NULL: &str = "0";
|
||||
pub const ALL: &str = "all";
|
||||
pub const APPARENT_SIZE: &str = "apparent-size";
|
||||
|
@ -617,13 +618,18 @@ fn parse_depth(max_depth_str: Option<&str>, summarize: bool) -> UResult<Option<u
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.after_help(LONG_HELP)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::HELP)
|
||||
.long(options::HELP)
|
||||
.help("Print help information.")
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::ALL)
|
||||
.short('a')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/echo.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::io::{self, Write};
|
||||
use std::iter::Peekable;
|
||||
use std::str::Chars;
|
||||
|
@ -126,15 +126,15 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
.map_err_context(|| "could not write to stdout".to_string())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.name(NAME)
|
||||
// TrailingVarArg specifies the final positional argument is a VarArg
|
||||
// and it doesn't attempts the parse any further args.
|
||||
// Final argument must have multiple(true) or the usage string equivalent.
|
||||
.setting(AppSettings::TrailingVarArg)
|
||||
.setting(AppSettings::AllowHyphenValues)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.trailing_var_arg(true)
|
||||
.allow_hyphen_values(true)
|
||||
.infer_long_args(true)
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.after_help(AFTER_HELP)
|
||||
|
|
2
src/uu/env/Cargo.toml
vendored
2
src/uu/env/Cargo.toml
vendored
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/env.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
rust-ini = "0.17.0"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
|
|
14
src/uu/env/src/env.rs
vendored
14
src/uu/env/src/env.rs
vendored
|
@ -16,13 +16,13 @@ extern crate clap;
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{App, AppSettings, Arg};
|
||||
use clap::{Arg, Command};
|
||||
use ini::Ini;
|
||||
use std::borrow::Cow;
|
||||
use std::env;
|
||||
use std::io::{self, Write};
|
||||
use std::iter::Iterator;
|
||||
use std::process::Command;
|
||||
use std::process;
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{UResult, USimpleError, UUsageError};
|
||||
use uucore::format_usage;
|
||||
|
@ -121,15 +121,15 @@ fn build_command<'a, 'b>(args: &'a mut Vec<&'b str>) -> (Cow<'b, str>, &'a [&'b
|
|||
(progname, &args[..])
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(crate_name!())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(crate_name!())
|
||||
.version(crate_version!())
|
||||
.author(crate_authors!())
|
||||
.about(crate_description!())
|
||||
.override_usage(format_usage(USAGE))
|
||||
.after_help(AFTER_HELP)
|
||||
.setting(AppSettings::AllowExternalSubcommands)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.allow_external_subcommands(true)
|
||||
.infer_long_args(true)
|
||||
.arg(Arg::new("ignore-environment")
|
||||
.short('i')
|
||||
.long("ignore-environment")
|
||||
|
@ -307,7 +307,7 @@ fn run_env(args: impl uucore::Args) -> UResult<()> {
|
|||
* standard library contains many checks and fail-safes to ensure the process ends up being
|
||||
* created. This is much simpler than dealing with the hassles of calling execvp directly.
|
||||
*/
|
||||
match Command::new(&*prog).args(args).status() {
|
||||
match process::Command::new(&*prog).args(args).status() {
|
||||
Ok(exit) if !exit.success() => return Err(exit.code().unwrap().into()),
|
||||
Err(ref err) if err.kind() == io::ErrorKind::NotFound => return Err(127.into()),
|
||||
Err(_) => return Err(126.into()),
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/expand.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
unicode-width = "0.1.5"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use std::fs::File;
|
||||
use std::io::{stdin, stdout, BufRead, BufReader, BufWriter, Read, Write};
|
||||
use std::str::from_utf8;
|
||||
|
@ -176,13 +176,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
expand(&Options::new(&matches)).map_err_context(|| "failed to write output".to_string())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.after_help(LONG_HELP)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::INITIAL)
|
||||
.long(options::INITIAL)
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/expr.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
num-bigint = "0.4.0"
|
||||
num-traits = "0.2.14"
|
||||
onig = { version = "~6.3", default-features = false }
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
//* For the full copyright and license information, please view the LICENSE
|
||||
//* file that was distributed with this source code.
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use uucore::error::{UResult, USimpleError};
|
||||
use uucore::InvalidEncodingHandling;
|
||||
|
||||
|
@ -19,12 +19,12 @@ static USAGE: &str = r#"
|
|||
expr [EXPRESSION]
|
||||
expr [OPTIONS]"#;
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(USAGE)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(VERSION)
|
||||
.long(VERSION)
|
||||
|
|
|
@ -65,7 +65,7 @@ impl Token {
|
|||
}
|
||||
}
|
||||
fn is_a_close_paren(&self) -> bool {
|
||||
matches!(*self, Token::ParClose)
|
||||
matches!(*self, Self::ParClose)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
num-traits = "0.2.13" # used in src/numerics.rs, which is included by build.rs
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
coz = { version = "0.1.3", optional = true }
|
||||
num-traits = "0.2.13" # Needs at least version 0.2.13 for "OverflowingAdd"
|
||||
rand = { version = "0.8", features = ["small_rng"] }
|
||||
|
|
|
@ -14,7 +14,7 @@ use std::fmt::Write as FmtWrite;
|
|||
use std::io::{self, stdin, stdout, BufRead, Write};
|
||||
|
||||
mod factor;
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
pub use factor::*;
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::UResult;
|
||||
|
@ -77,10 +77,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(Arg::new(options::NUMBER).multiple_occurrences(true))
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/false.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// *
|
||||
// * For the full copyright and license information, please view the LICENSE
|
||||
// * file that was distributed with this source code.
|
||||
use clap::{App, AppSettings, Arg};
|
||||
use clap::{Arg, Command};
|
||||
use std::io::Write;
|
||||
use uucore::error::{set_exit_code, UResult};
|
||||
|
||||
|
@ -18,7 +18,7 @@ the program will also return `1`.
|
|||
|
||||
#[uucore::main]
|
||||
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||
let mut app = uu_app();
|
||||
let mut command = uu_app();
|
||||
|
||||
// Mirror GNU options, always return `1`. In particular even the 'successful' cases of no-op,
|
||||
// and the interrupted display of help and version should return `1`. Also, we return Ok in all
|
||||
|
@ -26,11 +26,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
// and unwind through the standard library allocation handling machinery.
|
||||
set_exit_code(1);
|
||||
|
||||
if let Ok(matches) = app.try_get_matches_from_mut(args) {
|
||||
if let Ok(matches) = command.try_get_matches_from_mut(args) {
|
||||
let error = if matches.index_of("help").is_some() {
|
||||
app.print_long_help()
|
||||
command.print_long_help()
|
||||
} else if matches.index_of("version").is_some() {
|
||||
writeln!(std::io::stdout(), "{}", app.render_version())
|
||||
writeln!(std::io::stdout(), "{}", command.render_version())
|
||||
} else {
|
||||
Ok(())
|
||||
};
|
||||
|
@ -45,12 +45,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(clap::crate_version!())
|
||||
.about(ABOUT)
|
||||
// We provide our own help and version options, to ensure maximum compatibility with GNU.
|
||||
.setting(AppSettings::DisableHelpFlag | AppSettings::DisableVersionFlag)
|
||||
.disable_help_flag(true)
|
||||
.disable_version_flag(true)
|
||||
.arg(
|
||||
Arg::new("help")
|
||||
.long("help")
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/fmt.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
unicode-width = "0.1.5"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::cmp;
|
||||
use std::fs::File;
|
||||
use std::io::{stdin, stdout, Write};
|
||||
|
@ -218,12 +218,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(OPT_CROWN_MARGIN)
|
||||
.short('c')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/fold.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
// spell-checker:ignore (ToDOs) ncount routput
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::fs::File;
|
||||
use std::io::{stdin, BufRead, BufReader, Read};
|
||||
use std::path::Path;
|
||||
|
@ -63,13 +63,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
fold(&files, bytes, spaces, width)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.name(NAME)
|
||||
.version(crate_version!())
|
||||
.override_usage(format_usage(USAGE))
|
||||
.about(SUMMARY)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::BYTES)
|
||||
.long(options::BYTES)
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/groups.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "process"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -26,7 +26,7 @@ use uucore::{
|
|||
format_usage,
|
||||
};
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
|
||||
mod options {
|
||||
pub const USERS: &str = "USERNAME";
|
||||
|
@ -50,9 +50,9 @@ impl UError for GroupsError {}
|
|||
impl Display for GroupsError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
match self {
|
||||
GroupsError::GetGroupsFailed => write!(f, "failed to fetch groups"),
|
||||
GroupsError::GroupNotFound(gid) => write!(f, "cannot find name for group ID {}", gid),
|
||||
GroupsError::UserNotFound(user) => write!(f, "{}: no such user", user.quote()),
|
||||
Self::GetGroupsFailed => write!(f, "failed to fetch groups"),
|
||||
Self::GroupNotFound(gid) => write!(f, "cannot find name for group ID {}", gid),
|
||||
Self::UserNotFound(user) => write!(f, "{}: no such user", user.quote()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -102,12 +102,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::USERS)
|
||||
.multiple_occurrences(true)
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/hashsum.rs"
|
|||
|
||||
[dependencies]
|
||||
digest = "0.10.1"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
hex = "0.4.3"
|
||||
memchr = "2"
|
||||
md-5 = "0.10.1"
|
||||
|
|
|
@ -274,7 +274,7 @@ mod tests {
|
|||
use crate::digest::DigestWriter;
|
||||
|
||||
// Writing "\r" in one call to `write()`, and then "\n" in another.
|
||||
let mut digest = Box::new(md5::Context::new()) as Box<dyn Digest>;
|
||||
let mut digest = Box::new(md5::Md5::new()) as Box<dyn Digest>;
|
||||
let mut writer_crlf = DigestWriter::new(&mut digest, false);
|
||||
writer_crlf.write_all(&[b'\r']).unwrap();
|
||||
writer_crlf.write_all(&[b'\n']).unwrap();
|
||||
|
@ -282,7 +282,7 @@ mod tests {
|
|||
let result_crlf = digest.result_str();
|
||||
|
||||
// We expect "\r\n" to be replaced with "\n" in text mode on Windows.
|
||||
let mut digest = Box::new(md5::Context::new()) as Box<dyn Digest>;
|
||||
let mut digest = Box::new(md5::Md5::new()) as Box<dyn Digest>;
|
||||
let mut writer_lf = DigestWriter::new(&mut digest, false);
|
||||
writer_lf.write_all(&[b'\n']).unwrap();
|
||||
writer_lf.finalize();
|
||||
|
|
|
@ -20,7 +20,7 @@ mod digest;
|
|||
use self::digest::Digest;
|
||||
use self::digest::DigestWriter;
|
||||
|
||||
use clap::{App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{Arg, ArgMatches, Command};
|
||||
use hex::encode;
|
||||
use md5::Md5;
|
||||
use regex::Regex;
|
||||
|
@ -297,13 +297,13 @@ pub fn uumain(mut args: impl uucore::Args) -> UResult<()> {
|
|||
// Default binary in Windows, text mode otherwise
|
||||
let binary_flag_default = cfg!(windows);
|
||||
|
||||
let app = uu_app(&binary_name);
|
||||
let command = uu_app(&binary_name);
|
||||
|
||||
// FIXME: this should use try_get_matches_from() and crash!(), but at the moment that just
|
||||
// causes "error: " to be printed twice (once from crash!() and once from clap). With
|
||||
// the current setup, the name of the utility is not printed, but I think this is at
|
||||
// least somewhat better from a user's perspective.
|
||||
let matches = app.get_matches_from(args);
|
||||
let matches = command.get_matches_from(args);
|
||||
|
||||
let (name, algo, bits) = detect_algo(&binary_name, &matches);
|
||||
|
||||
|
@ -340,7 +340,7 @@ pub fn uumain(mut args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app_common<'a>() -> App<'a> {
|
||||
pub fn uu_app_common<'a>() -> Command<'a> {
|
||||
#[cfg(windows)]
|
||||
const BINARY_HELP: &str = "read in binary mode (default)";
|
||||
#[cfg(not(windows))]
|
||||
|
@ -349,10 +349,10 @@ pub fn uu_app_common<'a>() -> App<'a> {
|
|||
const TEXT_HELP: &str = "read in text mode";
|
||||
#[cfg(not(windows))]
|
||||
const TEXT_HELP: &str = "read in text mode (default)";
|
||||
App::new(uucore::util_name())
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about("Compute and check message digests.")
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new("binary")
|
||||
.short('b')
|
||||
|
@ -419,8 +419,8 @@ pub fn uu_app_common<'a>() -> App<'a> {
|
|||
)
|
||||
}
|
||||
|
||||
pub fn uu_app_custom<'a>() -> App<'a> {
|
||||
let mut app = uu_app_common();
|
||||
pub fn uu_app_custom<'a>() -> Command<'a> {
|
||||
let mut command = uu_app_common();
|
||||
let algorithms = &[
|
||||
("md5", "work with MD5"),
|
||||
("sha1", "work with SHA1"),
|
||||
|
@ -446,14 +446,14 @@ pub fn uu_app_custom<'a>() -> App<'a> {
|
|||
];
|
||||
|
||||
for (name, desc) in algorithms {
|
||||
app = app.arg(Arg::new(*name).long(name).help(*desc));
|
||||
command = command.arg(Arg::new(*name).long(name).help(*desc));
|
||||
}
|
||||
app
|
||||
command
|
||||
}
|
||||
|
||||
// hashsum is handled differently in build.rs, therefore this is not the same
|
||||
// as in other utilities.
|
||||
fn uu_app<'a>(binary_name: &str) -> App<'a> {
|
||||
fn uu_app<'a>(binary_name: &str) -> Command<'a> {
|
||||
if !is_custom_binary(binary_name) {
|
||||
uu_app_custom()
|
||||
} else {
|
||||
|
@ -473,8 +473,8 @@ impl UError for HashsumError {}
|
|||
impl std::fmt::Display for HashsumError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
match self {
|
||||
HashsumError::InvalidRegex => write!(f, "invalid regular expression"),
|
||||
HashsumError::InvalidFormat => Ok(()),
|
||||
Self::InvalidRegex => write!(f, "invalid regular expression"),
|
||||
Self::InvalidFormat => Ok(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/head.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
memchr = "2"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["ringbuffer", "lines"] }
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
// spell-checker:ignore (vars) zlines BUFWRITER seekable
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use std::convert::{TryFrom, TryInto};
|
||||
use std::ffi::OsString;
|
||||
use std::io::{self, BufWriter, ErrorKind, Read, Seek, SeekFrom, Write};
|
||||
|
@ -41,12 +41,12 @@ mod take;
|
|||
use take::take_all_but;
|
||||
use take::take_lines;
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::BYTES_NAME)
|
||||
.short('c')
|
||||
|
|
|
@ -15,8 +15,8 @@ edition = "2018"
|
|||
path = "src/hostid.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.42"
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.121"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
// spell-checker:ignore (ToDO) gethostid
|
||||
|
||||
use clap::{crate_version, App, AppSettings};
|
||||
use clap::{crate_version, Command};
|
||||
use libc::c_long;
|
||||
use uucore::{error::UResult, format_usage};
|
||||
|
||||
|
@ -26,12 +26,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(SUMMARY)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
}
|
||||
|
||||
fn hostid() {
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/hostname.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
hostname = { version = "0.3", features = ["set"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["wide"] }
|
||||
winapi = { version="0.3", features=["sysinfoapi", "winsock2"] }
|
||||
|
|
|
@ -11,7 +11,7 @@ use std::collections::hash_set::HashSet;
|
|||
use std::net::ToSocketAddrs;
|
||||
use std::str;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
|
||||
use uucore::{
|
||||
error::{FromIo, UResult},
|
||||
|
@ -71,12 +71,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(OPT_DOMAIN)
|
||||
.short('d')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/id.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["entries", "process"] }
|
||||
selinux = { version="0.2", optional = true }
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::ffi::CStr;
|
||||
use uucore::display::Quotable;
|
||||
use uucore::entries::{self, Group, Locate, Passwd};
|
||||
|
@ -341,12 +341,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::OPT_AUDIT)
|
||||
.short('A')
|
||||
|
|
|
@ -18,7 +18,7 @@ edition = "2018"
|
|||
path = "src/install.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
filetime = "0.2"
|
||||
file_diff = "1.0.0"
|
||||
libc = ">= 0.2"
|
||||
|
|
|
@ -12,7 +12,7 @@ mod mode;
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
|
||||
use clap::{crate_version, Arg, ArgMatches, Command};
|
||||
use file_diff::diff;
|
||||
use filetime::{set_file_times, FileTime};
|
||||
use uucore::backup_control::{self, BackupMode};
|
||||
|
@ -30,7 +30,7 @@ use std::fs;
|
|||
use std::fs::File;
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
use std::process;
|
||||
|
||||
const DEFAULT_MODE: u32 = 0o755;
|
||||
const DEFAULT_STRIP_PROGRAM: &str = "strip";
|
||||
|
@ -188,12 +188,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
backup_control::arguments::backup()
|
||||
)
|
||||
|
@ -585,7 +585,7 @@ fn copy(from: &Path, to: &Path, b: &Behavior) -> UResult<()> {
|
|||
}
|
||||
|
||||
if b.strip && cfg!(not(windows)) {
|
||||
match Command::new(&b.strip_program).arg(to).output() {
|
||||
match process::Command::new(&b.strip_program).arg(to).output() {
|
||||
Ok(o) => {
|
||||
if !o.status.success() {
|
||||
return Err(InstallError::StripProgramFailed(
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/join.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
memchr = "2"
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use memchr::{memchr3_iter, memchr_iter};
|
||||
use std::cmp::Ordering;
|
||||
use std::convert::From;
|
||||
|
@ -697,8 +697,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(NAME)
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(NAME)
|
||||
.version(crate_version!())
|
||||
.about(
|
||||
"For each pair of input lines with identical join fields, write a line to
|
||||
|
@ -706,7 +706,7 @@ standard output. The default join field is the first, delimited by blanks.
|
|||
|
||||
When FILE1 or FILE2 (not both) is -, read standard input.",
|
||||
)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new("a")
|
||||
.short('a')
|
||||
|
|
|
@ -15,8 +15,8 @@ edition = "2018"
|
|||
path = "src/kill.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.42"
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.121"
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["signals"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use libc::{c_int, pid_t};
|
||||
use std::io::Error;
|
||||
use uucore::display::Quotable;
|
||||
|
@ -78,12 +78,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::LIST)
|
||||
.short('l')
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/link.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// *
|
||||
// * For the full copyright and license information, please view the LICENSE
|
||||
// * file that was distributed with this source code.
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use std::fs::hard_link;
|
||||
use std::path::Path;
|
||||
use uucore::display::Quotable;
|
||||
|
@ -33,12 +33,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
.map_err_context(|| format!("cannot create link {} to {}", new.quote(), old.quote()))
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::FILES)
|
||||
.hide(true)
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/ln.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore", features=["fs"] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use uucore::display::Quotable;
|
||||
use uucore::error::{UError, UResult};
|
||||
use uucore::format_usage;
|
||||
|
@ -173,12 +173,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
exec(&paths[..], &settings)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.about(ABOUT)
|
||||
.override_usage(format_usage(USAGE))
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(backup_control::arguments::backup())
|
||||
.arg(backup_control::arguments::backup_no_args())
|
||||
// TODO: opts.arg(
|
||||
|
|
|
@ -15,8 +15,8 @@ edition = "2018"
|
|||
path = "src/logname.rs"
|
||||
|
||||
[dependencies]
|
||||
libc = "0.2.42"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo"] }
|
||||
libc = "0.2.121"
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo"] }
|
||||
uucore = { version=">=0.0.11", package="uucore", path="../../uucore" }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#[macro_use]
|
||||
extern crate uucore;
|
||||
|
||||
use clap::{crate_version, App, AppSettings};
|
||||
use clap::{crate_version, Command};
|
||||
use std::ffi::CStr;
|
||||
use uucore::error::UResult;
|
||||
use uucore::InvalidEncodingHandling;
|
||||
|
@ -51,10 +51,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.override_usage(uucore::execution_phrase())
|
||||
.about(SUMMARY)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/ls.rs"
|
|||
|
||||
[dependencies]
|
||||
chrono = "0.4.19"
|
||||
clap = { version = "3.0", features = ["wrap_help", "cargo", "env"] }
|
||||
clap = { version = "3.1", features = ["wrap_help", "cargo", "env"] }
|
||||
unicode-width = "0.1.8"
|
||||
number_prefix = "0.4"
|
||||
term_grid = "0.1.5"
|
||||
|
|
|
@ -15,7 +15,7 @@ extern crate lazy_static;
|
|||
|
||||
mod quoting_style;
|
||||
|
||||
use clap::{crate_version, App, AppSettings, Arg};
|
||||
use clap::{crate_version, Arg, Command};
|
||||
use glob::Pattern;
|
||||
use lscolors::LsColors;
|
||||
use number_prefix::NumberPrefix;
|
||||
|
@ -116,6 +116,7 @@ pub mod options {
|
|||
pub static DIR_ARGS: &str = "dereference-command-line-symlink-to-dir";
|
||||
}
|
||||
|
||||
pub static HELP: &str = "help";
|
||||
pub static QUOTING_STYLE: &str = "quoting-style";
|
||||
pub static HIDE_CONTROL_CHARS: &str = "hide-control-chars";
|
||||
pub static SHOW_CONTROL_CHARS: &str = "show-control-chars";
|
||||
|
@ -782,9 +783,9 @@ impl Config {
|
|||
|
||||
#[uucore::main]
|
||||
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||
let app = uu_app();
|
||||
let command = uu_app();
|
||||
|
||||
let matches = app.get_matches_from(args);
|
||||
let matches = command.get_matches_from(args);
|
||||
|
||||
let config = Config::from(&matches)?;
|
||||
|
||||
|
@ -796,8 +797,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||
list(locs, &config)
|
||||
}
|
||||
|
||||
pub fn uu_app<'a>() -> App<'a> {
|
||||
App::new(uucore::util_name())
|
||||
pub fn uu_app<'a>() -> Command<'a> {
|
||||
Command::new(uucore::util_name())
|
||||
.version(crate_version!())
|
||||
.override_usage(format_usage(USAGE))
|
||||
.about(
|
||||
|
@ -805,7 +806,12 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
the command line, expect that it will ignore files and directories \
|
||||
whose names start with '.'.",
|
||||
)
|
||||
.setting(AppSettings::InferLongArgs)
|
||||
.infer_long_args(true)
|
||||
.arg(
|
||||
Arg::new(options::HELP)
|
||||
.long(options::HELP)
|
||||
.help("Print help information.")
|
||||
)
|
||||
// Format arguments
|
||||
.arg(
|
||||
Arg::new(options::FORMAT)
|
||||
|
@ -1196,12 +1202,18 @@ pub fn uu_app<'a>() -> App<'a> {
|
|||
Arg::new(options::files::ALL)
|
||||
.short('a')
|
||||
.long(options::files::ALL)
|
||||
// Overrides -A (as the order matters)
|
||||
.overrides_with(options::files::ALMOST_ALL)
|
||||
.multiple_occurrences(true)
|
||||
.help("Do not ignore hidden files (files with names that start with '.')."),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::files::ALMOST_ALL)
|
||||
.short('A')
|
||||
.long(options::files::ALMOST_ALL)
|
||||
// Overrides -a (as the order matters)
|
||||
.overrides_with(options::files::ALL)
|
||||
.multiple_occurrences(true)
|
||||
.help(
|
||||
"In a directory, do not ignore all file names that start with '.', \
|
||||
only ignore '.' and '..'.",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue