Merge branch 'develop' into feature/bash-logging-filter/BK-2020-02
[EVA-2020-02.git] / exec / bklog
index 4d75249db7b299f867ec4cd9ae3bd573daba882e..b908ad90cb946b7fbb5b349bb5e9d69253b1aed1 100644 (file)
@@ -1,38 +1,66 @@
 #!/bin/bash
 # Desc: Compresses, encrypts, and writes stdin every 5 seconds
 
+#==BEGIN Define script parameters==
+#===BEGIN Initialize variables===
+
+# Logging Behavior parameters
+scriptTTL_TE="day"; # Time element at the end of which script terminates
+scriptTTL="15"; # (temp) Time (seconds) until script terminates
+bufferTTL="5"; # Time-to-live (seconds) for each buffer round
+dirTempDefault="/dev/shm"; # Default parent of working directory
+
+# Script Metadata
+scriptVersion="0.1.1";          # Define version of script.
+scriptName="bklog";             # Define basename of script file.
+PATH="$HOME/.local/bin:$PATH"; # Add "$(systemd-path user-binaries)" path in case user apps saved there
+
+# Arrays
+declare -a buffer # Initialize buffer array
+
+# Variables
+
+#===END Initialize 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
-declare -a buffer # Initialize buffer array
-scriptTTL="15";
-bufferTTL="5";
-magicWriteBuffer() {
-    printf "%s\n" "${buffer[@]}" | cat | cat | cat >> /dev/shm/$(date +%s)..bkFreqWrite-output1.txt;
-    printf "%s\n" "${buffer[@]}" | cat | cat | cat >> /dev/shm/$(date +%s)..bkFreqWrite-output2.txt;
-    printf "%s\n" "${buffer[@]}" | cat | cat | cat >> /dev/shm/$(date +%s)..bkFreqWrite-output3.txt;
+magicProcessWriteBuffer() {
+    printf "%s\\n" "${buffer[@]}" | cat | cat | cat >> "/dev/shm/$(date +%s)..bkFreqWrite-output1.txt";
+    printf "%s\\n" "${buffer[@]}" | cat | cat | cat >> "/dev/shm/$(date +%s)..bkFreqWrite-output2.txt";
+    printf "%s\\n" "${buffer[@]}" | cat | cat | cat >> "/dev/shm/$(date +%s)..bkFreqWrite-output3.txt";
+} # Process and Write buffer
+main() {
+    bufferRound=0;
+    # Run until script TTL seconds pass
+    while [[ $SECONDS -lt "scriptTTL" ]]; do
+       bufferTOD="$((SECONDS + bufferTTL))";
+       lineCount=0;
+       # Consume stdin to fill buffer until buffer time-of-death (TOD) arrives
+       while read -r -t "$bufferTTL" line && [[ $SECONDS -lt "$bufferTOD" ]]; do
+           # Append line to buffer array
+           buffer+=("$line");
+           echo "DEBUG:Processing line:$lineCount";
+           echo "DEBUG:Current line   :$line";
+           echo "DEBUG:buf elem count :${#buffer[@]}";
+           ((lineCount++));
+       done;
+       # Export buffer to asynchronous processing.
+       magicProcessWriteBuffer &
+       unset buffer; # Clear buffer array for next bufferRound
+       # Increment buffer round
+       ((bufferRound++));
+    done;
 }
 
-bufferRound=0;
-# Run until script TTL seconds pass
-while [[ $SECONDS -lt "scriptTTL" ]]; do
-    bufferTOD="$((SECONDS + $bufferTTL))";
-    lineCount=0;
-    # Consume stdin to fill buffer until buffer time-of-death (TOD) arrives
-    while read -r -t "$bufferTTL" line && [[ $SECONDS -lt "$bufferTOD" ]]; do
-       # Append line to buffer array
-       buffer+=("$line");
-       echo "DEBUG:Processing line:$lineCount";
-       echo "DEBUG:Current line   :$line";
-       echo "DEBUG:buf elem count :${#buffer[@]}";
-       ((lineCount++));
-    done;
-    # Export buffer to asynchronous processing.
-    magicWriteBuffer &
-    unset buffer; # Clear buffer array for next bufferRound
-    # Increment buffer round
-    ((bufferRound++));
-done;
-
-# Author: Steven Baltakatei Sandoval
+#===END Declare local script functions===
+#==END Define script parameters==
+
+#==BEGIN Perform work and exit==
+main "$@" # Run main function.
+exit 0;
+#==END Perform work and exit==
+
+# Author: Steven Baltakatei Sandoval;
 # License: GPLv3+