From 8ef80b7f3456e0ddf130d7213d62844570b7a54e Mon Sep 17 00:00:00 2001 From: Bradley Allen Date: Sun, 4 Oct 2020 12:57:51 -0500 Subject: [PATCH] investing cluster-command.sh - completion for a script #50 --- cluster-command/bash_completion/UseGetOpt-2 | 27 ++++++ cluster-command/bash_completion/UseGetOpt.sh | 94 +++++++++++++++++++ cluster-command/bash_completion/file1.txt | 0 cluster-command/bash_completion/file2.doc | 0 cluster-command/bash_completion/file2.txt | 0 cluster-command/bash_completion/file30.txt | 0 cluster-command/bash_completion/file4.zzz | 0 cluster-command/bash_completion/projectctl | 4 + .../bash_completion/sample_command | 0 9 files changed, 125 insertions(+) create mode 100644 cluster-command/bash_completion/UseGetOpt-2 create mode 100755 cluster-command/bash_completion/UseGetOpt.sh create mode 100644 cluster-command/bash_completion/file1.txt create mode 100644 cluster-command/bash_completion/file2.doc create mode 100644 cluster-command/bash_completion/file2.txt create mode 100644 cluster-command/bash_completion/file30.txt create mode 100644 cluster-command/bash_completion/file4.zzz create mode 100755 cluster-command/bash_completion/projectctl create mode 100755 cluster-command/bash_completion/sample_command diff --git a/cluster-command/bash_completion/UseGetOpt-2 b/cluster-command/bash_completion/UseGetOpt-2 new file mode 100644 index 0000000..333af4b --- /dev/null +++ b/cluster-command/bash_completion/UseGetOpt-2 @@ -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. diff --git a/cluster-command/bash_completion/UseGetOpt.sh b/cluster-command/bash_completion/UseGetOpt.sh new file mode 100755 index 0000000..4a5c39e --- /dev/null +++ b/cluster-command/bash_completion/UseGetOpt.sh @@ -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 + + +# 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 diff --git a/cluster-command/bash_completion/file1.txt b/cluster-command/bash_completion/file1.txt new file mode 100644 index 0000000..e69de29 diff --git a/cluster-command/bash_completion/file2.doc b/cluster-command/bash_completion/file2.doc new file mode 100644 index 0000000..e69de29 diff --git a/cluster-command/bash_completion/file2.txt b/cluster-command/bash_completion/file2.txt new file mode 100644 index 0000000..e69de29 diff --git a/cluster-command/bash_completion/file30.txt b/cluster-command/bash_completion/file30.txt new file mode 100644 index 0000000..e69de29 diff --git a/cluster-command/bash_completion/file4.zzz b/cluster-command/bash_completion/file4.zzz new file mode 100644 index 0000000..e69de29 diff --git a/cluster-command/bash_completion/projectctl b/cluster-command/bash_completion/projectctl new file mode 100755 index 0000000..fbca4c5 --- /dev/null +++ b/cluster-command/bash_completion/projectctl @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "command : $0" +echo "arguments : $@" diff --git a/cluster-command/bash_completion/sample_command b/cluster-command/bash_completion/sample_command new file mode 100755 index 0000000..e69de29