sequencer - simplified sqn-completion naming
This commit is contained in:
64
sqn-completion.bash
Executable file
64
sqn-completion.bash
Executable file
@@ -0,0 +1,64 @@
|
||||
#/usr/bin/env bash
|
||||
|
||||
_sqn_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() {
|
||||
# Get script working directory
|
||||
# (when called from a different directory)
|
||||
local WDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >>/dev/null 2>&1 && pwd)"
|
||||
|
||||
. ${WDIR}/sequencer.cfg &>/dev/null
|
||||
|
||||
local SEQBASE="${WDIR}/seqs"
|
||||
local SEQPREFIX="sqn_"
|
||||
local SEQSHORT=()
|
||||
|
||||
# Check for user selected sequences
|
||||
[ -e "$SEQUENCER_USER_SEQS" ] && SEQBASE="$SEQUENCER_USER_SEQS"
|
||||
|
||||
# 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 _sqn_completions ${SEQSHORT[@]}
|
||||
}
|
||||
|
||||
installCompletion
|
Reference in New Issue
Block a user