feature(unitproc) Add legacy unit process scripts
[BK-2020-03.git] / unitproc / bkgettext
diff --git a/unitproc/bkgettext b/unitproc/bkgettext
new file mode 100755 (executable)
index 0000000..b220a20
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/bash
+
+# Date: 2020-02-15T22:23Z
+
+# Author: Steven Baltakatei Sandoval
+
+# Description: `bkgettext` prints text between and including two
+# specified tags.
+
+# Usage:
+#    $ bkgettext [ -s tagStart ]  [ -e tagEnd ]  [ -f file ]
+
+echoerr() { echo "$@" 1>&2; } # function for outputing to stderr; see [3]
+vc() { [ "$OPTION_VERBOSE" == "true" ] && return 0 || return 1; } # returns true if verbose mode active
+print_help() { echoerr "Usage: [ -s tagStart ]  [ -e tagEnd ]  [ -f file ] "; } # print help
+process_inputs() {
+    # echoerr "process_inputs() \$1:""===""$1""==="
+    # echoerr "process_inputs() \$2:""===""$2""==="
+    # echoerr "process_inputs() \$3:""===""$3""==="
+    # echoerr "process_inputs() \$4:""===""$4""==="
+    # echoerr "process_inputs() \$5:""===""$5""==="
+    # echoerr "process_inputs() \$6:""===""$6""==="
+    # echoerr "process_inputs() \$7:""===""$7""==="
+    # echoerr "process_inputs() \$8:""===""$8""==="
+    
+    while getopts "vhs:e:f:" options_array; do
+    case "${options_array}" in
+       v)
+           OPTION_VERBOSE="true"
+           vc && echoerr "DEBUG:Verbose mode active."
+           ;;
+       h)
+           print_help; exit 1
+           ;;
+       s)
+           tagStart=${OPTARG}
+           vc && echoerr "DEBUG:tagStart:""$tagStart"
+           ;;
+       e)
+           tagEnd=${OPTARG}
+           vc && echoerr "DEBUG:tagEnd:""$tagEnd"
+           ;;
+       f)
+           [ ! -f ${OPTARG} ] && echoerr "ERROR: Invalid file name provided." && exit 1;
+           fileInput=${OPTARG}
+           vc && echoerr "DEBUG:fileInput:""$fileInput"
+           ;;
+       *)
+           echoerr "Error."
+           ;;
+    esac
+    done
+    shift $((OPTIND-1))
+}
+
+main() {
+
+    process_inputs "$@" # Define variables: tagStart tagEnd fileInput
+    # echoerr "main() \$1:""===""$1""==="
+    # echoerr "main() \$2:""===""$2""==="
+    # echoerr "main() \$3:""===""$3""==="
+    # echoerr "main() \$4:""===""$4""==="
+    # echoerr "main() \$5:""===""$5""==="
+    # echoerr "main() \$6:""===""$6""==="
+    # echoerr "main() \$7:""===""$7""==="
+    # echoerr "main() \$8:""===""$8""==="
+    # echoerr "main() \$tagStart:""===""$tagStart""==="
+    # echoerr "main() \$tagEnd:""===""$tagEnd""==="
+    # echoerr "main() \$fileInput:""===""$fileInput""==="
+    #OUTPUT=$(cat "$fileInput" | awk "/$tagStart/,/$tagEnd/") # get text between and including tag lines; see [1]
+    #OUTPUT=$(cat "$fileInput" | awk "/$tagStart/{f=1;next} /$tagEnd/{f=0} f") # get text between tag lines; see [1]
+    OUTPUT=$(cat "$fileInput" | awk "/$tagStart/{f=1} /$tagEnd/{f=0;print} f") # get text between and including tag lines; see [1]
+    echo "$OUTPUT"
+}
+
+main "$@" # pass arguments to function "main" and execute "main" (for why `"$@"`, see [2])
+exit 0 # exit normally
+
+
+
+#===References===
+# [1]: How to get text between and including specified strings: https://stackoverflow.com/a/22222219
+# [2]: How to correctly pass bash script arguments to functions: https://stackoverflow.com/a/8198970
+# [3]: How to print text to stderr instead of stdout: https://stackoverflow.com/a/2990533