X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/blobdiff_plain/849106f7246e47bc077d7f3b8228cec717a8e63d..26f0533782d8c57fb95b8df4f55057edcbf17703:/unitproc/bkt-setTimeZoneEV diff --git a/unitproc/bkt-setTimeZoneEV b/unitproc/bkt-setTimeZoneEV new file mode 100644 index 0000000..f51e16a --- /dev/null +++ b/unitproc/bkt-setTimeZoneEV @@ -0,0 +1,78 @@ +#!/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+ + +