mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-03-12 04:36:22 -07:00
92 lines
2.6 KiB
Bash
92 lines
2.6 KiB
Bash
# mr completion -*- shell-script -*-
|
|
|
|
_mr()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local help commands options
|
|
|
|
help="$(PERLDOC_PAGER=cat PERLDOC=-otext "${1}" help 2>/dev/null)"
|
|
|
|
commands="$(
|
|
printf %s "$help" | while read -r _ options cmd _; do
|
|
[[ $options != "[options]" ]] || printf "%s\n" "$cmd"
|
|
done
|
|
)"
|
|
# Split [online|offline] and remove `action` placeholder.
|
|
commands="${commands//@(action|[\[\|\]])/$'\n'}"
|
|
# Add standard aliases.
|
|
commands="${commands} ci co ls"
|
|
|
|
# Determine if user has entered an `mr` command. Used to block top-level
|
|
# (option and command) completions.
|
|
local cmd i
|
|
for ((i = 1; i < ${#words[@]} - 1; i++)); do
|
|
if [[ $commands == *"${words[i]}"* ]]; then
|
|
cmd="${words[i]}"
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Complete options for specific commands.
|
|
if [[ -v cmd ]]; then
|
|
case $cmd in
|
|
bootstrap)
|
|
_filedir
|
|
# Also complete stdin (-) as a potential bootstrap source.
|
|
if [[ -z ${cur} || $cur == - ]] && [[ $prev != - ]]; then
|
|
COMPREPLY+=(-)
|
|
fi
|
|
return
|
|
;;
|
|
clean)
|
|
if [[ ${cur} == -* ]]; then
|
|
COMPREPLY=($(compgen -W '-f' -- "${cur}"))
|
|
fi
|
|
return
|
|
;;
|
|
commit | ci | record)
|
|
if [[ ${cur} == -* ]]; then
|
|
COMPREPLY=($(compgen -W '-m' -- "${cur}"))
|
|
fi
|
|
return
|
|
;;
|
|
run)
|
|
COMPREPLY=($(compgen -c -- "${cur}"))
|
|
return
|
|
;;
|
|
*)
|
|
# Do not complete any other command.
|
|
return
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Complete top-level options and commands.
|
|
case $prev in
|
|
--config | -!(-*)c)
|
|
_filedir
|
|
return
|
|
;;
|
|
--directory | -!(-*)d)
|
|
_filedir -d
|
|
return
|
|
;;
|
|
esac
|
|
|
|
if [[ $cur == -* ]]; then
|
|
options="$(printf '%s\n' "$help" | _parse_help -)"
|
|
# Remove short options (all have compatible long options).
|
|
options="${options//-[a-z]$'\n'/}"
|
|
# Remove deprecated options.
|
|
options="${options//--path/}"
|
|
COMPREPLY=($(compgen -W "${options}" -- "${cur}"))
|
|
else
|
|
COMPREPLY=($(compgen -W "${commands}" -- "${cur}"))
|
|
fi
|
|
} &&
|
|
complete -F _mr mr
|
|
|
|
# ex: filetype=sh
|