# Bash completion function for instruo # vim: set et sw=4 sts=4 ts=4 ft=sh : # NOTE: This is still a work in progress, don't expect it to work well or # properly right now. _instruo_get_repodir() { local repodir [[ -f ./profiles/repo_name ]] && repodir=$(readlink -f $(pwd)) [[ -z "${repodir}" && -f ../profiles/repo_name ]] \ && repodir=$(readlink -f $(pwd)/..) [[ -z "${repodir}" && -f ../../profiles/repo_name ]] \ && repodir=$(readlink -f $(pwd)/../..) [[ -z "${repodir}" ]] && return 1 echo "${repodir}" } _instruo() { local cur prev opts COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} # Figure out what our repository dir is for i in $(seq 0 ${COMP_CWORD}) ; do if [[ ${COMP_WORDS[i]} == "-D" \ || ${COMP_WORDS[i]} == "--repository-dir" ]] then repodir=${COMP_WORDS[i+1]} fi done [[ -z "${repodir}" ]] && repodir="$(_instruo_get_repodir)" opts="--generate-cache -g \ --version -V \ --help -h \ --log-level \ --no-colour \ --no-color \ --repository-dir -D \ --output-dir -o \ --extra-repository-dir \ --master-repository-name \ --report-file -r" case "${cur}" in -*) COMPREPLY=($(compgen -W "${opts}" -- "${cur}")) return 0 ;; *) case "${prev}" in ## Enum operators --log-level) COMPREPLY=($(compgen -W "debug qa warning silent" -- "${cur}")) return 0 ;; --repository-dir|-D|--output-dir|-o|--extra-repository-dir) _filedir -d return 0 ;; --report-file|-r) _filedir return 0 ;; esac ;; esac } complete -o filenames -F _instruo instruo