Merge tag '0.4.7'
authorSteven Baltakatei Sandoval <baltakatei@gmail.com>
Sat, 17 Jul 2021 00:14:44 +0000 (00:14 +0000)
committerSteven Baltakatei Sandoval <baltakatei@gmail.com>
Sat, 17 Jul 2021 00:14:44 +0000 (00:14 +0000)
feat(unitproc):create bktemp-processArgs

# gpg: Signature made Tue 13 Jul 2021 10:15:43 PM GMT
# gpg:                using RSA key 38F96437C83AC88E28B7A95257DA57D9517E6F86
# gpg: Good signature from "Steven Sandoval <baltakatei@gmail.com>" [ultimate]
# gpg:                 aka "Steven Sandoval <baltakatei@alumni.stanford.edu>" [ultimate]
# Primary key fingerprint: 3457 A265 922A 1F38 39DB  0264 A0A2 95AB DC34 69C9
#      Subkey fingerprint: 38F9 6437 C83A C88E 28B7  A952 57DA 57D9 517E 6F86

unitproc/bktemp-checkAppFileDir
unitproc/bktemp-processArgs [new file with mode: 0644]
unitproc/bktemp-showUsage [new symlink]
unitproc/bktemp-showVersion [new symlink]
unitproc/bktemp-vbm

index e21efb9fbf0c4c9c7d0bf2b137f21e098291871e..d5a620bbf09e422397002c2e1801b9fa8305f114 100644 (file)
@@ -2,10 +2,11 @@
 # Desc: Checks that apps, files, or dirs exist.
 
 #==BEGIN Define script parameters==
+#===BEGIN Define variables===
 declare -Ag appRollCall # Associative array for storing app status
 declare -Ag fileRollCall # Associative array for storing file status
 declare -Ag dirRollCall # Associative array for storing dir status
-#==END Define script parameters==
+#===END Define variables===
 
 #===BEGIN Declare local script functions===
 checkapp() {
diff --git a/unitproc/bktemp-processArgs b/unitproc/bktemp-processArgs
new file mode 100644 (file)
index 0000000..ca29c35
--- /dev/null
@@ -0,0 +1,198 @@
+#!/bin/bash
+# Desc: Processes script arguments
+
+#==BEGIN Define script parameters==
+#===BEGIN Define variables===
+:
+#===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.0.3, 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.1
+    # 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
+
+    EXAMPLE:
+      bktemp-processArgs -o foo.txt
+EOF
+} # Display information on how to use this script.
+showVersion() {
+    # Desc: Displays script version and license information.
+    # Usage: showVersion
+    # Version: 0.0.1
+    # 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 0.0.1
+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.30
+    Copyright (C) 2018 Free Software Foundation, Inc.
+    License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
+    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: 0.0.1
+    # 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')
+    # 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
+    # External dependencies: bash (5.0.3), echo
+    # Ref./Attrib.:
+    #  [1]: Marco Aurelio (2014-05-08). "echo that outputs to stderr". https://stackoverflow.com/a/23550347
+
+    # 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 ;; 
+           *) 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";
+#==END sample code==
+
+# Author: Steven Baltaktei Sandoval
+# License: GPLv3+
diff --git a/unitproc/bktemp-showUsage b/unitproc/bktemp-showUsage
new file mode 120000 (symlink)
index 0000000..542b1f1
--- /dev/null
@@ -0,0 +1 @@
+bktemp-processArgs
\ No newline at end of file
diff --git a/unitproc/bktemp-showVersion b/unitproc/bktemp-showVersion
new file mode 120000 (symlink)
index 0000000..542b1f1
--- /dev/null
@@ -0,0 +1 @@
+bktemp-processArgs
\ No newline at end of file
index 8fa7c1cac2c525f9c7742727c7ae6b762e31c034..878a0225631959a0c6232b2a0102f3d569447c23 100644 (file)
@@ -1,27 +1,27 @@
 #!/bin/bash
-# Desc: Display message if optionVerbose true
+# Desc: Display message if opVerbose true
 
 vbm() {
-    # Description: Prints verbose message ("vbm") to stderr if optionVerbose is set to "true".
+    # Description: Prints verbose message ("vbm") to stderr if opVerbose is set to "true".
     # Usage: vbm "DEBUG :verbose message here"
-    # Version 0.1.3
+    # Version 0.2.0
     # Input: arg1: string
-    #        vars: optionVerbose
+    #        vars: opVerbose
     # Output: stderr
     # Depends: bash 5.0.3, echo 8.30, date 8.30
 
-    if [ "$optionVerbose" = "true" ]; then
-       functionTime=$(date --iso-8601=ns); # Save current time in nano seconds.
-       echo "[$functionTime]:$0:""$*" 1>&2; # Display argument text.
+    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 optionVerbose true
+} # Displays message if opVerbose true
 
 #==BEGIN sample code==
 vbm "STATUS:This is a status message.";
-optionVerbose="true";
+opVerbose="true";
 vbm "STATUS:This is another status message.";
 #==END sample code==