166 lines
6.0 KiB
Bash
166 lines
6.0 KiB
Bash
_just() {
|
|
local i cur prev words cword opts cmd
|
|
COMPREPLY=()
|
|
|
|
# Modules use "::" as the separator, which is considered a wordbreak character in bash.
|
|
# The _get_comp_words_by_ref function is a hack to allow for exceptions to this rule without
|
|
# modifying the global COMP_WORDBREAKS environment variable.
|
|
if type _get_comp_words_by_ref &>/dev/null; then
|
|
_get_comp_words_by_ref -n : cur prev words cword
|
|
else
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
words=$COMP_WORDS
|
|
cword=$COMP_CWORD
|
|
fi
|
|
|
|
cmd=""
|
|
opts=""
|
|
|
|
for i in ${words[@]}
|
|
do
|
|
case "${cmd},${i}" in
|
|
",$1")
|
|
cmd="just"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case "${cmd}" in
|
|
just)
|
|
opts="-n -f -q -u -v -d -c -e -l -s -E -g -h -V --check --chooser --color --command-color --yes --dry-run --dump-format --highlight --list-heading --list-prefix --no-aliases --no-deps --no-dotenv --no-highlight --justfile --quiet --set --shell --shell-arg --shell-command --clear-shell-args --unsorted --unstable --verbose --working-directory --changelog --choose --command --completions --dump --edit --evaluate --fmt --init --list --groups --man --show --summary --variables --dotenv-filename --dotenv-path --global-justfile --timestamp --timestamp-format --help --version [ARGUMENTS]..."
|
|
if [[ ${cur} == -* ]] ; then
|
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
return 0
|
|
elif [[ ${cword} -eq 1 ]]; then
|
|
local recipes=$(just --summary 2> /dev/null)
|
|
|
|
if echo "${cur}" | \grep -qF '/'; then
|
|
local path_prefix=$(echo "${cur}" | sed 's/[/][^/]*$/\//')
|
|
local recipes=$(just --summary 2> /dev/null -- "${path_prefix}")
|
|
local recipes=$(printf "${path_prefix}%s\t" $recipes)
|
|
fi
|
|
|
|
if [[ $? -eq 0 ]]; then
|
|
COMPREPLY=( $(compgen -W "${recipes}" -- "${cur}") )
|
|
if type __ltrim_colon_completions &>/dev/null; then
|
|
__ltrim_colon_completions "$cur"
|
|
fi
|
|
return 0
|
|
fi
|
|
fi
|
|
case "${prev}" in
|
|
--chooser)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--color)
|
|
COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
|
|
return 0
|
|
;;
|
|
--command-color)
|
|
COMPREPLY=($(compgen -W "black blue cyan green purple red yellow" -- "${cur}"))
|
|
return 0
|
|
;;
|
|
--dump-format)
|
|
COMPREPLY=($(compgen -W "just json" -- "${cur}"))
|
|
return 0
|
|
;;
|
|
--list-heading)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--list-prefix)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--justfile)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-f)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--set)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--shell)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--shell-arg)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--working-directory)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-d)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--command)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-c)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--completions)
|
|
COMPREPLY=($(compgen -W "bash elvish fish powershell zsh" -- "${cur}"))
|
|
return 0
|
|
;;
|
|
--list)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-l)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--show)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-s)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--dotenv-filename)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--dotenv-path)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-E)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--timestamp-format)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY=()
|
|
;;
|
|
esac
|
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
return 0
|
|
;;
|
|
esac
|
|
}
|
|
|
|
if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
|
|
complete -F _just -o nosort -o bashdefault -o default just
|
|
else
|
|
complete -F _just -o bashdefault -o default just
|
|
fi
|