return 1;
fi;
} # Check age pubkey
+checkMakeTar() {
+ # Desc: Checks that a valid tar archive exists, creates one otherwise
+ # Usage: checkMakeTar [ path ]
+ # Version: 1.0.2
+ # Input: arg1: path of tar archive
+ # Output: exit code 0 : tar readable
+ # exit code 1 : tar missing; created
+ # exit code 2 : tar not readable; moved; replaced
+ # Depends: bash 5, date 8, tar 1, try()
+ local pathTar returnFlag0 returnFlag1 returnFlag2
+ pathTar="$1";
+
+ # Check if file is a valid tar archive
+ if tar --list --file="$pathTar" 1>/dev/null 2>&1; then
+ ## T1: return success
+ returnFlag0="tar valid";
+ else
+ ## F1: Check if file exists
+ if [[ -f "$pathTar" ]]; then
+ ### T: Rename file
+ try mv "$pathTar" "$pathTar""--broken--""$(date +%Y%m%dT%H%M%S)" && \
+ returnFlag1="tar moved";
+ else
+ ### F: -
+ :
+ fi;
+ ## F2: Create tar archive, return 0
+ try tar --create --file="$pathTar" --files-from=/dev/null && \
+ returnFlag2="tar created";
+ fi;
+
+ # Determine function return code
+ if [[ "$returnFlag0" = "tar valid" ]]; then
+ return 0;
+ elif [[ "$returnFlag2" = "tar created" ]] && ! [[ "$returnFlag1" = "tar moved" ]]; then
+ return 1; # tar missing so created
+ elif [[ "$returnFlag2" = "tar created" ]] && [[ "$returnFlag1" = "tar moved" ]]; then
+ return 2; # tar not readable so moved; replaced
+ fi;
+} # checks if arg1 is tar; creates one otherwise
dateShort(){
# Desc: Date without separators (YYYYmmdd)
# Usage: dateShort ([str date])
fi
} # Get duration (ex: PT10M4S )
+timeUntilNextDay(){
+ # Desc: Report seconds until next day.
+ # Version: 1.0.2
+ # Output: stdout: integer seconds until next day
+ # Output: exit code 0 if stdout > 0; 1 if stdout = 0; 2 if stdout < 0
+ # Usage: timeUntilNextDay
+ # Usage: if ! myTTL="$(timeUntilNextDay)"; then yell "ERROR in if statement"; exit 1; fi
+ # Depends: date 8, echo 8, yell, try
+
+ local returnState timeCurrent timeNextDay secondsUntilNextDay returnState
+ timeCurrent="$(date --iso-8601=seconds)" ; # Produce `date`-parsable current timestamp with resolution of 1 second.
+ timeNextDay="$(date -d "$timeCurrent next day" --iso-8601=date)"; # Produce timestamp of beginning of tomorrow with resolution of 1 second.
+ secondsUntilNextDay="$(( $(date +%s -d "$timeNextDay") - $(date +%s -d "$timeCurrent") ))" ; # Calculate seconds until closest future midnight (res. 1 second).
+ if [[ "$secondsUntilNextDay" -gt 0 ]]; then
+ returnState="true";
+ elif [[ "$secondsUntilNextDay" -eq 0 ]]; then
+ returnState="warning_zero";
+ yell "WARNING:Reported time until next day exactly zero.";
+ elif [[ "$secondsUntilNextDay" -lt 0 ]]; then
+ returnState="warning_negative";
+ yell "WARNING:Reported time until next day is negative.";
+ fi
+
+ try echo "$secondsUntilNextDay"; # Report
+
+ # Determine function return code
+ if [[ "$returnState" = "true" ]]; then
+ return 0;
+ elif [[ "$returnState" = "warning_zero" ]]; then
+ return 1;
+ elif [[ "$returnState" = "warning_negative" ]]; then
+ return 2;
+ fi
+} # Report seconds until next day
+timeUntilNextHour(){
+ # Desc: Report seconds until next hour
+ # Version 1.0.1
+ # Output: stdout: integer seconds until next hour
+ # Output: exit code 0 if stdout > 0; 1 if stdout = 0; 2 if stdout < 0
+ # Usage: timeUntilNextHour
+ # Usage: if ! myTTL="$(timeUntilNextHour)"; then yell "ERROR in if statement"; exit 1; fi
+
+ local returnState timeCurrent timeNextHour secondsUntilNextHour
+ timeCurrent="$(date --iso-8601=seconds)"; # Produce `date`-parsable current timestamp with resolution of 1 second.
+ timeNextHour="$(date -d "$timeCurrent next hour" --iso-8601=hours)"; # Produce `date`-parsable current time stamp with resolution of 1 second.
+ secondsUntilNextHour="$(( $(date +%s -d "$timeNextHour") - $(date +%s -d "$timeCurrent") ))"; # Calculate seconds until next hour (res. 1 second).
+ if [[ "$secondsUntilNextHour" -gt 0 ]]; then
+ returnState="true";
+ elif [[ "$secondsUntilNextHour" -eq 0 ]]; then
+ returnState="warning_zero";
+ yell "WARNING:Reported time until next hour exactly zero.";
+ elif [[ "$secondsUntilNextHour" -lt 0 ]]; then
+ returnState="warning_negative";
+ yell "WARNING:Reported time until next hour is negative.";
+ fi;
+
+ try echo "$secondsUntilNextHour"; # Report
+
+ # Determine function return code
+ if [[ "$returnState" = "true" ]]; then
+ return 0;
+ elif [[ "$returnState" = "warning_zero" ]]; then
+ return 1;
+ elif [[ "$returnState" = "warning_negative" ]]; then
+ return 2;
+ fi;
+} # Report seconds until next hour
validateInput() {
# Desc: Validates Input
# Usage: validateInput [str input] [str input type]
magicParseProcessStrings; # Sets arrays: procStrings, procFileExts
## React to "-l" (output file label) option
magicParseLabel; # sets label (ex: "_location")
- ## React to "-w" (how to name raw stdin file) option
- magicParseStoreRaw; # sets raw_suffix
# Perform secondary setup operations
## Set script lifespan (scriptTTL from scriptTTL_TE)
bufferRound=0;
while [[ $SECONDS -lt "scriptTTL" ]]; do
bufferTOD="$((SECONDS + bufferTTL))"; # Set buffer round time-of-death
- lineCount=0; # Debug counter
# 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;
# Create dir_tmp if missing
if ! [[ -d "$dir_tmp" ]]; then yell "ERROR:dir_tmp existence failure:$dir_tmp"; try mkdir "$dir_tmp" && vbm "DEBUG:Working dir recreated dir_tmp:$dir_tmp"; fi