App-TemplateCMD
view release on metacpan or search on metacpan
templates/bash.sh view on Meta::CPAN
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
sts=$?
fi
return ${sts}
}
function logmsg { # <msg>...
# variation of logit below always output msg to stdout as well as logfile
typeset logit_msg="${1}"
logit_stsmsg="$($NOW):${THIS}:${logit_msg}"
if [ "${LOGF}" != "" ]; then
echo "${logit_stsmsg}" >> "${LOGF}"
fi
msg "${logit_msg}"
}
function logit {
typeset logit_msg="${1}"
logit_stsmsg="$($NOW):${THIS}:${logit_msg}"
if [ "${LOGF}" != "" ]; then
echo "${logit_stsmsg}" >> "${LOGF}"
if [ ${DEBUG} -gt 0 ]; then
errmsg "${logit_msg}"
fi
else
msg "${logit_msg}"
fi
}
function ansible_errmsg { # <sts> <msg...
typeset -i sts=$1
shift 1
msg="${*}"
typeset ansible_errmsg=""
case ${sts} in
0) ansible_errmsg="OK or no hosts matched";;
1) ansible_errmsg="Error";;
2) ansible_errmsg="One or more hosts failed";;
3) ansible_errmsg="One or more hosts were unreachable";;
( run in 1.288 second using v1.01-cache-2.11-cpan-39bf76dae61 )