App-TemplateCMD
view release on metacpan or search on metacpan
templates/bash.sh view on Meta::CPAN
typeset -i dl_lvl=${1}
shift 1
dl_msg="${*}"
if [ ${DEBUG} -ge ${dl_lvl} ]; then
errmsg "#${dl_lvl}: ${dl_msg}"
fi
}
function dbg { # <message>
dbglvl 1 "${*}"
}
function display_var { # <dv_var> [ <comment description> ]
typeset dv_var="${1}"
shift 1
#
typeset dv_comment
if [ $# -gt 0 ]; then
dv_comment=" - ${*}"
else
dv_comment=""
fi
eval dv_value="\$${dv_var}"
printf "# %-10s : %s%s\n" "${dv_var}" "${dv_value}" "${dv_comment}"
}
function dbg_val { # <var>
typeset var="${1}"
shift 1
if [ ${DEBUG} -gt 0 ]; then
display_var "${var}" $*
fi
}
function deletefile { # <filename>
typeset fnm="${1}"
if [ -e "${fnm}" ]; then
dbg "# deletefile: file exists: \"${fnm}\""
rm -f "${fnm}" > /dev/null 2> /dev/null
# set status in case file didn't go away
[ ! -e "${fnm}" ]
return $?
fi
return 2
}
function create_dir { # <dirname>
typeset dirname="${1}"
[ ! -d "${dirname}" ] && mkdir -p "${dirname}"
[ -d "${dirname}" ]
return $?
}
function input_withprompt { # <promptstr>
typeset promptstr="${1}"
typeset var=""
if [ "${BASH_VERSION}" != "" ]; then
read -p "${promptstr}" var
else
read "var?${promptstr}"
fi
msg "${var}"
}
function tmpnam { # <prefix
typeset prefix="${1}"
# Generate a uniq name in ${TMPDIR} checking for pre-existing files
typeset tn_name="${TMPDIR:-/tmp}/${prefix}_${USER}"
typeset tn_postfix="$$"
while [ -e "${tn_name}.${tn_postfix}" ]; do
tn_postfix="$( printf "%d_%d" $$ ${RANDOM} )"
done
# its still possible to get a name conflict, but very unlikely
printf "${tn_name}.${tn_postfix}"
}
function lockfile_get { # <lckfile> [ <lck_wait> [ lck_tries ]]
# return 0 if we got the lock
# return 1 if we failed
# shell 0 is true !=0 is false
typeset lckfile="${1}"
typeset -i lck_wait=${2:-5}
typeset -i lck_tries=${3:-2}
typeset -i sts=42
typeset hname="$( uname -n )"
if lockfile -${lck_wait} -r ${lck_tries} "${lckfile}"; then
echo "$(date +"%Y:%m:%d:%T:$hname}:$$")" >> "${lckfile}"
sts=$?
if [ ${sts} -ne 0 ]; then
echo "# Failed to create/update lockfile \"${lckfile}\":${sts}"
rm -f "${lckfile}"
exit ${sts}
# unreachable but stickly would return 0 false
sts=1
else
# Got the lock and updated return true aka 0
sts=0
fi
else
sts=1
echo "Job already processing !! Please wait till the job completes"
fi
return ${sts}
}
function lockfile_release { # <lckfile>
# we trusting you that you own this lockfile, you better not be lying!!!
typeset lckfile="${1}"
typeset -i sts=0
if [ -f "${lckfile}" ]; then
rm -f "${lckfile}"
[ ! -e "${lckfile}" ] # set status on ! exists
( run in 1.482 second using v1.01-cache-2.11-cpan-6aa56a78535 )