#!/usr/bin/env bash #==============================# # Global # #==============================# DEBUG=${DEBUG:-"false"} #==============================# # Injected # #==============================# hosts="@hosts@" help_root="@help@" #==============================# # Logging # #==============================# text_reset="\e[m" text_bold="\e[1m" text_dim="\e[2m" text_italic="\e[3m" text_underline="\e[4m" text_blink="\e[5m" text_highlight="\e[7m" text_hidden="\e[8m" text_strike="\e[9m" text_fg_red="\e[38;5;1m" text_fg_green="\e[38;5;2m" text_fg_yellow="\e[38;5;3m" text_fg_blue="\e[38;5;4m" text_fg_magenta="\e[38;5;5m" text_fg_cyan="\e[38;5;6m" text_fg_white="\e[38;5;7m" text_fg_dim="\e[38;5;8m" text_bg_red="\e[48;5;1m" text_bg_green="\e[48;5;2m" text_bg_yellow="\e[48;5;3m" text_bg_blue="\e[48;5;4m" text_bg_magenta="\e[48;5;5m" text_bg_cyan="\e[48;5;6m" text_bg_white="\e[48;5;7m" text_bg_dim="\e[48;5;8m" # Usage: log_info log_info() { echo -e "${text_fg_blue}info${text_reset} $1" } # Usage: log_todo log_todo() { echo -e "${text_bg_magenta}${text_fg_white}todo${text_reset} $1" } # Usage: log_debug log_debug() { if [[ $DEBUG == true ]]; then echo -e "${text_fg_dim}debug${text_reset} $1" fi } # Usage: log_warn log_warn() { echo -e "${text_fg_yellow}warn${text_reset} $1" } # Usage: log_error log_error() { echo -e "${text_fg_red}error${text_reset} $1" } # Usage: log_fatal [exit-code] log_fatal() { echo -e "${text_fg_white}${text_bg_red}fatal${text_reset} $1" if [ -z ${2:-} ]; then exit 1 else exit $2 fi } # Usage: clear_previous_line [number] clear_line() { echo -e "\e[${1:-"1"}A\e[2K" } # Usage: # rewrite_line # rewrite_line rewrite_line() { if [[ $# == 1 ]]; then echo -e "\e[1A\e[2K${1}" else echo -e "\e[${1}A\e[2K${2}" fi } #==============================# # Options # #==============================# positional_args=() opt_help=false opt_pick=false opt_list=false # Usage: missing_value