X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/blobdiff_plain/849106f7246e47bc077d7f3b8228cec717a8e63d..26f0533782d8c57fb95b8df4f55057edcbf17703:/unitproc/bktemp-processArgs diff --git a/unitproc/bktemp-processArgs b/unitproc/bktemp-processArgs deleted file mode 100644 index 27679a2..0000000 --- a/unitproc/bktemp-processArgs +++ /dev/null @@ -1,215 +0,0 @@ -#!/bin/bash -# Desc: Processes script arguments - -#==BEGIN Define script parameters== -#===BEGIN Define variables=== -: -declare -ag arrayPosArgs -#===END Define variables=== - -#===BEGIN Declare local script functions=== -yell() { echo "$0: $*" >&2; } #o Yell, Die, Try Three-Fingered Claw technique -die() { yell "$*"; exit 111; } #o Ref/Attrib: https://stackoverflow.com/a/25515370 -try() { "$@" || die "cannot $*"; } #o -vbm() { - # Description: Prints verbose message ("vbm") to stderr if opVerbose is set to "true". - # Usage: vbm "DEBUG :verbose message here" - # Version 0.2.0 - # Input: arg1: string - # vars: opVerbose - # Output: stderr - # Depends: bash 5.1.16, GNU-coreutils 8.30 (echo, date) - - if [ "$opVerbose" = "true" ]; then - functionTime="$(date --iso-8601=ns)"; # Save current time in nano seconds. - echo "[$functionTime]:$0:""$*" 1>&2; # Display argument text. - fi - - # End function - return 0; # Function finished. -} # Displays message if opVerbose true -showUsage() { - # Desc: Display script usage information - # Usage: showUsage - # Version 0.0.2 - # Input: none - # Output: stdout - # Depends: GNU-coreutils 8.30 (cat) - cat <<'EOF' - USAGE: - bktemp-processArgs [ options ] [FILE...] - - OPTIONS: - -h, --help - Display help information. - --version - Display script version. - -v, --verbose - Display debugging info. - -i, --input-file - Define input file path. - -I, --input-dir - Define input directory path. - -o, --output-file - Define output file path. - -O, --output-dir - Define output directory path. - -- - Indicate end of options. - - EXAMPLE: - bktemp-processArgs -o foo.txt - bktemp-processArgs -o foo.txt -- some_file.txt -EOF -} # Display information on how to use this script. -showVersion() { - # Desc: Displays script version and license information. - # Usage: showVersion - # Version: 0.0.2 - # Input: scriptVersion var containing version string - # Output: stdout - # Depends: vbm(), yell, GNU-coreutils 8.30 - - # Initialize function - vbm "DEBUG:showVersion function called." - - cat <<'EOF' -bktemp-processArgs 1.0.0 -Copyright (C) 2021 Steven Baltakatei Sandoval -License GPLv3: GNU GPL version 3 -This is free software; you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. - - GNU Coreutils 8.32 - Copyright (C) 2020 Free Software Foundation, Inc. - License GPLv3+: GNU GPL version 3 or later . - This is free software: you are free to change and redistribute it. - There is NO WARRANTY, to the extent permitted by law. -EOF - - # End function - vbm "DEBUG:showVersion function ended." - return 0; # Function finished. -} # Display script version. -processArgs() { - # Desc: Processes arguments provided to script. - # Usage: processArgs "$@" - # Version: 1.0.0 - # Input: "$@" (list of arguments provided to the function) - # Output: Sets following variables used by other functions: - # opVerbose Indicates verbose mode enable status. (ex: "true", "false") - # pathDirOut1 Path to output directory. - # pathFileOut1 Path to output file. - # pathDirIn1 Path to input directory. - # pathFileIn1 Path to input file. - # opFileOut1_overwrite Indicates whether file pathFileOut1 should be overwritten (ex: "true", "false"). - # arrayPosArgs Array of remaining positional argments - # Depends: - # yell() Displays messages to stderr. - # vbm() Displays messsages to stderr if opVerbose set to "true". - # showUsage() Displays usage information about parent script. - # showVersion() Displays version about parent script. - # arrayPosArgs Global array for storing non-option positional arguments (i.e. arguments following the `--` option). - # External dependencies: bash (5.1.16), echo - # Ref./Attrib.: - # [1]: Marco Aurelio (2014-05-08). "echo that outputs to stderr". https://stackoverflow.com/a/23550347 - # [2]: "Handling positional parameters" (2018-05-12). https://wiki.bash-hackers.org/scripting/posparams - - # Initialize function - vbm "DEBUG:processArgs function called." - - # Perform work - while [ ! $# -eq 0 ]; do # While number of arguments ($#) is not (!) equal to (-eq) zero (0). - #yell "DEBUG:Starting processArgs while loop." # Debug stderr message. See [1]. - #yell "DEBUG:Provided arguments are:""$*" # Debug stderr message. See [1]. - case "$1" in - -h | --help) showUsage; exit 1;; # Display usage. - --version) showVersion; exit 1;; # Show version - -v | --verbose) opVerbose="true"; vbm "DEBUG:Verbose mode enabled.";; # Enable verbose mode. See [1]. - -i | --input-file) # Define input file path - if [ -f "$2" ]; then # If $2 is file that exists, set pathFileIn1 to $2, pop $2. - pathFileIn1="$2"; - shift; - vbm "DEBUG:Input file pathFileIn1 set to:""$2"; - else - yell "ERROR: Specified input file does not exist:""$2"; - yell "Exiting."; - exit 1; - fi ;; - -I | --input-dir) # Define input directory path - if [ -d "$2" ]; then # If $2 is dir that exists, set pathDirIn1 to $2, pop $2. - pathDirIn1="$2"; - shift; - vbm "DEBUG:Input directory pathDirIn1 set to:""$2"; - else # Display error if $2 is not a valid dir. - yell "ERROR:Specified input directory does not exist:""$2"; - yell "Exiting."; - exit 1; - fi ;; - -o | --output-file) # Define output file path - if [ -f "$2" ]; then # If $2 is file that exists, prompt user to continue to overwrite, set pathFileOut1 to $2, pop $2. - yell "Specified output file $2 already exists. Overwrite? (y/n):" - read -r m; case $m in - y | Y | yes) opFileOut1_overwrite="true";; - n | N | no) opFileOut1_overwrite="false";; - *) yell "Invalid selection. Exiting."; exit 1;; - esac - if [ "$opFileOut1_overwrite" == "true" ]; then - pathFileOut1="$2"; - shift; - vbm "DEBUG:Output file pathFileOut1 set to:""$2"; - else - yell "ERORR:Exiting in order to not overwrite output file:""$pathFileOut1"; - exit 1; - fi - else - pathFileOut1="$2"; - shift; - vbm "DEBUG:Output file pathFileOut1 set to:""$2"; - fi ;; - -O | --output-dir) # Define output directory path - if [ -d "$2" ]; then # If $2 is dir that exists, set pathDirOut1 to $2, pop $2 - pathDirOut1="$2"; - shift; - vbm "DEBUG:Output directory pathDirOut1 set to:""$2"; - else - yell "ERROR:Specified output directory is not valid:""$2"; - yell "Exiting."; - exit 1; - fi ;; - --) # End of all options. See [2]. - shift; - for arg in "$@"; do - vbm "DEBUG:adding to arrayPosArgs:$arg"; - arrayPosArgs+=("$arg"); - done; - break;; - -*) showUsage; yell "ERROR: Unrecognized option."; exit 1;; # Display usage - *) showUsage; yell "ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options. See [1]. - esac - shift - done - - # End function - vbm "DEBUG:processArgs function ended." - return 0; # Function finished. -} # Evaluate script options from positional arguments (ex: $1, $2, $3, etc.). - -#===END Declare local script functions=== -#==END Define script parameters== - -#==BEGIN sample code== -processArgs "$@"; -yell "DEBUG:Provided arguments..:""$*" -yell "DEBUG:opVerbose...........:${opVerbose:-}"; -yell "DEBUG:pathDirOut1.........:${pathDirOut1:-}"; -yell "DEBUG:pathFileOut1........:${pathFileOut1:-}"; -yell "DEBUG:pathDirIn1..........:${pathDirIn1:-}"; -yell "DEBUG:pathFileIn1.........:${pathFileIn1:-}"; -yell "DEBUG:opFileOut1_overwrite:${opFileOut1_overwrite:-}"; -yell "DEBUG:arrayPosArgs........:$(if [[ -v arrayPosArgs ]]; then declare -p arrayPosArgs; else printf ""; fi )"; -#yell "DEBUG:arrayPosArgs........:${arrayPosArgs[*]}"; -#==END sample code== - -# Author: Steven Baltaktei Sandoval -# License: GPLv3+