diff --git a/src/bin/uudoc.rs b/src/bin/uudoc.rs index 3f1f709a6c0..c0f6643bea8 100644 --- a/src/bin/uudoc.rs +++ b/src/bin/uudoc.rs @@ -297,7 +297,7 @@ fn main() -> io::Result<()> { ) .unwrap() .trim() - .split(' ') + .split_ascii_whitespace() .map(ToString::to_string) .collect(); map.insert(platform, platform_utils); @@ -312,7 +312,7 @@ fn main() -> io::Result<()> { ) .unwrap() .trim() - .split(' ') + .split_ascii_whitespace() .map(ToString::to_string) .collect(); map.insert("linux", platform_utils); diff --git a/util/show-utils.sh b/util/show-utils.sh index ff70fe25d49..c25be5968f3 100755 --- a/util/show-utils.sh +++ b/util/show-utils.sh @@ -1,35 +1,22 @@ #!/usr/bin/env bash -# spell-checker:ignore (shell) OSTYPE -# spell-checker:ignore (utils) cksum coreutils dircolors mkdir mktemp printenv printf readlink realpath grealpath rmdir shuf tsort unexpand +set -eo pipefail # spell-checker:ignore (jq) deps startswith -# Use GNU version for realpath on *BSD -REALPATH=$(command -v grealpath||command -v realpath) +cd -- "$(dirname -- "$0")/.." -ME="${0}" -ME_dir="$(dirname -- "${ME}")" -ME_parent_dir="$(dirname -- "${ME_dir}")" -ME_parent_dir_abs="$("${REALPATH}" -mP -- "${ME_parent_dir}" || "${REALPATH}" -- "${ME_parent_dir}")" - -# refs: , - -# default utility list -default_utils=$(sed -n '/feat_common_core = \[/,/\]/p' Cargo.toml | sed '1d' |tr -d '],"\n') # $(sed -n '/feat_Tier1 = \[/,/\]/p' Cargo.toml | sed '1d;2d' |tr -d '],"\n') too? - -project_main_dir="${ME_parent_dir_abs}" -# printf 'project_main_dir="%s"\n' "${project_main_dir}" -cd "${project_main_dir}" && - - # `jq` available? - if ! jq --version 1>/dev/null 2>&1; then - echo "WARN: missing \`jq\` (install with \`sudo apt install jq\`); falling back to default (only fully cross-platform) utility list" 1>&2 - echo "$default_utils" - else +# `jq` available? +if ! jq --version 1>/dev/null 2>&1; then + # refs: , + # default utility list + default_utils=$(cargo tree --depth 1 --features feat_common_core --format "{lib}" --prefix none | sed -n 's/^uu_//p') + echo "WARN: missing \`jq\` (install with \`sudo apt install jq\`); falling back to default (only fully cross-platform) utility list" 1>&2 + echo "$default_utils" +else # Find 'coreutils' id with regex # with cargo v1.76.0, id = "coreutils 0.0.26 (path+file://)" # with cargo >= v1.77.0 # - if local path != '<...>/coreutils' id = "path+file://#coreutils@0.0.26" # - if local path == '<...>/coreutils' id = "path+file:///coreutils#0.0.26" - cargo metadata "$@" --format-version 1 | jq -r '[.resolve.nodes[] | select(.id|match(".*coreutils[ |@|#]\\d+\\.\\d+\\.\\d+")) | .deps[] | select(.pkg|match("uu_")) | .name | sub("^uu_"; "")] | sort | join(" ")' - fi + cargo metadata "$@" --format-version 1 | jq -r '[.resolve.nodes[] | select(.id|match(".*coreutils[ |@|#]\\d+\\.\\d+\\.\\d+")) | .deps[] | select(.pkg|match("uu_")) | .name | sub("^uu_"; "")] | sort | join(" ")' +fi