dotfiles/dot-config/fish/functions/prefixed-function.fish
2024-11-04 11:07:40 -05:00

38 lines
710 B
Fish

function run
eval "$argv[1]-$argv[2]"
end
function usage
set fn $argv[1]
set allowed $argv[2..]
echo "Usage: $fn <CMD>"
echo " $fn do <CMD>[, <CMD>]"
echo " <CMD>:" (string join ", " $allowed)
end
function available-cmds
string replace --filter --regex "^$argv[1]-" "" (functions --name)
end
function prefixed-function
set fn $argv[1]
set allowed (available-cmds $fn)
if test $argv[2] = "do"
set cmds (string replace -a ',' '' $argv[3..])
else
set cmds $argv[2]
end
for cmd in $cmds
if not contains $cmd $allowed
echo "Error: Unknown subcommand '$cmd'"
usage $fn $allowed
return 1
end
end
for cmd in $cmds
run $fn $cmd
end
end