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 )