Files
shell_sequencer/sqnall-completion.bash
Martin Winkler 58a8ec6eae Ability to show sqn_ alias in sequencer help
outColor accepts a custom color number (0-255)
2022-02-09 15:44:22 +01:00

54 lines
1.6 KiB
Bash
Executable File

#/usr/bin/env bash
_sqnall_completions()
{
# Current search string
local cur=${COMP_WORDS[COMP_CWORD]}
# Extract alias command with buildins same as:
# local curCmd="$(alias $1 | sed "s/^alias.*\" \(.*\)'$/\1/")"
local curCmd="$(alias "$1")"
curCmd="${curCmd##*\" }"
curCmd="${curCmd%\'*}"
COMPREPLY=()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W '\
-a --all \
-c --config \
-d --dry-run \
-h --help \
-ha --helpapi \
-ls --liststeps \
-p --profile \
-pl \
-q --quiet \
-qq \
-s --single \
-v --verbose \
--version' -- $cur ) );;
*)
# Stop after step selection (last argument which is not an option; starting with "-")
(( COMP_CWORD > 1 )) && [[ ! "${COMP_WORDS[((COMP_CWORD - 1))]}" =~ ^- ]] && return
# sequencer.sh provides creation of a step list with search functionality
COMPREPLY=( $( "$curCmd" -ls "$cur" ) );;
esac
return 0
}
installCompletion() {
local SEQBASE="/opt/sequencer/seqs"
local SEQPREFIX="sqn_"
local SEQSHORT=()
# Create aliases and command (alias) list for "complete" command"
SEQLIST=($(ls "$SEQBASE/$cur"*.sh))
for i in "${!SEQLIST[@]}"; do
SEQLIST[$i]="${SEQLIST[$i]##*/}"
SEQLIST[$i]="${SEQLIST[$i]%.*}"
SEQSHORT[$i]="${SEQPREFIX}${SEQLIST[$i]}"
alias ${SEQSHORT[$i]}="_SQN_ALIAS=\"${SEQSHORT[$i]}\" $SEQBASE/${SEQLIST[$i]}.sh"
done
complete -o nosort -o bashdefault -o default -F _sqnall_completions ${SEQSHORT[@]}
}
installCompletion