Skip to content

Commit

Permalink
investing cluster-command.sh - completion for a script #50
Browse files Browse the repository at this point in the history
  • Loading branch information
BradleyA committed Oct 4, 2020
1 parent c320925 commit 8ef80b7
Show file tree
Hide file tree
Showing 9 changed files with 125 additions and 0 deletions.
27 changes: 27 additions & 0 deletions cluster-command/bash_completion/UseGetOpt-2
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# file: UseGetOpt-2
# UseGetOpt-2.sh parameter-completion

_UseGetOpt-2 () # By convention, the function name
{ #+ starts with an underscore.
local cur
# Pointer to current completion word.
# By convention, it's named "cur" but this isn't strictly necessary.

COMPREPLY=() # Array variable storing the possible completions.
cur=${COMP_WORDS[COMP_CWORD]}

case "$cur" in
-*)
COMPREPLY=( $( compgen -W '-a -d -f -l -t -h --aoption --debug \
--file --log --test --help --' -- $cur ) );;
# Generate the completion matches and load them into $COMPREPLY array.
# xx) May add more cases here.
# yy)
# zz)
esac

return 0
}

complete -F _UseGetOpt-2 -o filenames ./UseGetOpt-2.sh
# ^^ ^^^^^^^^^^^^ Invokes the function _UseGetOpt-2.
94 changes: 94 additions & 0 deletions cluster-command/bash_completion/UseGetOpt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/bin/bash

# UseGetOpt-2.sh
# Modified version of the script for illustrating tab-expansion
#+ of command-line options.
# See the "Introduction to Tab Expansion" appendix.

# Possible options: -a -d -f -l -t -h
#+ --aoption, --debug --file --log --test -- help --

# Author of original script: Peggy Russell <[email protected]>


# UseGetOpt () {
declare inputOptions
declare -r E_OPTERR=85
declare -r ScriptName=${0##*/}
declare -r ShortOpts="adf:hlt"
declare -r LongOpts="aoption,debug,file:,help,log,test"

DoSomething () {
echo "The function name is '${FUNCNAME}'"
}

inputOptions=$(getopt -o "${ShortOpts}" --long \
"${LongOpts}" --name "${ScriptName}" -- "${@}")

if [[ ($? -ne 0) || ($# -eq 0) ]]; then
echo "Usage: ${ScriptName} [-dhlt] {OPTION...}"
exit $E_OPTERR
fi

eval set -- "${inputOptions}"


while true; do
case "${1}" in
--aoption | -a) # Argument found.
echo "Option [$1]"
;;

--debug | -d) # Enable informational messages.
echo "Option [$1] Debugging enabled"
;;

--file | -f) # Check for optional argument.
case "$2" in #+ Double colon is optional argument.
"") # Not there.
echo "Option [$1] Use default"
shift
;;

*) # Got it
echo "Option [$1] Using input [$2]"
shift
;;

esac
DoSomething
;;

--log | -l) # Enable Logging.
echo "Option [$1] Logging enabled"
;;

--test | -t) # Enable testing.
echo "Option [$1] Testing enabled"
;;

--help | -h)
echo "Option [$1] Display help"
break
;;

--) # Done! $# is argument number for "--", $@ is "--"
echo "Option [$1] Dash Dash"
break
;;

*)
echo "Major internal error!"
exit 8
;;

esac
echo "Number of arguments: [$#]"
shift
done

shift

# }

exit
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
4 changes: 4 additions & 0 deletions cluster-command/bash_completion/projectctl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

echo "command : $0"
echo "arguments : $@"
Empty file.

0 comments on commit 8ef80b7

Please sign in to comment.