#!/bin/bash _rally() { declare -A SUBCOMMANDS declare -A OPTS OPTS["deployment_check"]="--deployment" OPTS["deployment_config"]="--deployment" OPTS["deployment_create"]="--name --fromenv --filename --no-use" OPTS["deployment_destroy"]="--deployment" OPTS["deployment_list"]="" OPTS["deployment_recreate"]="--deployment" OPTS["deployment_show"]="--deployment" OPTS["deployment_use"]="--deployment" OPTS["info_BenchmarkScenarios"]="" OPTS["info_DeploymentEngines"]="" OPTS["info_SLA"]="" OPTS["info_ServerProviders"]="" OPTS["info_find"]="--query" OPTS["info_list"]="" OPTS["show_flavors"]="--deployment" OPTS["show_images"]="--deployment" OPTS["show_keypairs"]="--deployment" OPTS["show_networks"]="--deployment" OPTS["show_secgroups"]="--deployment" OPTS["task_abort"]="--uuid" OPTS["task_delete"]="--force --uuid" OPTS["task_detailed"]="--uuid --iterations-data" OPTS["task_list"]="--deployment --all-deployments --status --uuids-only" OPTS["task_report"]="--tasks --out --open --html --junit" OPTS["task_results"]="--uuid" OPTS["task_sla_check"]="--uuid --json" OPTS["task_start"]="--deployment --task --task-args --task-args-file --tag --no-use --abort-on-sla-failure" OPTS["task_status"]="--uuid" OPTS["task_use"]="--task" OPTS["task_validate"]="--deployment --task --task-args --task-args-file" OPTS["use_deployment"]="--deployment" OPTS["use_task"]="--uuid" OPTS["use_verification"]="--uuid" OPTS["verify_compare"]="--uuid-1 --uuid-2 --csv --html --json --output-file --threshold" OPTS["verify_detailed"]="--uuid --sort-by" OPTS["verify_list"]="" OPTS["verify_results"]="--uuid --html --json --output-file" OPTS["verify_show"]="--uuid --sort-by --detailed" OPTS["verify_start"]="--deployment --set --regex --tempest-config --no-use" OPTS["verify_use"]="--verification" for OPT in ${!OPTS[*]} ; do CMD=${OPT%%_*} CMDSUB=${OPT#*_} SUBCOMMANDS[${CMD}]+="${CMDSUB} " done COMMANDS="${!SUBCOMMANDS[*]}" 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 "${SUBCOMMANDS[${prev}]}" -- ${cur})) else if [ $prev == "--filename" ] ; then _filedir "@(json|ya?ml)" elif [ $prev == "--output-file" ] || [ $prev == "--out" ]; then _filedir else COMMAND="${COMP_WORDS[1]}_${COMP_WORDS[2]}" COMPREPLY=($(compgen -W "${OPTS[$COMMAND]}" -- ${cur})) fi fi return 0 } complete -F _rally rally