From 14354b96301e252f52b5315e63b43f44dbac5314 Mon Sep 17 00:00:00 2001 From: Harald Pfeiffer Date: Sun, 16 Jun 2024 13:07:26 +0200 Subject: InComm --- fs/usr/lib/lirion/ln-initfunctions | 104 +++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 fs/usr/lib/lirion/ln-initfunctions (limited to 'fs/usr/lib/lirion') diff --git a/fs/usr/lib/lirion/ln-initfunctions b/fs/usr/lib/lirion/ln-initfunctions new file mode 100755 index 0000000..81d74e6 --- /dev/null +++ b/fs/usr/lib/lirion/ln-initfunctions @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2119,SC2120 + +# This serves as an alternative to "init functions". So the objective is to display +# an abstract about what a script is doing in the background and delivering a status. +# E.g.: +# - lnbegin "Doing awesome stuff" +# - do-something -q 2>/dev/null +# - case "$?" in +# 0) lnok ;; +# 255) lnwarn "Something uncritical went wrong" ;; +# *) lnfail "kaboom!" 101;; +# esac +# +# This script uses unicode characters. A "legacy" variant where we fall back +# to having e.g. "[ OK ]" instead of a checkmark is planned. (Earlier versions had that, too.) +# +# For a demo of the looks, use SCRIPTNAME -d. +# +# LICENCE: LGPLv3 +# AUTHOR: coding æt lirion dot de + +declare -x LNINITMSG + +function lnbegin { + printf "[⏲] %b\\033[s..." "$1" + export LNINITMSG="$1" +} +function lnok { + printf "\\r\\033[92m[✔] %b\\033[u\\033[K" "$LNINITMSG" + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[92m.\033[0m\\n" + unset LNINITMSG +} +function lnsucc { + lnok "$1" +} +function lninfo { + printf "\\r[ℹ]\\033[u\\033[K" + [ -n "$1" ]&&printf ": %b" "$1" + printf ".\\n" + unset LNINITMSG +} +function lnwarn { + printf "\\r\\033[33m[\\033[1m⚠\\033[0m\\033[33m] %b\\033[u\\033[K" "$LNINITMSG" + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[33m.\\033[0m\\n" + unset LNINITMSG + return 255 +} +function lnfail { + printf "\\r\\033[31m[✖] \\033[31m%b\\033[u\\033[K" "$LNINITMSG" # was 91m before + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[31m.\\033[0m\\n" + unset LNINITMSG + [ -n "$2" ]&&return "$2"||return 1 +} +function lnskip { + printf "\\r\\033[37m[↪] %b\\033[u\\033[K" "$LNINITMSG" + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[37m.\033[0m\\n" + unset LNINITMSG +} +function lnretry { + printf "\\r\\033[36m[↻] %b\\033[u\\033[K" "$LNINITMSG" + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[36m.\\033[0m\\n" + unset LNINITMSG +} +function lnquit { + printf "\\r\\033[34m[⏻] %b\\033[u\\033[K" "$LNINITMSG" + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[34m.\\033[0m\\n" + unset LNINITMSG +} +function lnprog { + # here, we neither have a newline at the end of the function nor do we + # remove the LNINITMSG variable. It is designated for additional + # information _during execution_. + [ -z "$1" ] && return 0 + printf "\\033[u\\033[K \\033[38;5;237m(%b)\\033[0m" "$1" +} +function lnsmil { + printf "\\r\\033[35m[☺] %b\\033[u\\033[K" "$LNINITMSG" + [ -n "$1" ]&&printf " \\033[37m(%b)\\033[0m" "$1" + printf "\\033[35m.\\033[0m\\n" + unset LNINITMSG +} +function demo { + lnbegin "Progress message";sleep 0.31337;lnprog "additional progress message (does not terminate)";printf -- " -- \\n" + lnbegin "OK message";sleep 0.31337;lnok "additional success message" + lnbegin "Info message";sleep 0.31337;lninfo "information without further steps / return value" + lnbegin "Warning message";sleep 0.31337;lnwarn "additional warning info" + lnbegin "Failure message";sleep 0.31337;lnfail "additional failure info" + lnbegin "Skip message";sleep 0.31337;lnskip "additional skip reason" + lnbegin "Retry message";sleep 0.31337;lnretry "additional reason for new run" + lnbegin "Quit message";sleep 0.31337;lnquit "additional quit information" + lnbegin "Lulz";sleep 0.31337;lnsmil + unset LNINITMSG +} +if [ "$1" == "-d" ] || [ "$1" == "--demo" ];then + demo + exit 0 +fi -- cgit v1.2.3