diff options
Diffstat (limited to 'sh/profile.d/options.sh')
-rw-r--r-- | sh/profile.d/options.sh | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/sh/profile.d/options.sh b/sh/profile.d/options.sh index 345888d0..a668a360 100644 --- a/sh/profile.d/options.sh +++ b/sh/profile.d/options.sh @@ -1,10 +1,13 @@ # Cache the options available to certain programs. Run all this in a subshell # (none of its state needs to endure in the session) ( -options() ( +options() { # Check or create the directory to cache the options + # Shift the program name off; remaining arguments are the options to check dir=$HOME/.cache/$1 + prog=$1 + shift # Directory already exists; bail out [ -d "$dir" ] && exit @@ -14,18 +17,16 @@ options() ( cd -- "$dir" || exit # Write the program's --help output to a file, even if it's empty - "$1" --help </dev/null >help 2>/dev/null || exit - - # Shift the program name off; remaining arguments are the options to check - shift + # This probably only works with GNU tools in general + "$prog" --help </dev/null >help 2>/dev/null || exit - # Iterate through some useful options and create files to show they're - # available if found in the help output + # Iterate through remaining arguments (desired options), creating files to + # show they're available if found in the help output for opt ; do command -p grep -q -- '[^[:alnum:]]--'"$opt"'[^[:alnum:]]' help && touch -- "$opt" done -) +} # Cache options for bc(1) options bc \ |