2024-01-01 22:21:10 +01:00
|
|
|
#!/usr/bin/env bash
|
2020-01-26 16:05:00 -06:00
|
|
|
|
2024-01-01 22:21:10 +01:00
|
|
|
# spell-checker:ignore (shell) OSTYPE
|
2026-01-30 16:17:31 +01:00
|
|
|
# spell-checker:ignore (utils) cksum coreutils dircolors mkdir mktemp printenv printf readlink realpath grealpath rmdir shuf tsort unexpand
|
2020-01-26 16:05:00 -06:00
|
|
|
# spell-checker:ignore (jq) deps startswith
|
|
|
|
|
|
2024-01-01 22:21:10 +01:00
|
|
|
# Use GNU version for realpath on *BSD
|
2025-11-13 06:51:07 +09:00
|
|
|
REALPATH=$(command -v grealpath||command -v realpath)
|
2024-01-01 22:21:10 +01:00
|
|
|
|
2020-05-30 22:06:31 -05:00
|
|
|
ME="${0}"
|
|
|
|
|
ME_dir="$(dirname -- "${ME}")"
|
|
|
|
|
ME_parent_dir="$(dirname -- "${ME_dir}")"
|
2024-01-01 22:21:10 +01:00
|
|
|
ME_parent_dir_abs="$("${REALPATH}" -mP -- "${ME_parent_dir}" || "${REALPATH}" -- "${ME_parent_dir}")"
|
2020-05-30 22:06:31 -05:00
|
|
|
|
2020-01-26 16:05:00 -06:00
|
|
|
# refs: <https://forge.rust-lang.org/release/platform-support.html> , <https://docs.rs/platforms/0.2.1/platforms/platform/tier1/index.html>
|
|
|
|
|
|
2026-01-21 18:36:19 +09:00
|
|
|
# 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?
|
2020-01-26 16:05:00 -06:00
|
|
|
|
2020-05-30 22:06:31 -05:00
|
|
|
project_main_dir="${ME_parent_dir_abs}"
|
|
|
|
|
# printf 'project_main_dir="%s"\n' "${project_main_dir}"
|
2022-02-01 06:55:11 +00:00
|
|
|
cd "${project_main_dir}" &&
|
2020-05-30 22:06:31 -05:00
|
|
|
|
2022-02-06 16:58:50 -06:00
|
|
|
# `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
|
2024-05-01 10:40:50 +02:00
|
|
|
# Find 'coreutils' id with regex
|
|
|
|
|
# with cargo v1.76.0, id = "coreutils 0.0.26 (path+file://<coreutils local directory>)"
|
2024-06-19 17:35:45 +02:00
|
|
|
# with cargo >= v1.77.0
|
|
|
|
|
# - if local path != '<...>/coreutils' id = "path+file://<coreutils local directory>#coreutils@0.0.26"
|
|
|
|
|
# - if local path == '<...>/coreutils' id = "path+file://<parent directory>/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(" ")'
|
2022-02-06 16:58:50 -06:00
|
|
|
fi
|