From ca7d565eb0fe1bdbf778dd48a1d1b93bb55c4f9a Mon Sep 17 00:00:00 2001 From: Roy Ivy III Date: Sun, 26 Jan 2020 16:05:00 -0600 Subject: [PATCH] maint/build ~ add dev helper scripts to derive available utils for feature set --- util/show-utils.BAT | 24 ++++++++++++++++++++++++ util/show-utils.sh | 21 +++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 util/show-utils.BAT create mode 100644 util/show-utils.sh diff --git a/util/show-utils.BAT b/util/show-utils.BAT new file mode 100644 index 000000000..be7400d3c --- /dev/null +++ b/util/show-utils.BAT @@ -0,0 +1,24 @@ +@setLocal +@echo off + +@rem ::# spell-checker:ignore (CMD) ERRORLEVEL +@rem ::# spell-checker:ignore (utils) cksum dircolors hashsum mkdir mktemp printenv printf readlink realpath relpath rmdir shuf tsort unexpand uutils +@rem ::# spell-checker:ignore (jq) deps startswith + +@rem refs: , + +@rem :: default ("Tier 1" cross-platform) utility list +set "default_utils=base32 base64 basename cat cksum comm cp cut date dircolors dirname echo env expand expr factor false fmt fold hashsum head join link ln ls mkdir mktemp more mv nl od paste printenv printf ptx pwd readlink realpath relpath rm rmdir seq shred shuf sleep sort split sum tac tail tee test tr true truncate tsort unexpand uniq wc yes" + +@:: `jq` available? +set "JQ=" +set "ERRORLEVEL=" +jq --version 1>NUL 2>&1 +if NOT ERRORLEVEL 1 ( set "JQ=jq" ) + +if NOT DEFINED JQ ( + echo WARN: missing `jq` ^(install with `scoop install jq`^)^; falling back to default ^(only fully cross-platform^) util list 1>&2 + echo %default_utils% +) else ( + cargo metadata %* --format-version 1 | jq -r "[.resolve.nodes[] | {id: .id, deps: [.deps[].name]}] | .[] | select(.id|startswith(\"uutils\")) | [.deps[] | select(startswith(\"uu_\"))] | [.[] | sub(\"^uu_\"; \"\")] | join(\" \")" +) diff --git a/util/show-utils.sh b/util/show-utils.sh new file mode 100644 index 000000000..f8f2ac9da --- /dev/null +++ b/util/show-utils.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# spell-checker:ignore (utils) cksum dircolors hashsum mkdir mktemp printenv printf readlink realpath relpath rmdir shuf tsort unexpand uutils +# spell-checker:ignore (jq) deps startswith + +# refs: , + +# default ("Tier 1" cross-platform) utility list +default_utils="base32 base64 basename cat cksum comm cp cut date dircolors dirname echo env expand expr factor false fmt fold hashsum head join link ln ls mkdir mktemp more mv nl od paste printenv printf ptx pwd readlink realpath relpath rm rmdir seq shred shuf sleep sort split sum tac tail tee test tr true truncate tsort unexpand uniq wc yes" + +# `jq` available? +unset JQ +jq --version 1>/dev/null 2>&1 +if [ $? -eq 0 ]; then export JQ="jq"; fi + +if [ -z "${JQ}" ]; 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 + cargo metadata $* --format-version 1 | jq -r "[.resolve.nodes[] | {id: .id, deps: [.deps[].name]}] | .[] | select(.id|startswith(\"uutils\")) | [.deps[] | select(startswith(\"uu_\"))] | [.[] | sub(\"^uu_\"; \"\")] | join(\" \")" +fi