-#!/bin/bash
-
-# Desc: Set time zone environment variable TZ
-
-yell() { echo "$0: $*" >&2; } # Yell, Die, Try Three-Fingered Claw technique; # Ref/Attrib: https://stackoverflow.com/a/25515370
-die() { yell "$*"; exit 111; }
-try() { "$@" || die "cannot $*"; }
-setTimeZoneEV(){
- # Desc: Set time zone environment variable TZ
- # Usage: setTimeZoneEV arg1
- # Version 0.1.3
- # In : arg1: 'date'-compatible timezone string (ex: "America/New_York")
- # TZDIR env var (optional; default: "/usr/share/zoneinfo")
- # Out: exports TZ (env var)
- # exit code 0 on success
- # exit code 1 on incorrect number of arguments
- # exit code 2 if unable to validate arg1
- # Depends: bash 5.0.3, printenv 8.30, yell()
- local tzDir returnState argTimeZone
-
- argTimeZone="$1";
- if ! [[ $# -eq 1 ]]; then
- yell "ERROR:Invalid argument count.";
- return 1;
- fi;
-
- # Read TZDIR env var if available
- if printenv TZDIR 1>/dev/null 2>&1; then
- tzDir="$(printenv TZDIR)";
- else
- tzDir="/usr/share/zoneinfo";
- fi;
-
- # Validate TZ string
- if ! [[ -f "$tzDir"/"$argTimeZone" ]]; then
- yell "ERROR:Invalid time zone argument.";
- return 2;
- else
- # Export ARG1 as TZ environment variable
- TZ="$argTimeZone" && export TZ && returnState="true";
- fi;
-
- # Determine function return code
- if [ "$returnState" = "true" ]; then
- return 0;
- fi;
-} # Exports TZ environment variable
-
-#==BEGIN sample code==
-date --iso-8601=seconds; echo "==============="; sleep 2
-
-date --iso-8601=seconds
-cmd1="setTimeZoneEV America/New_York"
-echo "Running:$cmd1"; $cmd1; echo "Exit code:$?"
-date --iso-8601=seconds; echo "==============="; sleep 2
-
-date --iso-8601=seconds
-cmd2="setTimeZoneEV Asia/Tokyo"
-echo "Running:$cmd2"; $cmd2; echo "Exit code:$?"
-date --iso-8601=seconds; echo "==============="; sleep 2
-
-date --iso-8601=seconds
-cmd3="setTimeZoneEV";
-echo "Running:$cmd3"; $cmd3; echo "Exit code:$?"
-date --iso-8601=seconds; echo "==============="; sleep 2
-
-date --iso-8601=seconds
-cmd4="setTimeZoneEV Pacific/Lemuria"
-echo "Running:$cmd4"; $cmd4; echo "Exit code:$?"
-date --iso-8601=seconds; echo "==============="; sleep 2
-
-try setTimeZoneEV Atlantic/Atlantis
-#==END sample code==
-
-# Author: Steven Baltakatei Sandoval
-# License: GPLv3+
-
-