diff --git a/setup.cfg b/setup.cfg index 1ce31181..6b5c6962 100644 --- a/setup.cfg +++ b/setup.cfg @@ -19,6 +19,10 @@ author-email = openstack-dev@lists.openstack.org packages = mistralclient +data_files = + /etc/bash_completion.d = + tools/mistral.bash_completion + [entry_points] console_scripts = mistral = mistralclient.shell:main diff --git a/tools/mistral.bash_completion b/tools/mistral.bash_completion new file mode 100644 index 00000000..9c92d0da --- /dev/null +++ b/tools/mistral.bash_completion @@ -0,0 +1,65 @@ +#!/bin/bash + +_mistral() +{ + declare -A SUBCOMMANDS + declare -A OPTS + + OPTS["action-create"]="-h --help -f --format -c --column --max-width --quote" + OPTS["action-delete"]="-h --help" + OPTS["action-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["action-get-definition"]="-h --help" + OPTS["action-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["action-update"]="-h --help -f --format -c --column --max-width --quote" + OPTS["complete"]="-h --help --name --shell" + OPTS["cron-trigger-create"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["cron-trigger-delete"]="-h --help" + OPTS["cron-trigger-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["cron-trigger-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["environment-create"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["environment-delete"]="-h --help" + OPTS["environment-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["environment-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["environment-update"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["execution-create"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["execution-delete"]="-h --help" + OPTS["execution-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["execution-get-input"]="-h --help" + OPTS["execution-get-output"]="-h --help" + OPTS["execution-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["execution-update"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["help"]="-h --help" + OPTS["task-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["task-get-input"]="-h --help" + OPTS["task-get-result"]="-h --help" + OPTS["task-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["task-update"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["workbook-create"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["workbook-delete"]="-h --help" + OPTS["workbook-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["workbook-get-definition"]="-h --help" + OPTS["workbook-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["workbook-update"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["workflow-create"]="-h --help -f --format -c --column --max-width --quote" + OPTS["workflow-delete"]="-h --help" + OPTS["workflow-get"]="-h --help -f --format -c --column --max-width --variable --prefix" + OPTS["workflow-get-definition"]="-h --help" + OPTS["workflow-list"]="-h --help -f --format -c --column --max-width --quote" + OPTS["workflow-update"]="-h --help -f --format -c --column --max-width --quote" + + COMMANDS="${!OPTS[*]}" + COMPREPLY=() + + local cur="${COMP_WORDS[COMP_CWORD]}" + local prev="${COMP_WORDS[COMP_CWORD-1]}" + + if [[ $cur =~ (\.|\~|\/).* ]] ; then + _filedir + elif [ $COMP_CWORD == "1" ] ; then + COMPREPLY=($(compgen -W "$COMMANDS" -- ${cur})) + elif [ $COMP_CWORD == "2" ] ; then + COMPREPLY=($(compgen -W "${OPTS[${prev}]}" -- ${cur})) + fi + return 0 +} +complete -F _mistral mistral