diff options
Diffstat (limited to 'bin/_hcl_completions')
| -rwxr-xr-x | bin/_hcl_completions | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/bin/_hcl_completions b/bin/_hcl_completions new file mode 100755 index 0000000..16f551c --- /dev/null +++ b/bin/_hcl_completions @@ -0,0 +1,67 @@ +#!/bin/bash + +_hcl_getProjects() +{ + $1 tasks | perl -ne 's/ - (?!.* -).*//g; print;' | sed -e 's/\s[0-9]\+\s/ /g' | sed -e 's/\s/ /g' | sort | uniq +} + +_hcl_getTasks() +{ + $1 tasks | grep "^$2" | sed -e 's/\s/ /g' | sort | uniq | cut -d" " -f 2- +} + +_hcl() +{ + local count=${#COMP_WORDS[@]} + local script=${COMP_WORDS[0]} + local cur=${COMP_WORDS[COMP_CWORD]} + case $count in + 2) + COMPREPLY=( $(compgen -W "start resume log stop note show tasks alias unalias aliases cancel nvm oops config status" -- $cur) ) + ;; + 3) + local namespace=${COMP_WORDS[1]} + + case $namespace in + 'alias') + COMPREPLY=( $(compgen -W "" -- $cur) ) + ;; + 'start'|'resume'|'log') + COMPREPLY=( $(compgen -W "$($script aliases | sed -e 's/,//g')" -- $cur) ) + ;; + esac + ;; + 4) + local namespace=${COMP_WORDS[1]} + local task=${COMP_WORDS[2]} + case $namespace in + 'alias') + local IFS_OLD="$IFS"; + local IFS=$'\n'; + COMPREPLY=( $(compgen -W "$(_hcl_getProjects $script)" -- $cur) ) + local IFS=$IFS_OLD; + if [[ ${#COMPREPLY[*]} -eq 1 ]]; then #Only one completion + COMPREPLY=$(echo $COMPREPLY | sed -e 's/\s.*$//g') + fi + ;; + esac + ;; + 5) + local namespace=${COMP_WORDS[1]} + local task=${COMP_WORDS[2]} + local projectid=${COMP_WORDS[3]} + case $namespace in + 'alias') + local IFS_OLD="$IFS"; + local IFS=$'\n'; + COMPREPLY=( $(compgen -W "$(_hcl_getTasks $script $projectid)" -- $cur) ) + local IFS=$IFS_OLD; + if [[ ${#COMPREPLY[*]} -eq 1 ]]; then #Only one completion + COMPREPLY=$(echo $COMPREPLY | sed -e 's/\s.*$//g') + fi + ;; + esac + ;; + esac +} +complete -F _hcl hcl |
