1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

Merge branch 'main' into split-gnu-test-fail.sh

This commit is contained in:
Yury Zhytkou 2023-09-05 17:22:31 -04:00 committed by GitHub
commit e0b000a3bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 69 additions and 133 deletions

View file

@ -1,2 +1,2 @@
msrv = "1.64.0" msrv = "1.70.0"
cognitive-complexity-threshold = 10 cognitive-complexity-threshold = 10

View file

@ -11,7 +11,7 @@ env:
PROJECT_NAME: coreutils PROJECT_NAME: coreutils
PROJECT_DESC: "Core universal (cross-platform) utilities" PROJECT_DESC: "Core universal (cross-platform) utilities"
PROJECT_AUTH: "uutils" PROJECT_AUTH: "uutils"
RUST_MIN_SRV: "1.64.0" RUST_MIN_SRV: "1.70.0"
# * style job configuration # * style job configuration
STYLE_FAIL_ON_FAULT: true ## (bool) fail the build if a style job contains a fault (error or warning); may be overridden on a per-job basis STYLE_FAIL_ON_FAULT: true ## (bool) fail the build if a style job contains a fault (error or warning); may be overridden on a per-job basis
@ -30,7 +30,7 @@ jobs:
name: Style/cargo-deny name: Style/cargo-deny
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v1 - uses: EmbarkStudios/cargo-deny-action@v1
style_deps: style_deps:
@ -47,7 +47,7 @@ jobs:
- { os: macos-latest , features: "feat_Tier1,feat_require_unix,feat_require_unix_utmpx" } - { os: macos-latest , features: "feat_Tier1,feat_require_unix,feat_require_unix_utmpx" }
- { os: windows-latest , features: feat_os_windows } - { os: windows-latest , features: feat_os_windows }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly - uses: dtolnay/rust-toolchain@nightly
## note: requires 'nightly' toolchain b/c `cargo-udeps` uses the `rustc` '-Z save-analysis' option ## note: requires 'nightly' toolchain b/c `cargo-udeps` uses the `rustc` '-Z save-analysis' option
## * ... ref: <https://github.com/est31/cargo-udeps/issues/73> ## * ... ref: <https://github.com/est31/cargo-udeps/issues/73>
@ -91,7 +91,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: stable toolchain: stable
@ -131,7 +131,7 @@ jobs:
env: env:
RUN_FOR: 60 RUN_FOR: 60
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly - uses: dtolnay/rust-toolchain@nightly
- name: Install `cargo-fuzz` - name: Install `cargo-fuzz`
run: cargo install cargo-fuzz run: cargo install cargo-fuzz
@ -182,7 +182,7 @@ jobs:
- { os: macos-latest , features: feat_os_macos } - { os: macos-latest , features: feat_os_macos }
- { os: windows-latest , features: feat_os_windows } - { os: windows-latest , features: feat_os_windows }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: stable toolchain: stable
@ -238,7 +238,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Initialize workflow variables - name: Initialize workflow variables
id: vars id: vars
shell: bash shell: bash
@ -292,7 +292,7 @@ jobs:
# - { os: macos-latest , features: feat_os_macos } # - { os: macos-latest , features: feat_os_macos }
# - { os: windows-latest , features: feat_os_windows } # - { os: windows-latest , features: feat_os_windows }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: stable toolchain: stable
@ -345,7 +345,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ env.RUST_MIN_SRV }} toolchain: ${{ env.RUST_MIN_SRV }}
@ -413,7 +413,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable - uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: "`cargo update` testing" - name: "`cargo update` testing"
@ -436,7 +436,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable - uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@nextest - uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
@ -490,7 +490,7 @@ jobs:
- { os: macos-latest , features: feat_os_macos } - { os: macos-latest , features: feat_os_macos }
- { os: windows-latest , features: feat_os_windows } - { os: windows-latest , features: feat_os_windows }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable - uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@nextest - uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
@ -517,7 +517,7 @@ jobs:
- { os: macos-latest , features: feat_os_macos } - { os: macos-latest , features: feat_os_macos }
- { os: windows-latest , features: feat_os_windows } - { os: windows-latest , features: feat_os_windows }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly - uses: dtolnay/rust-toolchain@nightly
- uses: taiki-e/install-action@nextest - uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
@ -541,7 +541,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable - uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Run sccache-cache - name: Run sccache-cache
@ -661,7 +661,7 @@ jobs:
- { os: windows-latest , target: x86_64-pc-windows-gnu , features: feat_os_windows } ## note: requires rust >= 1.43.0 to link correctly - { os: windows-latest , target: x86_64-pc-windows-gnu , features: feat_os_windows } ## note: requires rust >= 1.43.0 to link correctly
- { os: windows-latest , target: x86_64-pc-windows-msvc , features: feat_os_windows } - { os: windows-latest , target: x86_64-pc-windows-msvc , features: feat_os_windows }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ env.RUST_MIN_SRV }} toolchain: ${{ env.RUST_MIN_SRV }}
@ -920,7 +920,7 @@ jobs:
run: | run: |
## VARs setup ## VARs setup
echo "TEST_SUMMARY_FILE=busybox-result.json" >> $GITHUB_OUTPUT echo "TEST_SUMMARY_FILE=busybox-result.json" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Run sccache-cache - name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3 uses: mozilla-actions/sccache-action@v0.0.3
@ -1000,7 +1000,7 @@ jobs:
outputs() { step_id="${{ github.action }}"; for var in "$@" ; do echo steps.${step_id}.outputs.${var}="${!var}"; echo "${var}=${!var}" >> $GITHUB_OUTPUT; done; } outputs() { step_id="${{ github.action }}"; for var in "$@" ; do echo steps.${step_id}.outputs.${var}="${!var}"; echo "${var}=${!var}" >> $GITHUB_OUTPUT; done; }
TEST_SUMMARY_FILE="toybox-result.json" TEST_SUMMARY_FILE="toybox-result.json"
outputs TEST_SUMMARY_FILE outputs TEST_SUMMARY_FILE
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ env.RUST_MIN_SRV }} toolchain: ${{ env.RUST_MIN_SRV }}
@ -1071,7 +1071,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Clone repository - name: Clone repository
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Check - name: Check
run: npx --yes @taplo/cli fmt --check run: npx --yes @taplo/cli fmt --check
@ -1091,7 +1091,7 @@ jobs:
- { os: macos-latest , features: macos, toolchain: nightly } - { os: macos-latest , features: macos, toolchain: nightly }
- { os: windows-latest , features: windows, toolchain: nightly-x86_64-pc-windows-gnu } - { os: windows-latest , features: windows, toolchain: nightly-x86_64-pc-windows-gnu }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
with: with:
toolchain: ${{ matrix.job.toolchain }} toolchain: ${{ matrix.job.toolchain }}

View file

@ -29,7 +29,7 @@ jobs:
permissions: permissions:
contents: read contents: read
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Run ShellCheck - name: Run ShellCheck
uses: ludeeus/action-shellcheck@master uses: ludeeus/action-shellcheck@master
env: env:
@ -50,7 +50,7 @@ jobs:
contents: write contents: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup shfmt - name: Setup shfmt
uses: mfinelli/setup-shfmt@v2 uses: mfinelli/setup-shfmt@v2
- name: Run shfmt - name: Run shfmt

View file

@ -26,7 +26,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Initialize job variables - name: Initialize job variables
id: vars id: vars
shell: bash shell: bash
@ -85,7 +85,7 @@ jobs:
job: job:
- { os: ubuntu-latest , features: feat_os_unix } - { os: ubuntu-latest , features: feat_os_unix }
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Initialize job variables - name: Initialize job variables
id: vars id: vars
shell: bash shell: bash

View file

@ -55,7 +55,7 @@ jobs:
TEST_FULL_SUMMARY_FILE='gnu-full-result.json' TEST_FULL_SUMMARY_FILE='gnu-full-result.json'
outputs SUITE_LOG_FILE ROOT_SUITE_LOG_FILE TEST_FILESET_PREFIX TEST_FILESET_SUFFIX TEST_LOGS_GLOB TEST_SUMMARY_FILE TEST_FULL_SUMMARY_FILE outputs SUITE_LOG_FILE ROOT_SUITE_LOG_FILE TEST_FILESET_PREFIX TEST_FILESET_SUFFIX TEST_LOGS_GLOB TEST_SUMMARY_FILE TEST_FULL_SUMMARY_FILE
- name: Checkout code (uutil) - name: Checkout code (uutil)
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
path: '${{ steps.vars.outputs.path_UUTILS }}' path: '${{ steps.vars.outputs.path_UUTILS }}'
- uses: dtolnay/rust-toolchain@master - uses: dtolnay/rust-toolchain@master
@ -66,7 +66,7 @@ jobs:
with: with:
workspaces: "./${{ steps.vars.outputs.path_UUTILS }} -> target" workspaces: "./${{ steps.vars.outputs.path_UUTILS }} -> target"
- name: Checkout code (GNU coreutils) - name: Checkout code (GNU coreutils)
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
repository: 'coreutils/coreutils' repository: 'coreutils/coreutils'
path: '${{ steps.vars.outputs.path_GNU }}' path: '${{ steps.vars.outputs.path_GNU }}'
@ -307,11 +307,11 @@ jobs:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:
- name: Checkout code uutil - name: Checkout code uutil
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
path: 'uutils' path: 'uutils'
- name: Checkout GNU coreutils - name: Checkout GNU coreutils
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
repository: 'coreutils/coreutils' repository: 'coreutils/coreutils'
path: 'gnu' path: 'gnu'

View file

@ -26,7 +26,7 @@ jobs:
env: env:
TERMUX: v0.118.0 TERMUX: v0.118.0
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Restore AVD cache - name: Restore AVD cache
uses: actions/cache/restore@v3 uses: actions/cache/restore@v3
id: avd-cache id: avd-cache

View file

@ -30,7 +30,7 @@ jobs:
SCCACHE_GHA_ENABLED: "true" SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache" RUSTC_WRAPPER: "sccache"
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Run sccache-cache - name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3 uses: mozilla-actions/sccache-action@v0.0.3
@ -120,7 +120,7 @@ jobs:
SCCACHE_GHA_ENABLED: "true" SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache" RUSTC_WRAPPER: "sccache"
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Run sccache-cache - name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3 uses: mozilla-actions/sccache-action@v0.0.3

51
Cargo.lock generated
View file

@ -34,16 +34,15 @@ dependencies = [
[[package]] [[package]]
name = "anstream" name = "anstream"
version = "0.3.2" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"anstyle-parse", "anstyle-parse",
"anstyle-query", "anstyle-query",
"anstyle-wincon", "anstyle-wincon",
"colorchoice", "colorchoice",
"is-terminal",
"utf8parse", "utf8parse",
] ]
@ -73,9 +72,9 @@ dependencies = [
[[package]] [[package]]
name = "anstyle-wincon" name = "anstyle-wincon"
version = "1.0.1" version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"windows-sys 0.48.0", "windows-sys 0.48.0",
@ -263,32 +262,31 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.3.21" version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd" checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
] ]
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.3.21" version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa" checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08"
dependencies = [ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",
"clap_lex", "clap_lex",
"once_cell",
"strsim", "strsim",
"terminal_size", "terminal_size",
] ]
[[package]] [[package]]
name = "clap_complete" name = "clap_complete"
version = "4.3.0" version = "4.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a04ddfaacc3bc9e6ea67d024575fafc2a813027cf374b8f24f7bc233c6b6be12" checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5"
dependencies = [ dependencies = [
"clap", "clap",
] ]
@ -389,7 +387,6 @@ dependencies = [
"filetime", "filetime",
"glob", "glob",
"hex-literal", "hex-literal",
"is-terminal",
"libc", "libc",
"nix", "nix",
"once_cell", "once_cell",
@ -1030,10 +1027,11 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]] [[package]]
name = "half" name = "half"
version = "2.2.1" version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
dependencies = [ dependencies = [
"cfg-if",
"crunchy", "crunchy",
] ]
@ -1138,17 +1136,6 @@ dependencies = [
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
[[package]]
name = "is-terminal"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
dependencies = [
"hermit-abi",
"rustix 0.38.8",
"windows-sys 0.48.0",
]
[[package]] [[package]]
name = "itertools" name = "itertools"
version = "0.11.0" version = "0.11.0"
@ -2311,7 +2298,6 @@ name = "uu_cat"
version = "0.0.21" version = "0.0.21"
dependencies = [ dependencies = [
"clap", "clap",
"is-terminal",
"nix", "nix",
"thiserror", "thiserror",
"uucore", "uucore",
@ -2411,7 +2397,6 @@ version = "0.0.21"
dependencies = [ dependencies = [
"bstr", "bstr",
"clap", "clap",
"is-terminal",
"memchr", "memchr",
"uucore", "uucore",
] ]
@ -2679,7 +2664,6 @@ dependencies = [
"chrono", "chrono",
"clap", "clap",
"glob", "glob",
"is-terminal",
"lscolors", "lscolors",
"number_prefix", "number_prefix",
"once_cell", "once_cell",
@ -2732,7 +2716,6 @@ version = "0.0.21"
dependencies = [ dependencies = [
"clap", "clap",
"crossterm", "crossterm",
"is-terminal",
"nix", "nix",
"unicode-segmentation", "unicode-segmentation",
"unicode-width", "unicode-width",
@ -2773,7 +2756,6 @@ name = "uu_nohup"
version = "0.0.21" version = "0.0.21"
dependencies = [ dependencies = [
"clap", "clap",
"is-terminal",
"libc", "libc",
"uucore", "uucore",
] ]
@ -3072,7 +3054,6 @@ version = "0.0.21"
dependencies = [ dependencies = [
"clap", "clap",
"fundu", "fundu",
"is-terminal",
"libc", "libc",
"memchr", "memchr",
"notify", "notify",
@ -3162,7 +3143,6 @@ name = "uu_tty"
version = "0.0.21" version = "0.0.21"
dependencies = [ dependencies = [
"clap", "clap",
"is-terminal",
"nix", "nix",
"uucore", "uucore",
] ]
@ -3331,12 +3311,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]] [[package]]
name = "walkdir" name = "walkdir"
version = "2.3.2" version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [ dependencies = [
"same-file", "same-file",
"winapi",
"winapi-util", "winapi-util",
] ]

View file

@ -16,7 +16,7 @@ repository = "https://github.com/uutils/coreutils"
readme = "README.md" readme = "README.md"
keywords = ["coreutils", "uutils", "cross-platform", "cli", "utility"] keywords = ["coreutils", "uutils", "cross-platform", "cli", "utility"]
categories = ["command-line-utilities"] categories = ["command-line-utilities"]
rust-version = "1.64.0" rust-version = "1.70.0"
edition = "2021" edition = "2021"
build = "build.rs" build = "build.rs"
@ -268,8 +268,8 @@ chrono = { version = "^0.4.28", default-features = false, features = [
"alloc", "alloc",
"clock", "clock",
] } ] }
clap = { version = "4.3", features = ["wrap_help", "cargo"] } clap = { version = "4.4", features = ["wrap_help", "cargo"] }
clap_complete = "4.3" clap_complete = "4.4"
clap_mangen = "0.2" clap_mangen = "0.2"
compare = "0.1.0" compare = "0.1.0"
coz = { version = "0.1.3" } coz = { version = "0.1.3" }
@ -284,9 +284,8 @@ fts-sys = "0.2"
fundu = "2.0.0" fundu = "2.0.0"
gcd = "2.3" gcd = "2.3"
glob = "0.3.1" glob = "0.3.1"
half = "2.2" half = "2.3"
indicatif = "0.17" indicatif = "0.17"
is-terminal = "0.4.9"
itertools = "0.11.0" itertools = "0.11.0"
libc = "0.2.147" libc = "0.2.147"
lscolors = { version = "0.15.0", default-features = false, features = [ lscolors = { version = "0.15.0", default-features = false, features = [
@ -328,7 +327,7 @@ time = { version = "0.3" }
unicode-segmentation = "1.10.1" unicode-segmentation = "1.10.1"
unicode-width = "0.1.10" unicode-width = "0.1.10"
utf-8 = "0.7.6" utf-8 = "0.7.6"
walkdir = "2.3" walkdir = "2.4"
winapi-util = "0.1.5" winapi-util = "0.1.5"
windows-sys = { version = "0.48.0", default-features = false } windows-sys = { version = "0.48.0", default-features = false }
xattr = "1.0.1" xattr = "1.0.1"
@ -491,7 +490,6 @@ time = { workspace = true, features = ["local-offset"] }
unindent = "0.2" unindent = "0.2"
uucore = { workspace = true, features = ["entries", "process", "signals"] } uucore = { workspace = true, features = ["entries", "process", "signals"] }
walkdir = { workspace = true } walkdir = { workspace = true }
is-terminal = { workspace = true }
hex-literal = "0.4.1" hex-literal = "0.4.1"
rstest = { workspace = true } rstest = { workspace = true }

View file

@ -14,7 +14,7 @@
[![dependency status](https://deps.rs/repo/github/uutils/coreutils/status.svg)](https://deps.rs/repo/github/uutils/coreutils) [![dependency status](https://deps.rs/repo/github/uutils/coreutils/status.svg)](https://deps.rs/repo/github/uutils/coreutils)
[![CodeCov](https://codecov.io/gh/uutils/coreutils/branch/master/graph/badge.svg)](https://codecov.io/gh/uutils/coreutils) [![CodeCov](https://codecov.io/gh/uutils/coreutils/branch/master/graph/badge.svg)](https://codecov.io/gh/uutils/coreutils)
![MSRV](https://img.shields.io/badge/MSRV-1.64.0-brightgreen) ![MSRV](https://img.shields.io/badge/MSRV-1.70.0-brightgreen)
</div> </div>
@ -71,7 +71,7 @@ the [coreutils docs](https://github.com/uutils/uutils.github.io) repository.
### Rust Version ### Rust Version
uutils follows Rust's release channels and is tested against stable, beta and uutils follows Rust's release channels and is tested against stable, beta and
nightly. The current Minimum Supported Rust Version (MSRV) is `1.64.0`. nightly. The current Minimum Supported Rust Version (MSRV) is `1.70.0`.
## Building ## Building

View file

@ -17,7 +17,6 @@ path = "src/cat.rs"
[dependencies] [dependencies]
clap = { workspace = true } clap = { workspace = true }
thiserror = { workspace = true } thiserror = { workspace = true }
is-terminal = { workspace = true }
uucore = { workspace = true, features = ["fs", "pipes"] } uucore = { workspace = true, features = ["fs", "pipes"] }
[target.'cfg(unix)'.dependencies] [target.'cfg(unix)'.dependencies]

View file

@ -7,9 +7,8 @@
// last synced with: cat (GNU coreutils) 8.13 // last synced with: cat (GNU coreutils) 8.13
use clap::{crate_version, Arg, ArgAction, Command}; use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use std::fs::{metadata, File}; use std::fs::{metadata, File};
use std::io::{self, Read, Write}; use std::io::{self, IsTerminal, Read, Write};
use thiserror::Error; use thiserror::Error;
use uucore::display::Quotable; use uucore::display::Quotable;
use uucore::error::UResult; use uucore::error::UResult;

View file

@ -19,7 +19,6 @@ clap = { workspace = true }
uucore = { workspace = true, features = ["ranges"] } uucore = { workspace = true, features = ["ranges"] }
memchr = { workspace = true } memchr = { workspace = true }
bstr = { workspace = true } bstr = { workspace = true }
is-terminal = { workspace = true }
[[bin]] [[bin]]
name = "cut" name = "cut"

View file

@ -7,9 +7,8 @@
use bstr::io::BufReadExt; use bstr::io::BufReadExt;
use clap::{crate_version, Arg, ArgAction, Command}; use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use std::fs::File; use std::fs::File;
use std::io::{stdin, stdout, BufReader, BufWriter, Read, Write}; use std::io::{stdin, stdout, BufReader, BufWriter, IsTerminal, Read, Write};
use std::path::Path; use std::path::Path;
use uucore::display::Quotable; use uucore::display::Quotable;
use uucore::error::{FromIo, UResult, USimpleError}; use uucore::error::{FromIo, UResult, USimpleError};

View file

@ -25,7 +25,6 @@ glob = { workspace = true }
lscolors = { workspace = true } lscolors = { workspace = true }
uucore = { workspace = true, features = ["entries", "fs"] } uucore = { workspace = true, features = ["entries", "fs"] }
once_cell = { workspace = true } once_cell = { workspace = true }
is-terminal = { workspace = true }
selinux = { workspace = true, optional = true } selinux = { workspace = true, optional = true }
[[bin]] [[bin]]

View file

@ -10,12 +10,11 @@ use clap::{
crate_version, Arg, ArgAction, Command, crate_version, Arg, ArgAction, Command,
}; };
use glob::{MatchOptions, Pattern}; use glob::{MatchOptions, Pattern};
use is_terminal::IsTerminal;
use lscolors::LsColors; use lscolors::LsColors;
use number_prefix::NumberPrefix; use number_prefix::NumberPrefix;
use once_cell::unsync::OnceCell; use once_cell::unsync::OnceCell;
use std::collections::HashSet;
use std::num::IntErrorKind; use std::num::IntErrorKind;
use std::{collections::HashSet, io::IsTerminal};
#[cfg(windows)] #[cfg(windows)]
use std::os::windows::fs::MetadataExt; use std::os::windows::fs::MetadataExt;

View file

@ -18,7 +18,6 @@ path = "src/more.rs"
clap = { workspace = true } clap = { workspace = true }
uucore = { workspace = true } uucore = { workspace = true }
crossterm = { workspace = true } crossterm = { workspace = true }
is-terminal = { workspace = true }
unicode-width = { workspace = true } unicode-width = { workspace = true }
unicode-segmentation = { workspace = true } unicode-segmentation = { workspace = true }

View file

@ -7,7 +7,7 @@
use std::{ use std::{
fs::File, fs::File,
io::{stdin, stdout, BufReader, Read, Stdout, Write}, io::{stdin, stdout, BufReader, IsTerminal, Read, Stdout, Write},
path::Path, path::Path,
time::Duration, time::Duration,
}; };
@ -22,7 +22,6 @@ use crossterm::{
terminal::{self, Clear, ClearType}, terminal::{self, Clear, ClearType},
}; };
use is_terminal::IsTerminal;
use unicode_segmentation::UnicodeSegmentation; use unicode_segmentation::UnicodeSegmentation;
use unicode_width::UnicodeWidthStr; use unicode_width::UnicodeWidthStr;
use uucore::display::Quotable; use uucore::display::Quotable;

View file

@ -17,7 +17,6 @@ path = "src/nohup.rs"
[dependencies] [dependencies]
clap = { workspace = true } clap = { workspace = true }
libc = { workspace = true } libc = { workspace = true }
is-terminal = { workspace = true }
uucore = { workspace = true, features = ["fs"] } uucore = { workspace = true, features = ["fs"] }
[[bin]] [[bin]]

View file

@ -6,14 +6,13 @@
// spell-checker:ignore (ToDO) execvp SIGHUP cproc vprocmgr cstrs homeout // spell-checker:ignore (ToDO) execvp SIGHUP cproc vprocmgr cstrs homeout
use clap::{crate_version, Arg, ArgAction, Command}; use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use libc::{c_char, dup2, execvp, signal}; use libc::{c_char, dup2, execvp, signal};
use libc::{SIGHUP, SIG_IGN}; use libc::{SIGHUP, SIG_IGN};
use std::env; use std::env;
use std::ffi::CString; use std::ffi::CString;
use std::fmt::{Display, Formatter}; use std::fmt::{Display, Formatter};
use std::fs::{File, OpenOptions}; use std::fs::{File, OpenOptions};
use std::io::Error; use std::io::{Error, IsTerminal};
use std::os::unix::prelude::*; use std::os::unix::prelude::*;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use uucore::display::Quotable; use uucore::display::Quotable;

View file

@ -22,7 +22,6 @@ memchr = { workspace = true }
notify = { workspace = true } notify = { workspace = true }
uucore = { workspace = true } uucore = { workspace = true }
same-file = { workspace = true } same-file = { workspace = true }
is-terminal = { workspace = true }
fundu = { workspace = true } fundu = { workspace = true }
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]

View file

@ -10,9 +10,9 @@ use crate::{parse, platform, Quotable};
use clap::{crate_version, value_parser}; use clap::{crate_version, value_parser};
use clap::{Arg, ArgAction, ArgMatches, Command}; use clap::{Arg, ArgAction, ArgMatches, Command};
use fundu::{DurationParser, SaturatingInto}; use fundu::{DurationParser, SaturatingInto};
use is_terminal::IsTerminal;
use same_file::Handle; use same_file::Handle;
use std::ffi::OsString; use std::ffi::OsString;
use std::io::IsTerminal;
use std::time::Duration; use std::time::Duration;
use uucore::error::{UResult, USimpleError, UUsageError}; use uucore::error::{UResult, USimpleError, UUsageError};
use uucore::parse_size::{parse_size, ParseSizeError}; use uucore::parse_size::{parse_size, ParseSizeError};

View file

@ -17,7 +17,6 @@ path = "src/tty.rs"
[dependencies] [dependencies]
clap = { workspace = true } clap = { workspace = true }
nix = { workspace = true, features = ["term"] } nix = { workspace = true, features = ["term"] }
is-terminal = { workspace = true }
uucore = { workspace = true, features = ["fs"] } uucore = { workspace = true, features = ["fs"] }
[[bin]] [[bin]]

View file

@ -8,8 +8,7 @@
// spell-checker:ignore (ToDO) ttyname filedesc // spell-checker:ignore (ToDO) ttyname filedesc
use clap::{crate_version, Arg, ArgAction, Command}; use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal; use std::io::{IsTerminal, Write};
use std::io::Write;
use std::os::unix::io::AsRawFd; use std::os::unix::io::AsRawFd;
use uucore::error::{set_exit_code, UResult}; use uucore::error::{set_exit_code, UResult};
use uucore::{format_usage, help_about, help_usage}; use uucore::{format_usage, help_about, help_usage};

View file

@ -702,7 +702,7 @@ fn compute_number_width(inputs: &Inputs, settings: &Settings) -> usize {
if total == 0 { if total == 0 {
minimum_width minimum_width
} else { } else {
let total_width = (1 + ilog10_u64(total)) let total_width = (1 + total.ilog10())
.try_into() .try_into()
.expect("ilog of a u64 should fit into a usize"); .expect("ilog of a u64 should fit into a usize");
max(total_width, minimum_width) max(total_width, minimum_width)
@ -857,29 +857,3 @@ fn print_stats(
writeln!(stdout) writeln!(stdout)
} }
} }
// TODO: remove and just use usize::ilog10 once the MSRV is >= 1.67.
fn ilog10_u64(mut u: u64) -> u32 {
if u == 0 {
panic!("cannot compute log of 0")
}
let mut log = 0;
if u >= 10_000_000_000 {
log += 10;
u /= 10_000_000_000;
}
if u >= 100_000 {
log += 5;
u /= 100_000;
}
// Rust's standard library in versions >= 1.67 does something even more clever than this, but
// this should work just fine for the time being.
log + match u {
1..=9 => 0,
10..=99 => 1,
100..=999 => 2,
1000..=9999 => 3,
10000..=99999 => 4,
_ => unreachable!(),
}
}

View file

@ -58,10 +58,7 @@ fn args_into_buffer<'a>(
buf: &mut Vec<u8>, buf: &mut Vec<u8>,
i: Option<impl Iterator<Item = &'a OsString>>, i: Option<impl Iterator<Item = &'a OsString>>,
) -> Result<(), Box<dyn Error>> { ) -> Result<(), Box<dyn Error>> {
// TODO: this should be replaced with let/else once available in the MSRV. let Some(i) = i else {
let i = if let Some(i) = i {
i
} else {
buf.extend_from_slice(b"y\n"); buf.extend_from_slice(b"y\n");
return Ok(()); return Ok(());
}; };

View file

@ -3,7 +3,7 @@
// For the full copyright and license information, please view the LICENSE // For the full copyright and license information, please view the LICENSE
// file that was distributed with this source code. // file that was distributed with this source code.
use crate::common::util::TestScenario; use crate::common::util::TestScenario;
use is_terminal::IsTerminal; use std::io::IsTerminal;
#[test] #[test]
fn test_more_no_arg() { fn test_more_no_arg() {

View file

@ -1188,7 +1188,7 @@ fn test_short_combination() {
assert_eq!(at.read("x00"), "a"); assert_eq!(at.read("x00"), "a");
assert_eq!(at.read("x01"), "b"); assert_eq!(at.read("x01"), "b");
assert_eq!(at.read("x02"), "c"); assert_eq!(at.read("x02"), "c");
assert_eq!(at.file_exists("x03"), false); assert!(!at.file_exists("x03"));
} }
/// Test for the last effective suffix, ignoring all others - numeric long last /// Test for the last effective suffix, ignoring all others - numeric long last

View file

@ -19,6 +19,7 @@ path_GNU="$(readlink -fm -- "${path_GNU:-${path_UUTILS}/../gnu}")"
### ###
# On MacOS there is no system /usr/bin/timeout # On MacOS there is no system /usr/bin/timeout
# and trying to add it to /usr/bin (with symlink of copy binary) will fail unless system integrity protection is disabled (not ideal) # and trying to add it to /usr/bin (with symlink of copy binary) will fail unless system integrity protection is disabled (not ideal)
# ref: https://support.apple.com/en-us/102149 # ref: https://support.apple.com/en-us/102149
# On MacOS the Homebrew coreutils could be installed and then "sudo ln -s /opt/homebrew/bin/timeout /usr/local/bin/timeout" # On MacOS the Homebrew coreutils could be installed and then "sudo ln -s /opt/homebrew/bin/timeout /usr/local/bin/timeout"