#!/bin/sh
#] 
#] *********************
#] $ bash "$d_bin""standard header.sh"  -  
# www.BillHowell.ca ?date? initial (2017?)

# use this in shell file : 
#**********************************
# initial setup (header)
# loose collection of handy routines [p_log,dates,becho,beval,...]
#   functions [becho, beval] track [progress, errors, variables]
# environmental variables must be set BEFORE running!  (see _Howell email.txt)

#source  "$d_bin""standard header.sh"

p_log='/dev/null'
p_log2='/dev/null'

pStartProcess="$d_bin"'bin logs/pStartProcess.txt'
pStartFunc="$d_bin"'bin logs/pStartFunc.txt'


#**************

#] [becho, beval] -  echos string to terminal and log_file

#] becho()  - 

#	becho()
#{
#echo  "$1" 
#echo  "$1"  >>"$p_log"  
#}


#] becho -  alternative allows for log networks (eg see process*[Start, Ender] below)
#] becho()  - 

	becho()
{
	echo  "$1" 
	echo  "$1"  >>"$p_log"  
	echo  "$1"  >>"$p_log2"  
#	echo  "$1"  >>"$p_log3"  
}


#] beval()  - echos command to terminal and log_file, evals string
# uses https://unix.stackexchange.com/questions/60213/gpg-asks-for-password-even-with-passphrase#68726

	beval()
{  
echo  "$1" 
echo  "$1"  >>"$p_log"  
eval  "$1"
}  

#]    examples : 
#]    beval 'find  "$d_PROJECTS""webHtmlOnly/" -type d  |  grep  "z_Archive$\|z_Old$"  |  tr  \\n  \\0  |  xargs -0  -IFILE  rm  -r  "FILE" '  





#] beval_wait()  - 

	beval_wait()
{  
echo  "$1" 
echo  "$1"  >>"$p_log"  
eval  "$1"  
wait
}  


#+-----+
# beval, becho  examples :
# see especially "$d_bin/backup.sh"

#  beval		'rsync  --stats  -rltgu  "'"$d_travel"'bin_home/"  '"$d_home"'bin"  >>"'"$p_log"'" '
# 
# example 2 : 
#iso_verify()
#{
#p_log="$d_iso""log verify $f_iso.txt"
#becho "************************************"
#becho "$date_ymdhm iso-verify"
#becho ""
#becho "Verification : "
#beval	'gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key "'"$keye_ID"'"  >>"'"$p_log"'" '
#becho	"Paste screen output below : "
#becho ""
#becho "Authentication : "
#beval	'keye_sha=$( sha256sum -b '"'$p_iso'"' )'
#becho	"keye_sig=$keye_sig"
#becho	"keye_sha=$keye_sha"
#becho ""
#beval	'code_sig=$( echo "'"$keye_sig"'"  |  sed "s/\([a-z,0-9]*\) .*/\1/" )'
#beval	'code_sha=$( echo "'"$keye_sha"'"  |  sed "s/\([a-z,0-9]*\) .*/\1/" )'
#becho	"code_sig=$code_sig"
#becho	"code_sha=$code_sha"
#becho ""
#if [ "$code_sig" == "$code_sha" ]; then
#	becho "Authentication confirmed : the source file is from the right publisher"
#else
#	becho "Authentication FAILED!!! : the source file is NOT from the right publisher"
#fi
#becho ""
#
#chown bill:bill  "$p_log"
#}

# "$d_bin"'virus/virus - clamscan.sh' : 
# 	beval  'clamscan >>"'"$p_log"'"  -ri --bell  --exclude-dir="'"$dExc1"'"  --exclude-dir="'"$dExc2"'"   --exclude-dir="'"$dExc3"'"    --exclude-dir="'"$dExc4"'"    "'"$dScan"'"  '



#] 08********08
#] [func, process]*[Start, Ender], to use process logs, uncomment alternative becho above


#] processStart							#(dir funcName) calc func start time, log to p_log
# ??Dec2025 initial, 05May2025 taken from "$d_bin"'webLocal/webLocal library.sh'  
# 13Dec2025 upgrade in use, example 'fileops test.sh' -> povrL_pStrPL_replaceType_allTests()

	processStart()
{  
	p_log='/dev/null'
	p_log2="$1"'1_pLog2 '"$2"'.txt'
	# special archive for processes: they tend to be very long!
	if  [ -f  "$p_log2" ]; then pinn_arcArchRm  "$p_log2";  fi
	date_ymdhms=$(date +"%0y%0m%0d %0kh%0Mm%0Ss")
	becho  '08********08'
	becho  "process: $2, start  $date_ymdhms"
	processStart_tSec=$(date +"%s")
	echo  "$processStart_tSec"  >"$pStartProcess"
	becho  ''
}

# 30Nov2025 example usage: 
#	# change the "process to OR[func, process] as needed when run
#	local processName='processWebSite_find'
#	local functionCmt='povrL_pStrP_replaceWith_Becho_ArXiv_ChrCde, used often to extract webSite links'  
#	funcStart  "$d_webWork"  "$processName"  "$functionCmt"
# ...
#	funcEnder  "$d_webWork"  "$d_webWork"  "$processName"  "$functionCmt" 



#] processEnder							#(t_start (sec)) calc func time duration, log to p_log
# ??Dec2025 initial, 05May2025 taken from "$d_bin"'webLocal/webLocal library.sh'  
# 13Dec2025 upgrade in use

	processEnder()
{  
	p_log='/dev/null'
	p_log2="$1"'1_pLog2 '"$2"'.txt'
	date_ymdhms=$(date +"%0y%0m%0d %0kh%0Mm%0Ss")
	becho  '+-----+'
	becho  "process: $2, endd  $date_ymdhms"

	processStart_tSec=$(  cat  "$pStartProcess"  )
	processEnder_tSec=$(date +"%s")
	#	echo  "pTimeStart (Unixsec)= $processStart_tSec"
	#	echo  "pTimeEnder (Unixsec)= $processEnder_tSec"
	t_durSc=$(($processEnder_tSec - $processStart_tSec))
	t_durMn=$( echo "scale=2;$t_durSc / 60"  |  bc )
	printf					"duration (sec):  % 5d\n"    "$t_durSc"
	printf					"duration (min):  %04.2f\n"  "$t_durMn"
	printf  >>"$p_log2"	"duration (sec):  % 5d\n"    "$t_durSc"
	printf  >>"$p_log2"	"duration (min):  %04.2f\n"  "$t_durMn"
	becho  ''

	p_log2='/dev/null'
}  


#] funcStart							#(funcName) calc func start time, log to p_log
# ?date? initial, 05May2025 taken from "$d_bin"'webLocal/webLocal library.sh'  
	funcStart()
{  
	p_log="$1"'1_pLog '"$2"'.txt'
	date_ymdhms=$(date +"%0y%0m%0d %0kh%0Mm%0Ss")
	becho  '08********08'
	becho  "function: $2, start  $date_ymdhms"
	funcStart_tSec=$(date +"%s")
	echo  "$funcStart_tSec"  >"$pStartFunc"
}


#] funcEnder							#(t_start (sec)) calc func time duration, log to p_log
# ?date? initial, 05May2025 taken from "$d_bin"'webLocal/webLocal library.sh'  
	funcEnder()
{  
	p_log="$1"'1_pLog '"$2"'.txt'
	date_ymdhms=$(date +"%0y%0m%0d %0kh%0Mm%0Ss")
	becho  '+-----+'
	becho  "function: $2, endd  $date_ymdhms"

	funcStart_tSec=$(  cat  "$pStartFunc"  )
	funcEnder_tSec=$(date +"%s")
	#	echo  "pTimeStart (Unixsec)= $funcStart_tSec"
	#	echo  "pTimeEnder (Unixsec)= $funcEnder_tSec"
	t_durSc=$(($funcEnder_tSec-$funcStart_tSec))
	t_durMn=$( echo "scale=2;$t_durSc / 60"  |  bc )
	printf					"duration (sec):  % 5d\n"    "$t_durSc"
	printf					"duration (min):  %04.2f\n"  "$t_durMn"
	printf  >>"$p_log"	"duration (sec):  % 5d\n"    "$t_durSc"
	printf  >>"$p_log"	"duration (min):  %04.2f\n"  "$t_durMn"
	becho  ''
}  



#+-----+
# manual pre-define Howell's standard enviromnemntal variables for each terminal : 
# see "_Howell - email signature PROJECTS.txt"



# enddoc
