fix(bkgpslog): Fix broken working dir name
authorSteven Baltakatei Sandoval <baltakatei@gmail.com>
Wed, 1 Jul 2020 19:25:47 +0000 (19:25 +0000)
committerSteven Baltakatei Sandoval <baltakatei@gmail.com>
Wed, 1 Jul 2020 19:25:47 +0000 (19:25 +0000)
- Fix broken working dir variable (was missing script start time)

- Remove UTC as default TZ (will use parent shell's env var TZ). Can
  still be customized using `--time-zone` option

- Add logic for creating temporary working directory for possible
future `--temp-dir` option. Working dir hard defaults to
`/dev/shm` (tmpfs) for now.

exec/bkgpslog

index 9210e159407a5a7917fb7ee9da7ac3a5ae666875..db2e6a4b5be3c88ce685bc5915cb45e35e4a7229 100755 (executable)
@@ -2,18 +2,19 @@
 
 # Desc: Records gps data until midnight
 # Author: Steven Baltakatei Sandoval; License: GPLv3+
-# Usage: bkgpslog --output [output dir]
+# Usage: bkgpslog -o [output dir]
 
 #==BEGIN Define script parameters==
 ## Logging Behavior parameters
 BUFFER_TTL="60"; # time between file writes
 SCRIPT_TTL="day"; # (day|hour)
-TZ="UTC"; export TZ; # Default time zone; overridden by '--time-zone=[str]' option
+#### TZ="UTC"; export TZ; # Default time zone; overridden by '--time-zone=[str]' option
+DIR_TMP_DEFAULT="/dev/shm"; # Default parent of working directory
 
-PATH="$HOME/.local/bin:$PATH"   # Add "$(systemd-path user-binaries)" path in case apps saved there
-SCRIPT_HOSTNAME=$(hostname)     # Save hostname of system running this script.
-SCRIPT_VERSION="bkgpslog 0.1.0" # Define version of script.
-DIR_TMP="/dev/shm/$(timeStart)..bkgpslog"     # Define working directory for temproary files
+SCRIPT_TIME_START=$(date +%Y%m%dT%H%M%S.%N);
+PATH="$HOME/.local/bin:$PATH";   # Add "$(systemd-path user-binaries)" path in case apps saved there
+SCRIPT_HOSTNAME=$(hostname);     # Save hostname of system running this script.
+SCRIPT_VERSION="bkgpslog 0.1.0"; # Define version of script.
 
 declare -Ag appRollCall # Associative array for storing app status
 declare -Ag fileRollCall # Associative array for storing file status
@@ -602,6 +603,18 @@ setScriptTTL() {
 main() {
     processArguments "$@" # Process arguments.
 
+    # Determine working directory
+    if [[ -d "$DIR_TMP_DEFAULT" ]]; then
+       DIR_TMP_BASE="$DIR_TMP_DEFAULT"; # Use default working directory parent (ex: '/dev/shm')
+    #### elif [[ -d /tmp ]]; then
+    ####       yell "WARNING:/dev/shm not available. Falling back to /tmp .";
+    ####       DIR_TMP_BASE="/tmp";
+    else
+       yell "ERROR:No valid working directory available. Exiting.";
+       exit 1;
+    fi
+    DIR_TMP="$DIR_TMP_BASE"/"$SCRIPT_TIME_START""..bkgpslog";     # Define working directory for temproary files
+    
     # Set output encryption and compression option strings
     if [[ "$OPTION_ENCRYPT" = "true" ]]; then # Check if encryption option active.
        if checkapp age; then # Check that age is available.
@@ -661,7 +674,7 @@ main() {
     ## Write bkgpslog version to DIR_TMP/VERSION
     echo "$0"" Version:""$SCRIPT_VERSION" >> "$DIR_TMP/VERSION" && vbm "DEBUG:VERSION created."
     ## Create empty tar archive at PATHOUT_TAR
-    try tar --create --directory="$DIR_TMP" --file="$PATHOUT_TAR" --files-from=/dev/null && vbm "DEBUG:bufferRam.tar created."
+    try tar --create --directory="$DIR_TMP" --file="$PATHOUT_TAR" --files-from=/dev/null && vbm "DEBUG:""$PATHOUT_TAR"" created."
     ## Append VERSION file to PATHOUT_TAR
     try tar --append --directory="$DIR_TMP" --file="$PATHOUT_TAR" "VERSION" && vbm "DEBUG:VERSION added to $PATHOUT_TAR"
     
@@ -671,7 +684,7 @@ main() {
     while [[ "$SECONDS" -lt "$scriptTTL" ]]; do
        # Determine file paths (time is start of buffer period)
        FILEOUT_BASENAME="$timeStart""--""$bufferTTL_STR""..""$SCRIPT_HOSTNAME""_location" ; # ISO-8601 YYYYmmddTHHMMSS+zzP[$bufferTTL]S
-       ## Files saved to tmpfs memory (DIR_TMP)
+       ## Files saved to DIR_TMP
        PATHOUT_NMEA="$DIR_TMP"/"$FILEOUT_BASENAME".nmea"$CMD_COMPRESS_SUFFIX""$CMD_ENCRYPT_SUFFIX" ; 
        PATHOUT_GPX="$DIR_TMP"/"$FILEOUT_BASENAME".gpx"$CMD_COMPRESS_SUFFIX""$CMD_ENCRYPT_SUFFIX" ;
        PATHOUT_KML="$DIR_TMP"/"$FILEOUT_BASENAME".kml"$CMD_COMPRESS_SUFFIX""$CMD_ENCRYPT_SUFFIX" ;