#!/usr/bin/env bash log() { local level="$1" shift printf '[%s] [%s] %s\n' "$(date +'%Y-%m-%d %H:%M:%S')" "$level" "$*" } info() { log "INFO" "$@" } warn() { log "WARN" "$@" } error() { log "ERROR" "$@" } debug() { if [[ "${DEBUG:-no}" == "yes" ]]; then log "DEBUG" "$@" fi } fail() { error "$@" exit 1 } run_cmd() { if [[ "${DRY_RUN:-no}" == "yes" ]]; then info "[dry-run] $*" return 0 fi "$@" }