_bashers_color_init() {
  BASHERS_BOLD=""
  BASHERS_CYAN=""
  BASHERS_RESET=""
  if [[ -t 1 && -z "${NO_COLOR-}" ]]; then
    BASHERS_BOLD=$'\033[1m'
    BASHERS_CYAN=$'\033[36m'
    BASHERS_RESET=$'\033[0m'
  fi
}

_bashers_print_title() {
  printf "%s%s%s\n" "$BASHERS_BOLD" "$1" "$BASHERS_RESET"
}

_bashers_print_usage() {
  printf "%sUsage:%s %s\n" "$BASHERS_BOLD" "$BASHERS_RESET" "$1"
}

_bashers_print_section() {
  printf "\n%s%s:%s\n" "$BASHERS_BOLD" "$1" "$BASHERS_RESET"
}

_bashers_print_kv() {
  printf "  %s%-12s%s %s\n" "$BASHERS_CYAN" "$1" "$BASHERS_RESET" "$2"
}

_bashers_print_bullet() {
  printf "  %s-%s %s\n" "$BASHERS_CYAN" "$BASHERS_RESET" "$1"
}

_bashers_run() {
  local -a cmd=("$@")
  if [[ -t 1 && -z "${NO_SPINNER-}" ]]; then
    local spin='|/-\\'
    local i=0
    "${cmd[@]}" &
    local pid=$!
    while kill -0 "$pid" 2>/dev/null; do
      printf "\r%s%s%s" "$BASHERS_CYAN" "${spin:i%4:1}" "$BASHERS_RESET" >&2
      sleep 0.1
      i=$((i + 1))
    done
    wait "$pid"
    local status=$?
    printf "\r\033[K" >&2
    return "$status"
  fi

  "${cmd[@]}"
}
