#!/bin/bash # This file contains helpful aliases for manipulating the output text to the terminal as # well as functions for one-command augmented printing. # os::text::reset resets the terminal output to default if it is called in a TTY function os::text::reset() { if os::text::internal::is_tty; then tput sgr0 fi } readonly -f os::text::reset # os::text::bold sets the terminal output to bold text if it is called in a TTY function os::text::bold() { if os::text::internal::is_tty; then tput bold fi } readonly -f os::text::bold # os::text::red sets the terminal output to red text if it is called in a TTY function os::text::red() { if os::text::internal::is_tty; then tput setaf 1 fi } readonly -f os::text::red # os::text::green sets the terminal output to green text if it is called in a TTY function os::text::green() { if os::text::internal::is_tty; then tput setaf 2 fi } readonly -f os::text::green # os::text::blue sets the terminal output to blue text if it is called in a TTY function os::text::blue() { if os::text::internal::is_tty; then tput setaf 4 fi } readonly -f os::text::blue # os::text::yellow sets the terminal output to yellow text if it is called in a TTY function os::text::yellow() { if os::text::internal::is_tty; then tput setaf 11 fi } readonly -f os::text::yellow # os::text::clear_last_line clears the text from the last line of output to the # terminal and leaves the cursor on that line to allow for overwriting that text # if it is called in a TTY function os::text::clear_last_line() { if os::text::internal::is_tty; then tput cuu 1 tput el fi } readonly -f os::text::clear_last_line # os::text::clear_string attempts to clear the entirety of a string from the terminal. # If the string contains literal tabs or other characters that take up more than one # character space in output, or if the window size is changed before this function # is called, it will not function correctly. # No action is taken if this is called outside of a TTY function os::text::clear_string() { local -r string="$1" if os::text::internal::is_tty; then echo "${string}" | while read line; do # num_lines is the number of terminal lines this one line of output # would have taken up with the current terminal width in columns local num_lines=$(( ${#line} / $( tput cols ) )) for (( i = 0; i <= num_lines; i++ )); do os::text::clear_last_line done done fi } # os::text::internal::is_tty determines if we are outputting to a TTY function os::text::internal::is_tty() { [[ -t 1 && -n "${TERM:-}" ]] } readonly -f os::text::internal::is_tty # os::text::print_bold prints all input in bold text function os::text::print_bold() { os::text::bold echo "${*}" os::text::reset } readonly -f os::text::print_bold # os::text::print_red prints all input in red text function os::text::print_red() { os::text::red echo "${*}" os::text::reset } readonly -f os::text::print_red # os::text::print_red_bold prints all input in bold red text function os::text::print_red_bold() { os::text::red os::text::bold echo "${*}" os::text::reset } readonly -f os::text::print_red_bold # os::text::print_green prints all input in green text function os::text::print_green() { os::text::green echo "${*}" os::text::reset } readonly -f os::text::print_green # os::text::print_green_bold prints all input in bold green text function os::text::print_green_bold() { os::text::green os::text::bold echo "${*}" os::text::reset } readonly -f os::text::print_green_bold # os::text::print_blue prints all input in blue text function os::text::print_blue() { os::text::blue echo "${*}" os::text::reset } readonly -f os::text::print_blue # os::text::print_blue_bold prints all input in bold blue text function os::text::print_blue_bold() { os::text::blue os::text::bold echo "${*}" os::text::reset } readonly -f os::text::print_blue_bold # os::text::print_yellow prints all input in yellow text function os::text::print_yellow() { os::text::yellow echo "${*}" os::text::reset } readonly -f os::text::print_yellow # os::text::print_yellow_bold prints all input in bold yellow text function os::text::print_yellow_bold() { os::text::yellow os::text::bold echo "${*}" os::text::reset } readonly -f os::text::print_yellow_bold