summaryrefslogtreecommitdiff
path: root/etc/bash_completion.d/20vyatta-cfg
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2010-11-24 10:19:11 -0800
committerStephen Hemminger <stephen.hemminger@vyatta.com>2010-11-24 11:46:45 -0800
commitc12b9ae4ef02f54233e9d390d08591e761d84d04 (patch)
treeb6de9c23934f8debc65eb4757d43ad8eeb051d66 /etc/bash_completion.d/20vyatta-cfg
parent005340a8145dba861129d98f67fd02fd3cae4ebc (diff)
downloadvyatta-cfg-c12b9ae4ef02f54233e9d390d08591e761d84d04.tar.gz
vyatta-cfg-c12b9ae4ef02f54233e9d390d08591e761d84d04.zip
Rename bash completion script
The scripts in /etc/bash_completion.d are not named with number like init files. Also completion script should not be marked executable.
Diffstat (limited to 'etc/bash_completion.d/20vyatta-cfg')
-rwxr-xr-xetc/bash_completion.d/20vyatta-cfg906
1 files changed, 0 insertions, 906 deletions
diff --git a/etc/bash_completion.d/20vyatta-cfg b/etc/bash_completion.d/20vyatta-cfg
deleted file mode 100755
index 110b563..0000000
--- a/etc/bash_completion.d/20vyatta-cfg
+++ /dev/null
@@ -1,906 +0,0 @@
-#!/bin/bash
-
-# **** License ****
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# A copy of the GNU General Public License is available as
-# `/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution
-# or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'.
-# You can also obtain it by writing to the Free Software Foundation,
-# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-# MA 02110-1301, USA.
-#
-# Author: Vyatta
-# Description: bash completion for Vyatta configuration commands
-#
-# **** End License ****
-
-# Turn on history logging
-export HISTCONTROL=
-export HISTFILESIZE=10000
-export HISTSIZE=10000
-export HISTTIMEFORMAT='%FT%T%z '
-export PROMPT_COMMAND='history -a'
-builtin set histappend=1
-
-# only do this if we are going into configure mode
-if [ "$_OFR_CONFIGURE" != "ok" ]; then
- return 0
-fi
-
-if [ -r /etc/default/vyatta ]; then
- source /etc/default/vyatta
-fi
-
-# function for shell api
-vyatta_cli_shell_api ()
-{
- local noeval=''
- if [ "$1" == NOEVAL ]; then
- noeval=true
- shift
- fi
- local outstr
- if ! outstr=$(${vyatta_sbindir}/my_cli_shell_api "$@"); then
- # display the error output (if any) and then fail
- if [ -n "$outstr" ]; then
- echo "$outstr"
- fi
- return 1
- fi
- # eval the output (if any)
- if [ -n "$outstr" ]; then
- if [ -n "$noeval" ]; then
- echo "$outstr"
- else
- eval "$outstr"
- fi
- fi
- return 0
-}
-
-# set up the session environment
-## note: this can not use vyatta_cli_shell_api() above since it "declares"
-## env vars.
-eval "$(${vyatta_sbindir}/my_cli_shell_api getSessionEnv $$)"
-
-declare is_set=0
-declare last_idx=0
-declare -a comp_words=()
-
-# commands to unalias
-declare -a unalias_cmds=( clear configure date debug edit exit load merge \
- no run set show save terminal undebug up top )
-for cmd in "${unalias_cmds[@]}"; do
- unalias $cmd >& /dev/null
-done
-
-show ()
-{
- local -a args=()
- for arg in "$@"; do
- if [ "$arg" == "-all" ]; then
- args+=('--show-show-defaults')
- else
- args+=("$arg")
- fi
- done
- cli-shell-api showCfg "${args[@]}" | eval "${VYATTA_PAGER:-cat}"
-}
-
-commit ()
-{
- local comment="commit"
- local next=0
- local -a args=()
- for arg in "$@"; do
- if [ "$next" == "1" ]; then
- comment=$arg
- next=0;
- elif [ "$arg" == "comment" ]; then
- next=1
- elif [ "$arg" == "confirm" ]; then
- echo Use commit-confirm command
- return 1;
- else
- args[${#args[@]}]="$arg"
- fi
- done
- args+=("-C '$comment'")
-
- export COMMIT_VIA=cli
- if /opt/vyatta/sbin/my_commit "${args[@]}"; then
- vyatta_cli_shell_api markSessionUnsaved
- fi
- unset COMMIT_VIA
-}
-
-commit-confirm ()
-{
- local -a args=()
- local first=1
- local minutes=10
- for arg in "$@"; do
- if [ "$first" = "1" ]; then
- if [[ $arg = *[[:digit:]]* ]]; then
- minutes=$arg
- else
- args[${#args[@]}]="$arg"
- fi
- first=0
- else
- args[${#args[@]}]="$arg"
- fi
- done
- cmd="${vyatta_sbindir}/vyatta-config-mgmt.pl --action=commit-confirm \
- --minutes=$minutes"
- eval "sudo sg vyattacfg \"$cmd\" "
- if [ $? = 0 ]; then
- commit "$@"
- fi
-}
-
-confirm ()
-{
- ${vyatta_sbindir}/vyatta-config-mgmt.pl --action=confirm
-}
-
-compare ()
-{
- ${vyatta_sbindir}/vyatta-config-mgmt.pl --action=diff "$@"
-}
-
-save ()
-{
- if vyatta_cli_shell_api sessionChanged; then
- echo -e "Warning: you have uncommitted changes that will not be saved.\n"
- fi
- # transform individual args into quoted strings
- local arg=''
- local save_cmd="${vyatta_sbindir}/vyatta-save-config.pl"
- for arg in "$@"; do
- save_cmd+=" '$arg'"
- done
- eval "sudo sg vyattacfg \"umask 0002 ; $save_cmd\""
- vyatta_cli_shell_api unmarkSessionUnsaved
-}
-
-reboot ()
-{
- echo "Exit from configure mode before rebooting."
-}
-
-rollback ()
-{
- ${vyatta_sbindir}/vyatta-config-mgmt.pl --action=rollback --revnum "$@"
-}
-
-shutdown ()
-{
- echo "Exit from configure mode before shutting down system."
-}
-
-reset_edit_level ()
-{
- vyatta_cli_shell_api getEditResetEnv
- return $?
-}
-
-load ()
-{
- # don't load if there are uncommitted changes.
- if vyatta_cli_shell_api sessionChanged; then
- echo "Cannot load: configuration modified."
- echo "Commit or discard the changes before loading a config file."
- return 1
- fi
- # return to top level.
- reset_edit_level
- ${vyatta_sbindir}/vyatta-load-config.pl "$@"
-}
-
-merge ()
-{
- # don't load if there are uncommitted changes.
- if vyatta_cli_shell_api sessionChanged; then
- echo "Cannot load: configuration modified."
- echo "Commit or discard the changes before loading a config file."
- return 1
- fi
- # return to top level.
- reset_edit_level
- ${vyatta_sbindir}/vyatta-load-config.pl "$@" --merge
-}
-
-top ()
-{
- if vyatta_cli_shell_api editLevelAtRoot; then
- echo "Already at the top level"
- return 0
- fi
-
- # go to the top level.
- reset_edit_level
-}
-
-edit ()
-{
- vyatta_cli_shell_api getEditEnv "$@"
- return $?
-}
-
-up ()
-{
- vyatta_cli_shell_api getEditUpEnv "$@"
- return $?
-}
-
-really_exit()
-{
-
- if vyatta_cli_shell_api sessionUnsaved; then
- echo "Warning: configuration changes have not been saved."
- fi
- vyatta_cli_shell_api teardownSession
- unset _OFR_CONFIGURE
- builtin exit 0
-}
-
-exit ()
-{
- local discard
- if [ $# == 0 ]; then
- discard=0
- elif [ $# == 1 ] && [ "$1" == "discard" ]; then
- discard=1
- else
- echo "Invalid argument \"$*\" for 'exit'"
- return 1
- fi
-
- if vyatta_cli_shell_api editLevelAtRoot; then
- # we are at the root level. check if we can really exit.
- if vyatta_cli_shell_api sessionChanged; then
- if (( ! discard )); then
- echo "Cannot exit: configuration modified."
- echo "Use 'exit discard' to discard the changes and exit."
- return 1
- fi
- fi
- really_exit
- fi
-
- # "exit" to the root level.
- reset_edit_level
-}
-
-# run op mode commands
-run ()
-{
- if [ $# == 0 ]; then
- echo Incomplete command
- return 1
- fi
- _vyatta_op_run $@
-}
-
-# do op mode completion
-vyatta_run_complete ()
-{
- local restore_shopts=$( shopt -p extglob nullglob | tr \\n \; )
- shopt -s extglob nullglob
-
- COMP_WORDS=( "${COMP_WORDS[@]:1}" )
- (( COMP_CWORD -= 1 ))
- _vyatta_op_expand
-
- eval $restore_shopts
-}
-
-vyatta_loadsave_complete()
-{
- # Generate completion help for the "load" and "save" commands
-
- local restore_shopts=$( shopt -p extglob nullglob | tr \\n \; )
- shopt -s extglob nullglob
-
- # Only provide completions after command name has been typed, but
- # before any characters of the command argument have been entered.
- # File name completion, and completion of the various URL formats
- # is not supported yet.
- #
- if [ $COMP_CWORD -eq 1 -a -z "${COMP_WORDS[1]}" ]; then
- echo
- echo "Possible completions:"
- if [ "${COMP_WORDS[0]}" = "load" ]; then
- echo -e " <Enter>\t\t\t\tLoad from system config file"
- echo -e " <file>\t\t\t\tLoad from file on local machine"
- echo -e " scp://<user>:<passwd>@<host>/<file>\tLoad from file on remote machine"
- echo -e " ftp://<user>:<passwd>@<host>/<file>\tLoad from file on remote machine"
- echo -e " http://<host>/<file>\t\t\tLoad from file on remote machine"
- echo -e " tftp://<host>/<file>\t\t\tLoad from file on remote machine"
- elif [ "${COMP_WORDS[0]}" = "merge" ]; then
- echo -e " <Enter>\t\t\t\tMerge from system config file"
- echo -e " <file>\t\t\t\tMerge from file on local machine"
- echo -e " scp://<user>:<passwd>@<host>/<file>\tMerge from file on remote machine"
- echo -e " ftp://<user>:<passwd>@<host>/<file>\tMerge from file on remote machine"
- echo -e " http://<host>/<file>\t\t\tMerge from file on remote machine"
- echo -e " tftp://<host>/<file>\t\t\tMerge from file on remote machine"
- elif [ "${COMP_WORDS[0]}" = "save" ]; then
- echo -e " <Enter>\t\t\t\tSave to system config file"
- echo -e " <file>\t\t\t\tSave to file on local machine"
- echo -e " scp://<user>:<passwd>@<host>/<file>\tSave to file on remote machine"
- echo -e " ftp://<user>:<passwd>@<host>/<file>\tSave to file on remote machine"
- echo -e " tftp://<host>/<file>\t\t\tSave to file on remote machine"
- fi
- COMPREPLY=( "" " " )
- else
- COMPREPLY=()
- fi
-
- eval $restore_shopts
-}
-
-loadkey()
-{
- # don't load if there are uncommitted changes.
- if vyatta_cli_shell_api sessionChanged; then
- echo "Cannot load: configuration modified."
- echo "Commit or discard the changes before loading a config file."
- return 1
- fi
- # return to top level.
- reset_edit_level
- ${vyatta_sbindir}/vyatta-load-user-key.pl "$@"
-}
-
-vyatta_loadkey_complete()
-{
- case "$COMP_CWORD" in
- 1) if [ -z "${COMP_WORDS[1]}" ]; then
- COMPREPLY=( $(getent passwd | awk -F: '$7 == "/bin/vbash" { print $1}') )
- else
- COMPREPLY=( $(compgen -u -- ${COMP_WORDS[1]} ) )
- fi ;;
- 2) if [ -z "${COMP_WORDS[2]}" ]; then
- echo
- echo "Possible completions:"
- echo -e " <file>\t\t\t\tLoad from file on local machine"
- echo -e " scp://<user>@<host>/<file>\tLoad from file on remote machine"
- echo -e " ftp://<user>@<host>/<file>\tLoad from file on remote machine"
- echo -e " http://<host>/<file>\t\t\tLoad from file on remote machine"
- echo -e " tftp://<host>/<file>\t\t\tLoad from file on remote machine"
- COMPREPLY=()
- else
- COMPREPLY=( $(compgen -f -- ${COMP_WORDS[2]} ) )
- fi ;;
- esac
-}
-
-print_commit_log ()
-{
- local -a array
- eval "array=($(${vyatta_sbindir}/vyatta-config-mgmt.pl --action=show-commit-log-brief))"
- local count=0
- for i in "${array[@]}"; do
- i=${i//_/ }
- echo -e "$count\t$i"
- (( count++ ))
- done
-}
-
-vyatta_rollback_complete ()
-{
- # Generate completion help for the "rollback" command
-
- local restore_shopts=$( shopt -p extglob nullglob | tr \\n \; )
- shopt -s extglob nullglob
-
- # Only provide completions after command name has been typed, but
- # before any characters of the command argument have been entered.
- if [ $COMP_CWORD -eq 1 -a -z "${COMP_WORDS[1]}" ]; then
- echo
- echo "Possible completions:"
- echo -e "<N>\tRollback to revision N (currently requires reboot)"
- print_commit_log
- COMPREPLY=( "" " " )
- else
- COMPREPLY=()
- fi
-
- eval $restore_shopts
-}
-
-vyatta_compare_complete ()
-{
- # Generate completion help for the "compare" command
-
- local restore_shopts=$( shopt -p extglob nullglob | tr \\n \; )
- shopt -s extglob nullglob
-
- # Only provide completions after command name has been typed, but
- # before any characters of the command argument have been entered.
- if [ $COMP_CWORD -eq 1 -a -z "${COMP_WORDS[1]}" ]; then
- echo
- echo "Possible completions:"
- echo -e "<enter>\tCompare working & active configurations"
- echo -e "<N>\tCompare working with revion N"
- echo -e "<N> <M>\tCompare revion N with M"
- print_commit_log
- COMPREPLY=( "" " " )
- elif [ $COMP_CWORD -eq 2 -a -z "${COMP_WORDS[2]}" ]; then
- echo
- echo "Possible completions:"
- echo -e "<enter>\tCompare working & active configurations"
- echo -e "<N>\tCompare working with revion N"
- echo -e "<N> <M>\tCompare revion N with M"
- print_commit_log
- COMPREPLY=( "" " " )
- else
- COMPREPLY=()
- fi
-
- eval $restore_shopts
-}
-
-vyatta_commit_complete ()
-{
- # Generate completion help for the "commit-confirm" command
-
- local restore_shopts=$( shopt -p extglob nullglob | tr \\n \; )
- shopt -s extglob nullglob
-
- # Only provide completions after command name has been typed, but
- # before any characters of the command argument have been entered.
- if [ $COMP_CWORD -eq 1 -a -z "${COMP_WORDS[1]}" ]; then
- echo
- echo "Possible completions:"
- if [ "${COMP_WORDS[0]}" = "commit" ]; then
- echo -e "<enter>\tCommit working configuration"
- elif [ "${COMP_WORDS[0]}" = "commit-confirm" ]; then
- echo -e "<enter>\tCommit, rollback/reboot in 10 minutes if no confirm"
- echo -e "<N>\tCommit, rollback/reboot in N minutes if no confirm"
- fi
- echo -e "comment\tComment for commit log"
- COMPREPLY=( "" " " )
- elif [ "${COMP_WORDS[1]}" = "comment" ]; then
- echo
- echo "Possible completions:"
- echo -e "<txt>\tText comment for commit log (e.g. \"add user bob\")"
- COMPREPLY=( "" " " )
- else
- COMPREPLY=()
- fi
-
- eval $restore_shopts
-}
-
-get_prefix_filtered_list ()
-{
- # $1: prefix
- # $2: \@list
- # $3: \@filtered
- declare -a olist
- local pfx=$1
- pfx=${pfx#\"}
- eval "olist=( \"\${$2[@]}\" )"
- local idx=0
- for elem in "${olist[@]}"; do
- local sub=${elem#$pfx}
- if [ "$elem" == "$sub" ] && [ -n "$pfx" ]; then
- continue
- fi
- eval "$3[$idx]=\"$elem\""
- (( idx++ ))
- done
-}
-
-get_prefix_filtered_list2 ()
-{
- # $1: prefix
- # $2: \@list
- # $3: \@filtered
- # $4: \@list2
- # $5: \@filtered2
- declare -a olist
- local pfx=$1
- pfx=${pfx#\"}
- eval "olist=( \"\${$2[@]}\" )"
- eval "local orig_len=\${#$2[@]}"
- local orig_idx=0
- local idx=0
- for (( orig_idx = 0; orig_idx < orig_len; orig_idx++ )); do
- eval "local elem=\${$2[$orig_idx]}"
- eval "local elem2=\${$4[$orig_idx]}"
- local sub=${elem#$pfx}
- if [ "$elem" == "$sub" ] && [ -n "$pfx" ]; then
- continue
- fi
- eval "$3[$idx]=\"$elem\""
- eval "$5[$idx]=\"$elem2\""
- (( idx++ ))
- done
-}
-
-declare vyatta_cfg_help=""
-declare vyatta_cfg_type=""
-declare vyatta_cfg_tag=0
-declare vyatta_cfg_multi=0
-declare -a vyatta_cfg_allowed=()
-declare vyatta_cfg_comp_help=""
-declare -a vyatta_cfg_val_type=()
-declare -a vyatta_cfg_val_help=()
-
-declare -a _get_help_text_items=()
-declare -a _get_help_text_helps=()
-get_help_text ()
-{
- vyatta_help_text="\\nPossible completions:"
- for (( idx = 0; idx < ${#_get_help_text_items[@]}; idx++ )); do
- vyatta_help_text+="\\n\\x20\\x20"
- if [ ${#_get_help_text_items[idx]} -lt 6 ]; then
- vyatta_help_text+="${_get_help_text_items[idx]}\\t\\t"
- elif [ ${#_get_help_text_items[idx]} -lt 14 ]; then
- vyatta_help_text+="${_get_help_text_items[idx]}\\t"
- else
- vyatta_help_text+="${_get_help_text_items[idx]}\\n\\x20\\x20\\t\\t"
- fi
- vyatta_help_text+="${_get_help_text_helps[idx]}"
- done
- if [ -n "$vyatta_cfg_comp_help" ]; then
- local hstr=${vyatta_cfg_comp_help//\'/\'\\\\\\\'\'}
- vyatta_help_text+="\\n\\nDetailed information:\\n"
- local sIFS=$IFS
- IFS=' '
- local chstr=$(echo -en "$hstr\n" \
- | while read comp_help_line; do
- echo "vyatta_help_text+=' $comp_help_line\\n';"
- done)
- eval "$chstr"
- IFS=$sIFS
- fi
-}
-
-get_value_format_string ()
-{
- local vtype=$1
- if [[ $vtype = !* ]]; then
- echo -n '!'
- vtype="${vtype#!}"
- fi
- case "$vtype" in
- _*)
- echo -n "${vtype#_}"
- ;;
- txt)
- echo -n '<text>'
- ;;
- u32)
- echo -n '<0-4294967295>'
- ;;
- u32:*)
- echo -n "<${vtype##u32:}>"
- ;;
- range)
- echo -n "<start>-<end>"
- ;;
- ipv4)
- echo -n '<x.x.x.x>'
- ;;
- ipv6)
- echo -n '<h:h:h:h:h:h:h:h>'
- ;;
- ipv4net)
- echo -n '<x.x.x.x/x>'
- ;;
- ipv6net)
- echo -n '<h:h:h:h:h:h:h:h/x>'
- ;;
- ipv4range)
- echo -n '<x.x.x.x>-<x.x.x.x>'
- ;;
- ipv6range)
- echo -n '<h:h:h:h:h:h:h:h>-<h:h:h:h:h:h:h:h>'
- ;;
- bool)
- echo -n '<boolean>'
- ;;
- macaddr)
- echo -n '<h:h:h:h:h:h>'
- ;;
- *)
- echo -n "$vtype"
- ;;
- esac
-}
-
-declare -a vyatta_completions
-declare vyatta_help_text="\\nNo help text available"
-declare vyatta_do_help=false
-vyatta_do_complete ()
-{
- if $vyatta_do_help; then
- printf "$vyatta_help_text"
- COMPREPLY=( "" " " )
- else
- local -a f_comps=()
- local cword=
- if (( ${#COMP_WORDS[@]} > 0 )); then
- cword=${COMP_WORDS[COMP_CWORD]}
- fi
- get_prefix_filtered_list "$cword" vyatta_completions f_comps
- local estr="COMPREPLY=( "
- for w in "${f_comps[@]}"; do
- estr="$estr\"$w\" "
- done
- estr="${estr})"
- eval "$estr"
- fi
- vyatta_help_text="\\nNo help text available"
-}
-
-vyatta_simple_complete ()
-{
- # when this function is called, it is expected that:
- # * "vyatta_help_text" is filled with the help text.
- # * "vyatta_completions" is an array of "filtered" possible completions
- # (i.e., only those starting with the current last component).
- if $vyatta_do_help; then
- printf "$vyatta_help_text"
- COMPREPLY=( "" " " )
- else
- COMPREPLY=( "${vyatta_completions[@]}" )
- fi
- vyatta_help_text="\\nNo help text available"
-}
-
-generate_pipe_help ()
-{
- _get_help_text_items=( "${_vyatta_pipe_completions[@]}" \
- "${_vyatta_pipe_noncompletions[@]}" )
- _get_help_text_helps=()
- for comp in "${_get_help_text_items[@]}"; do
- _get_help_text_helps+=("$(_vyatta_pipe_help "$comp")")
- done
- get_help_text
-}
-
-# env variables for shell api completion
-declare _cli_shell_api_last_comp_val=''
-declare _cli_shell_api_comp_help=''
-declare -a _cli_shell_api_comp_values=()
-declare -a _cli_shell_api_hitems=()
-declare -a _cli_shell_api_hstrs=()
-
-vyatta_config_complete ()
-{
- local restore_shopts=$( shopt -p extglob nullglob | tr \\n \; )
- shopt -s extglob nullglob
-
- if [ "$COMP_LINE" == "$VYATTA_COMP_LINE" ]; then
- VYATTA_COMP_LINE=''
- vyatta_do_help=true
- else
- VYATTA_COMP_LINE=$COMP_LINE
- vyatta_do_help=false
- fi
-
- # handle pipe
- if _vyatta_pipe_completion "${COMP_WORDS[@]}"; then
- generate_pipe_help
- vyatta_completions=( "${_vyatta_pipe_completions[@]}" )
- vyatta_do_complete
- eval $restore_shopts
- return
- fi
-
- if (( ${#COMP_WORDS[@]} < 2 )); then
- _get_help_text_items=( "activate" \
- "confirm" \
- "comment" \
- "commit" \
- "commit-confirm" \
- "compare" \
- "copy" \
- "deactivate" \
- "delete" \
- "discard" \
- "edit" \
- "exit" \
- "load" \
- "loadkey" \
- "merge" \
- "rename" \
- "rollback" \
- "run" \
- "save" \
- "set" \
- "show" )
- _get_help_text_helps=( \
- "Activate this element" \
- "Confirm prior commit" \
- "Add comment to this configuration element" \
- "Commit the current set of changes" \
- "Commit the current set of changes with confirm" \
- "Compare configuration revisions" \
- "Copy a configuration element" \
- "Deactivate this element" \
- "Delete a configuration element" \
- "Discard uncommitted changes" \
- "Edit a sub-element" \
- "Exit from this configuration level" \
- "Load configuration from a file and replace running configuration" \
- "Load user SSH key from a file" \
- "Load configuration from a file and merge running configuration" \
- "Rename a configuration element" \
- "Rollback to a prior config revision (requires reboot)" \
- "Run an operational-mode command" \
- "Save configuration to a file" \
- "Set the value of a parameter or create a new element" \
- "Show the configuration (default values may be suppressed)" \
- )
- if (( ${#COMP_WORDS[@]} == 1 )); then
- declare -a fitems=()
- declare -a fstrs=()
- get_prefix_filtered_list2 "${COMP_WORDS[0]}" \
- _get_help_text_items fitems _get_help_text_helps fstrs
- _get_help_text_items=( "${fitems[@]}" )
- _get_help_text_helps=( "${fstrs[@]}" )
- fi
- get_help_text
- vyatta_completions=( "${_get_help_text_items[@]}" )
- vyatta_do_complete
- eval $restore_shopts
- return
- fi
-
- local command=${COMP_WORDS[0]}
- local last_comp="${COMP_WORDS[COMP_CWORD]}"
-
- # handle "exit"
- if [ "$command" == "exit" ]; then
- if (( COMP_CWORD > 1 )); then
- COMPREPLY=()
- eval $restore_shopts
- return
- fi
- _get_help_text_items=("discard")
- _get_help_text_helps=("Discard any changes")
- get_help_text
- vyatta_completions=("discard")
- vyatta_do_complete
- eval $restore_shopts
- return
- fi
-
- local -a api_args=("${COMP_WORDS[@]}")
-
- # handle "copy" and "rename"
- if [ "$command" == "copy" -o "$command" == "rename" ]; then
- # Syntax of copy and rename commands are:
- #
- # copy/rename <param1> <sub-param1> to <param2> <sub-param2>
- #
- # where <param1> and <param2> are configuration parameters
- # in the tree at the current edit level.
- #
- # If parsing index 1 or 2 (i.e. <param1> or <sub-param1>),
- # fall through this test to the parameter parsing code below.
- if (( COMP_CWORD == 3 )); then
- # If parsing index 3, there's only one option.
- _get_help_text_items=("to")
- _get_help_text_helps=("Set destination")
- get_help_text
- vyatta_completions=("to")
- vyatta_do_complete
- eval $restore_shopts
- return
- elif (( COMP_CWORD > 3 && COMP_CWORD < 6 )); then
- # If parsing index 4 or 5, start completion at <param2>.
- api_args=("$command" "${COMP_WORDS[@]:4}")
- elif (( COMP_CWORD > 5 )); then
- # If parsing after index 5, there are no more valid parameters
- COMPREPLY=()
- eval $restore_shopts
- return
- fi
- fi
-
- if ! vyatta_cli_shell_api getCompletionEnv "${api_args[@]}"; then
- # invalid completion
- eval $restore_shopts
- return
- fi
- vyatta_cfg_comp_help=$_cli_shell_api_comp_help
- _get_help_text_helps=( "${_cli_shell_api_hstrs[@]}" )
- if $_cli_shell_api_last_comp_val; then
- # last component is a "value". need to do the following:
- # use comp_help if exists
- # prefix filter comp_values
- # replace any <*> in comp_values with ""
- # convert help items to <...> representation
- _get_help_text_items=()
- for ((i = 0; i < ${#_cli_shell_api_hitems[@]}; i++)); do
- local t=$(get_value_format_string "${_cli_shell_api_hitems[i]}")
- _get_help_text_items+=("$t")
- done
- vyatta_completions=()
- for ((i = 0; i < ${#_cli_shell_api_comp_values[@]}; i++)); do
- if [ -z "$last_comp" ] \
- && [[ "${_cli_shell_api_comp_values[i]}" = \<*\> ]]; then
- vyatta_completions+=("")
- elif [ -z "$last_comp" ] \
- || [[ "${_cli_shell_api_comp_values[i]}" = "$last_comp"* ]]; then
- vyatta_completions+=("${_cli_shell_api_comp_values[i]}")
- fi
- done
- else
- _get_help_text_items=( "${_cli_shell_api_hitems[@]}" )
- vyatta_completions=( "${_cli_shell_api_comp_values[@]}" )
- fi
- get_help_text
- vyatta_simple_complete
- eval $restore_shopts
-}
-
-if ! vyatta_cli_shell_api setupSession; then
- echo 'Failed to set up config session'
- builtin exit 1
-fi
-
-# disallow 'Ctrl-D' exit, since we need special actions on 'exit'
-builtin set -o ignoreeof 1
-
-reset_edit_level
-alias set=/opt/vyatta/sbin/my_set
-alias delete=/opt/vyatta/sbin/my_delete
-alias activate=/opt/vyatta/sbin/my_activate
-alias deactivate=/opt/vyatta/sbin/my_deactivate
-alias rename=/opt/vyatta/sbin/my_rename
-alias copy=/opt/vyatta/sbin/my_copy
-alias comment=/opt/vyatta/sbin/my_comment
-alias discard=/opt/vyatta/sbin/my_discard
-
-export VYATTA_COMP_LINE=""
-
-# readline bindings
-bind 'set show-all-if-ambiguous on'
-if ! bind -p |grep -q '\\C-x\\C-t'; then
- bind '"\C-x\C-t": kill-region'
-fi
-if ! bind -p |grep -q '\\C-x\\C-o'; then
- bind '"\C-x\C-o": copy-region-as-kill'
-fi
-
-complete -F vyatta_config_complete ''
-complete -F vyatta_config_complete activate
-complete -F vyatta_config_complete deactivate
-complete -F vyatta_config_complete set
-complete -F vyatta_config_complete delete
-complete -F vyatta_config_complete show
-complete -F vyatta_config_complete edit
-complete -F vyatta_config_complete exit
-complete -F vyatta_run_complete run
-complete -F vyatta_loadsave_complete save
-complete -F vyatta_loadsave_complete load
-complete -F vyatta_loadsave_complete merge
-complete -F vyatta_loadkey_complete loadkey
-complete -F vyatta_compare_complete compare
-complete -F vyatta_config_complete comment
-complete -F vyatta_config_complete copy
-complete -F vyatta_config_complete rename
-complete -F vyatta_rollback_complete rollback
-complete -F vyatta_commit_complete commit
-complete -F vyatta_commit_complete commit-confirm
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End: