# Get the number of avaialble cores (threads). function _core_count() { cat /proc/cpuinfo | grep ^processor | wc -l } # Get the number of available memory (in mebibytes). function _mem_free() { free -m | sed -n -e '2p' | awk '{print $7}' } # Function-wrapper to iterate with specified function with provided files. # By default Iterates on all non-hidden files and directories. # List of variables available to FUNCTION: target - current file, count - current item index, total - sum of targets, failed - count of previously failed items, skipped - count of skipped files, status - status line (not recommended to use). # Usage: _iterate_targets [FILES] function _iterate_targets() { local IFS=$'\n' local foo="${1}" local targets=("${@:2}") local total=${#targets[@]} local count=0 local failed=0 local skipped=0 local code=0 # set dafult value to target all supported archives. if [[ "${targets}" = "" ]]; then _error "No targets provided." return 1 fi # iterate each target. for target in "${targets[@]}"; do # increment counter. ((count++)) # status info. local status="[${count}/${total}] ${target}" _info "${status}" # Call function. ${foo} "${target}" # Show error. if [[ ${?} != 0 ]]; then ((failed++)) _error "${status}: Failed." fi # Add newline if not the last one. [[ "${count}" = "${total}" ]] || echo done # Show skipped. if [[ ${skipped} != 0 ]]; then echo echo -e "${color_byellow}Skipped: ${skipped}.${color_default}" fi # Show error. if [[ ${failed} != 0 ]]; then [[ "${skipped}" = 0 ]] && echo echo -e "${color_bred}Failed: ${failed}.${color_default}" false fi } # Skip current iteration. # Usage: _iterate_skip [MESSAGE] function _iterate_skip() { ((skipped++)) [[ "${*}" = "" ]] || echo -e "${color_byellow}${*}${color_default}" } # Report an error. # Always returns code 1. # Usage: _error function _error() { >&2 echo -e "${color_bred}${*}${color_default}" return 1 } # Report a warning. # Usage: _warn function _warn() { >&2 echo -e "${color_byellow}${*}${color_default}" } # Report a debug. # Usage: _debug function _debug() { >&2 echo -e "${color_bwhite}${*}${color_default}" } # Report an info. # Usage: _info function _info() { >&2 echo -e "${color_bwhite}${*}${color_default}" } # Check if array contains an element (strict). # Usage: _contains function _contains() { local IFS=$'\n' local target="${1}" local array="${@:2}" if [[ "${target}" = "" ]] || [[ "${array}" = "" ]]; then help _contains return 2 fi for item in ${array[@]}; do [[ "${item}" = "${target}" ]] && return 0 done return 1 } # Check if inside Tmux. function _is_tmux() { [[ "${TERM_PROGRAM}" = "tmux" ]] } # Check if root. function _is_root() { [[ "${UID}" = 0 ]] }