From cc7a77804b12d86251e71303d1887b48c43f13b2 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sun, 21 Aug 2016 23:02:35 +1200 Subject: Consolidate ed,bc,grep,ls.sh into one function --- sh/profile.d/options.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 sh/profile.d/options.sh (limited to 'sh/profile.d/options.sh') diff --git a/sh/profile.d/options.sh b/sh/profile.d/options.sh new file mode 100644 index 00000000..aa6bea06 --- /dev/null +++ b/sh/profile.d/options.sh @@ -0,0 +1,55 @@ +# Cache the options available to certain programs. Run all this in a subshell +# (none of its state needs to endure in the session) +( +options() { ( + + # Check or create the directory to cache the options + dir=$HOME/.cache/$1 + + # Directory already exists; bail out + [ -d "$dir" ] && exit + + # Create the directory + mkdir -p -- "$dir" || exit + cd -- "$dir" || exit + + # Write grep(1)'s --help output to a file, even if it's empty + "$1" --help help 2>/dev/null || exit + + # Shift the program name off; remaining arguments are the options to check + shift + + # Iterate through some useful options and create files to show they're + # available if found in the help output + for opt ; do + grep -q -- '[^[:alnum:]]--'"$opt"'[^[:alnum:]]' help && + touch -- "$opt" + done +) ; } + +# Cache options for bc(1) +options bc \ + quiet + +# Cache options for ed(1) +options ed \ + verbose + +# Cache options for grep(1) +options grep \ + binary-files \ + color \ + devices \ + directories \ + exclude \ + exclude-dir + +# Cache options for ls(1) +options ls \ + almost-all \ + block-size \ + classify \ + color \ + human-readable \ + time-style +) -- cgit v1.2.3