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 )