From b886fd364c2c363c7e88c0dcf04cff0cc365d169 Mon Sep 17 00:00:00 2001 From: Darren Schroeder <343840+fdncred@users.noreply.github.com> Date: Thu, 5 Jun 2025 15:59:34 -0500 Subject: [PATCH] update nushell to use coreutils v0.1.0 crates (#15896) --- .cargo/config.toml | 8 +- Cargo.lock | 238 +++++++++++++++++---- Cargo.toml | 16 +- crates/nu-command/src/filesystem/ucp.rs | 8 +- crates/nu-command/src/filesystem/umkdir.rs | 10 +- crates/nu-command/src/filesystem/umv.rs | 6 +- 6 files changed, 226 insertions(+), 60 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index ad1e8ce860..d21d2c9139 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -30,4 +30,10 @@ rustflags = ["-C", "link-args=-stack:10000000", "-C", "target-feature=+crt-stati [target.aarch64-apple-darwin] # We can guarantee that this target will always run on a CPU with _at least_ # these capabilities, so let's optimize for them -rustflags = ["-Ctarget-cpu=apple-m1"] \ No newline at end of file +rustflags = ["-Ctarget-cpu=apple-m1"] + +# This is required for uutils/coreutils version 0.1.0 and later +# It looks like this is what they use to name their executable +# https://github.com/uutils/coreutils/blob/61bd11a55118458704c4cbbf4e628cd657238d3e/src/uucore/src/lib/lib.rs#L201-L218 +[env] +PROJECT_NAME_FOR_VERSION_STRING = "nushell" \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 502f84e313..96df442b73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -702,6 +702,19 @@ dependencies = [ "vsimd", ] +[[package]] +name = "bigdecimal" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a22f228ab7a1b23027ccc6c350b72868017af7ea8356fbdf19f8d991c690013" +dependencies = [ + "autocfg", + "libm", + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "bincode" version = "1.3.3" @@ -720,7 +733,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.11.0", + "itertools 0.13.0", "proc-macro2", "quote", "regex", @@ -985,9 +998,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -996,7 +1009,7 @@ dependencies = [ "pure-rust-locales", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1938,6 +1951,51 @@ dependencies = [ "num-traits", ] +[[package]] +name = "fluent" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8137a6d5a2c50d6b0ebfcb9aaa91a28154e0a70605f112d30cb0cd4a78670477" +dependencies = [ + "fluent-bundle", + "unic-langid", +] + +[[package]] +name = "fluent-bundle" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01203cb8918f5711e73891b347816d932046f95f54207710bda99beaeb423bf4" +dependencies = [ + "fluent-langneg", + "fluent-syntax", + "intl-memoizer", + "intl_pluralrules", + "rustc-hash 2.1.0", + "self_cell", + "smallvec", + "unic-langid", +] + +[[package]] +name = "fluent-langneg" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "fluent-syntax" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198" +dependencies = [ + "memchr", + "thiserror 2.0.12", +] + [[package]] name = "fluent-uri" version = "0.1.4" @@ -2622,7 +2680,7 @@ dependencies = [ "displaydoc", "yoke", "zerofrom", - "zerovec", + "zerovec 0.10.4", ] [[package]] @@ -2633,9 +2691,9 @@ checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ "displaydoc", "litemap", - "tinystr", + "tinystr 0.7.6", "writeable", - "zerovec", + "zerovec 0.10.4", ] [[package]] @@ -2648,8 +2706,8 @@ dependencies = [ "icu_locid", "icu_locid_transform_data", "icu_provider", - "tinystr", - "zerovec", + "tinystr 0.7.6", + "zerovec 0.10.4", ] [[package]] @@ -2673,7 +2731,7 @@ dependencies = [ "utf16_iter", "utf8_iter", "write16", - "zerovec", + "zerovec 0.10.4", ] [[package]] @@ -2693,8 +2751,8 @@ dependencies = [ "icu_locid_transform", "icu_properties_data", "icu_provider", - "tinystr", - "zerovec", + "tinystr 0.7.6", + "zerovec 0.10.4", ] [[package]] @@ -2713,11 +2771,11 @@ dependencies = [ "icu_locid", "icu_provider_macros", "stable_deref_trait", - "tinystr", + "tinystr 0.7.6", "writeable", "yoke", "zerofrom", - "zerovec", + "zerovec 0.10.4", ] [[package]] @@ -2834,6 +2892,25 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "intl-memoizer" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f" +dependencies = [ + "type-map", + "unic-langid", +] + +[[package]] +name = "intl_pluralrules" +version = "7.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" +dependencies = [ + "unic-langid", +] + [[package]] name = "inventory" version = "0.3.15" @@ -2983,9 +3060,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.168" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libflate" @@ -3477,6 +3554,18 @@ dependencies = [ "libc", ] +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -4733,9 +4822,9 @@ dependencies = [ [[package]] name = "parse_datetime" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bffd1156cebf13f681d7769924d3edfb9d9d71ba206a8d8e8e7eb9df4f4b1e7" +checksum = "2fd3830b49ee3a0dcc8fdfadc68c6354c97d00101ac1cac5b2eee25d35c42066" dependencies = [ "chrono", "nom 8.0.0", @@ -6602,6 +6691,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "self_cell" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" + [[package]] name = "semver" version = "1.0.23" @@ -7344,7 +7439,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", - "zerovec", + "zerovec 0.10.4", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec 0.11.2", ] [[package]] @@ -7558,6 +7663,15 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash 2.1.0", +] + [[package]] name = "typed-arena" version = "1.7.0" @@ -7641,6 +7755,24 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "unic-langid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05" +dependencies = [ + "unic-langid-impl", +] + +[[package]] +name = "unic-langid-impl" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" +dependencies = [ + "tinystr 0.8.1", +] + [[package]] name = "unicase" version = "2.8.0" @@ -7802,14 +7934,15 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uu_cp" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf2f3906b7896f79519055d36760095577373e40ec244f46b259f502a4a91147" +checksum = "4f03348f1609e6646274195ba7674c20ce3ff18a358649516fdbb4ad2645df41" dependencies = [ "clap", "filetime", "indicatif", "libc", + "linux-raw-sys 0.9.4", "quick-error 2.0.1", "uucore", "walkdir", @@ -7818,9 +7951,9 @@ dependencies = [ [[package]] name = "uu_mkdir" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be556a5d852f55b92bba460d7a97030a340ba4a3f4c510a8d0a893bfaf48356" +checksum = "d3f88c0d90729946efdd5e28bff263da25b08c632aecee8b5797059a23374525" dependencies = [ "clap", "uucore", @@ -7828,9 +7961,9 @@ dependencies = [ [[package]] name = "uu_mktemp" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5305fcf4f7f480e7438e19ff433ae60dea886bd528f87543029eb6b95d351afc" +checksum = "1a13a85cf62ae1292d5cfc21de90a33bb853ade4151ead38e022ce8b610d3ee5" dependencies = [ "clap", "rand 0.9.0", @@ -7841,9 +7974,9 @@ dependencies = [ [[package]] name = "uu_mv" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be214b96554e4f7aa079b26c86c3ecf1b9ea15023ca2ec62d608273d12c7049" +checksum = "2a627a8ca00422f5341ca89d4c1fd352622cdab7dd4070a675616474ee37b351" dependencies = [ "clap", "fs_extra", @@ -7856,9 +7989,9 @@ dependencies = [ [[package]] name = "uu_touch" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e58581a0245de8e3ef75b115ab29592cfb60d4851149d4951604601d14ea420" +checksum = "60e075c2a3644470352ec759be520febb1efb5fb8e448f05a0d2045d469f0e7b" dependencies = [ "chrono", "clap", @@ -7871,9 +8004,9 @@ dependencies = [ [[package]] name = "uu_uname" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324d96a21da91a81be334206ab65aad16d164d34cddeb640e1c56cd8d1854dd4" +checksum = "419f77c20ae220ee3fdf663de0600f954b5cc4f8b23e442192be73a1b45cfd03" dependencies = [ "clap", "platform-info", @@ -7882,32 +8015,34 @@ dependencies = [ [[package]] name = "uu_whoami" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee254de8b172a5978f12fe6cd9d4f2b60ea9ef1e37f0cb53bfee2c993b3e96a" +checksum = "083f92042620f07043a400e6192ddfcacdaee30ba9903f4cb86c9df11c625cc6" dependencies = [ "clap", - "libc", "uucore", "windows-sys 0.59.0", ] [[package]] name = "uucore" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f4e82877d06de779c611a3d54720f56f1e68b228fb30a5b6c66ef07e68263d" +checksum = "9032bf981784f22fcc5ddc7e74b7cf3bae3d5f44a48d2054138ed38068b9f4e0" dependencies = [ - "chrono", - "chrono-tz", + "bigdecimal", "clap", "dunce", + "fluent", + "fluent-bundle", "glob", - "iana-time-zone", "libc", - "nix 0.29.0", + "nix 0.30.1", + "num-traits", "number_prefix", "os_display", + "thiserror 2.0.12", + "unic-langid", "uucore_procs", "walkdir", "wild", @@ -7918,9 +8053,9 @@ dependencies = [ [[package]] name = "uucore_procs" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c72435859e812e602e225dea48d014abb6b1072220a8d44f2fe0565553b1f7e4" +checksum = "c933945fdac5b7779eae1fc746146e61f5b0298deb6ede002ce0b6e93e1b3bfc" dependencies = [ "proc-macro2", "quote", @@ -7929,9 +8064,9 @@ dependencies = [ [[package]] name = "uuhelp_parser" -version = "0.0.30" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb6d972f580f8223cb7052d8580aea2b7061e368cf476de32ea9457b19459ed" +checksum = "beda381dd5c7927f8682f50b055b0903bb694ba5a4b27fad1b4934bc4fbf7b8d" [[package]] name = "uuid" @@ -8441,6 +8576,12 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-registry" version = "0.2.0" @@ -8864,6 +9005,15 @@ dependencies = [ "zerovec-derive", ] +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "zerofrom", +] + [[package]] name = "zerovec-derive" version = "0.10.3" diff --git a/Cargo.toml b/Cargo.toml index a328b30ddb..40964e5765 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -172,14 +172,14 @@ unicode-segmentation = "1.12" unicode-width = "0.2" ureq = { version = "2.12", default-features = false, features = ["socks-proxy"] } url = "2.2" -uu_cp = "0.0.30" -uu_mkdir = "0.0.30" -uu_mktemp = "0.0.30" -uu_mv = "0.0.30" -uu_touch = "0.0.30" -uu_whoami = "0.0.30" -uu_uname = "0.0.30" -uucore = "0.0.30" +uu_cp = "0.1.0" +uu_mkdir = "0.1.0" +uu_mktemp = "0.1.0" +uu_mv = "0.1.0" +uu_touch = "0.1.0" +uu_whoami = "0.1.0" +uu_uname = "0.1.0" +uucore = "0.1.0" uuid = "1.16.0" v_htmlescape = "0.15.0" wax = "0.6" diff --git a/crates/nu-command/src/filesystem/ucp.rs b/crates/nu-command/src/filesystem/ucp.rs index 673f4e34d9..606ced50cd 100644 --- a/crates/nu-command/src/filesystem/ucp.rs +++ b/crates/nu-command/src/filesystem/ucp.rs @@ -119,9 +119,9 @@ impl Command for UCp { ) -> Result { let interactive = call.has_flag(engine_state, stack, "interactive")?; let (update, copy_mode) = if call.has_flag(engine_state, stack, "update")? { - (UpdateMode::ReplaceIfOlder, CopyMode::Update) + (UpdateMode::IfOlder, CopyMode::Update) } else { - (UpdateMode::ReplaceAll, CopyMode::Copy) + (UpdateMode::All, CopyMode::Copy) }; let force = call.has_flag(engine_state, stack, "force")?; @@ -252,7 +252,7 @@ impl Command for UCp { dereference: !recursive, progress_bar: progress, attributes_only: false, - backup: BackupMode::NoBackup, + backup: BackupMode::None, copy_contents: false, cli_dereference: false, copy_mode, @@ -264,6 +264,8 @@ impl Command for UCp { backup_suffix: String::from("~"), target_dir: None, update, + set_selinux_context: false, + context: None, }; if let Err(error) = uu_cp::copy(&sources, &target_path, &options) { diff --git a/crates/nu-command/src/filesystem/umkdir.rs b/crates/nu-command/src/filesystem/umkdir.rs index 589fd6f76d..9258e2e5ca 100644 --- a/crates/nu-command/src/filesystem/umkdir.rs +++ b/crates/nu-command/src/filesystem/umkdir.rs @@ -74,8 +74,16 @@ impl Command for UMkdir { }); } + let config = uu_mkdir::Config { + recursive: IS_RECURSIVE, + mode: get_mode(), + verbose: is_verbose, + set_selinux_context: false, + context: None, + }; + for dir in directories { - if let Err(error) = mkdir(&dir, IS_RECURSIVE, get_mode(), is_verbose) { + if let Err(error) = mkdir(&dir, &config) { return Err(ShellError::GenericError { error: format!("{}", error), msg: format!("{}", error), diff --git a/crates/nu-command/src/filesystem/umv.rs b/crates/nu-command/src/filesystem/umv.rs index edee8e3b84..9944a118f7 100644 --- a/crates/nu-command/src/filesystem/umv.rs +++ b/crates/nu-command/src/filesystem/umv.rs @@ -95,9 +95,9 @@ impl Command for UMv { uu_mv::OverwriteMode::Force }; let update = if call.has_flag(engine_state, stack, "update")? { - UpdateMode::ReplaceIfOlder + UpdateMode::IfOlder } else { - UpdateMode::ReplaceAll + UpdateMode::All }; #[allow(deprecated)] @@ -186,7 +186,7 @@ impl Command for UMv { progress_bar: progress, verbose, suffix: String::from("~"), - backup: BackupMode::NoBackup, + backup: BackupMode::None, update, target_dir: None, no_target_dir: false,