From 56f7186183a1c3a6fdbba89abdead0c27c1fda92 Mon Sep 17 00:00:00 2001 From: Gitea Date: Tue, 28 May 2019 23:13:07 +0200 Subject: [PATCH] update to latest commit --- bsf.sh | 195 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 108 insertions(+), 87 deletions(-) diff --git a/bsf.sh b/bsf.sh index 730903f..cf4bf26 100644 --- a/bsf.sh +++ b/bsf.sh @@ -1,6 +1,6 @@ #!/bin/bash -# BASH FRAMEWORK +# Bash Framework # Some useful bash functions to make things easier. # # Copyright (C) 2017-2018 willipink.eu @@ -20,28 +20,55 @@ # along with this program. If not, see . +LOG=True +for arg in $*; do + if [[ "$arg" == "--log" ]]; then + LOG=False + fi +done + # VARIABLES ## COLORS (use ANSI escape codes) -normal () { printf '\033[0m' ; } -red () { printf '\033[0;31m' ; } -green () { printf '\033[0;32m' ; } -black () { printf '\033[0;30m' ; } -brown () { printf '\033[0;33m' ; } -orange () { printf '\033[0;33m' ; } -blue () { printf '\033[0;34m' ; } -purple () { printf '\033[0;35m' ; } -cyan () { printf '\033[0;36m' ; } -gray () { printf '\033[0;37m' ; } -grey () { printf '\033[1;30m' ; } -lred () { printf '\033[1;31m' ; } -lgreen () { printf '\033[1;32m' ; } -yellow () { printf '\033[1;33m' ; } -lblue () { printf '\033[1;34m' ; } -lpurple (){ printf '\033[1;35m' ; } -lcyan () { printf '\033[1;36m' ; } -white () { printf '\033[1;37m' ; } - +if [[ "$LOG" == True ]]; then + normal () { printf '\033[0m' ; } + red () { printf '\033[0;31m' ; } + green () { printf '\033[0;32m' ; } + black () { printf '\033[0;30m' ; } + brown () { printf '\033[0;33m' ; } + orange () { printf '\033[0;33m' ; } + blue () { printf '\033[0;34m' ; } + purple () { printf '\033[0;35m' ; } + cyan () { printf '\033[0;36m' ; } + gray () { printf '\033[0;37m' ; } + grey () { printf '\033[1;30m' ; } + lred () { printf '\033[1;31m' ; } + lgreen () { printf '\033[1;32m' ; } + yellow () { printf '\033[1;33m' ; } + lblue () { printf '\033[1;34m' ; } + lpurple (){ printf '\033[1;35m' ; } + lcyan () { printf '\033[1;36m' ; } + white () { printf '\033[1;37m' ; } +else + normal () { return; } + red () { return; } + green () { return; } + black () { return; } + brown () { return; } + orange () { return; } + blue () { return; } + purple () { return; } + cyan () { return; } + gray () { return; } + grey () { return; } + lred () { return; } + lgreen () { return; } + yellow () { return; } + lblue () { return; } + lpurple (){ return; } + lcyan () { return; } + white () { return; } +fi # FUNCTIONS @@ -49,94 +76,88 @@ white () { printf '\033[1;37m' ; } # @param string what to say say () { printf %s\\n "$*" + return 0 } - # Print to Stdout. Do not finish with a linebreak sayn () { printf %s "$*" + return 0 +} + +# quick styler, usage "style *color*" +sayc() { + if [[ "$1" == "" ]]; then + blue + else + $1 + fi + sayn " ::: " + shift + say "$*" + normal + return 0 +} +saycn() { + $1 + sayn " ::: " + shift + sayn "$*" + normal + return 0 } # check if user is root # @return true if user is root, else false -is_root () { - if [[ "$EUID" -eq 0 ]]; then - return true - else - return false - fi -} - -# run a command as root user, if not root, or root password was not yet entered prompt for it -# @param *args: arbitrary command to execute as root root () { - if [[ "$EUID" -eq 0 ]]; then - $* - elif [[ -z $PW ]]; then - echo -n "root password: " - read -s pw - echo - export "PW=$pw" - unset pw - fi - su -c "$*" <<< "$PW" -} - -# ask a question and get the answer -# [@param 1 string]: If this is "silent" the user cannot see its keyboard input (good for passwords) -# @param 2 string: the prompt text -# @return answer: the user input -_prompt() { - if [[ "$1" == "silent" ]]; then - say "$2" - read -rs answer + if [[ "$EUID" -ne 0 ]]; then + say + sayc red "You need to be root." + exit 1 else - say "$1" - read -r answer - fi -} -# example _prompt -# _prompt "What is your answer?" -# say "You responded $answer" - - -# ask for a yes or no decision -# @param 1: the question that should be answered with yes or no -# @return: 0 if question was answered with yes, else 0 -_decide() { - until [[ $confirm =~ ^[ynYN]$ ]]; do - say "$1" - sayn "y(es) or n(o)?: " - read -r confirm - done - if [[ $confirm =~ [yY] ]]; then + say + sayc green "You are root." return 0 - else - return 1 fi } -# example _decide -# if _decide "Time to decide, yes or no?"; then -# echo "You decides yes!" -# else -# echo "You devided no!" -# fi + # Check if last call had errors. If so, print error message and exit. ok() { if [[ "$?" -ne 0 ]]; then - say "ERROR, aborting." + sayc red "ERROR, aborting." exit 1 + else + sayc green "$0 ... done" + return 0 fi } - -# quick styler, usage "style *color*" -sayc() { - [[ "$1" == "" ]] && orange || $1 - sayn " ::: " - shift - say "$*" - normal +# Do a job and check if it ran successfull. +# @param $*: command to execute +try() { + $* + if [[ "$?" -ne 0 ]]; then + sayc red "ERROR, aborting" + say + exit 1 + else + sayc green "done" + return 0 + fi +} + +# Do a job, write a message, color it and check if it ran successfull. +# @param $1 color +# @param $2 message +# @param $3 command +trycm() { + if [[ "$2" != "" ]]; then + say + sayc "$1" "$2" + fi + shift && shift + saycn normal "$*" + try $* }