First commit

This commit is contained in:
Yorick Barbanneau 2018-11-08 00:18:02 +01:00
commit e1f41d37fa
3 changed files with 121 additions and 0 deletions

32
README.md Normal file
View file

@ -0,0 +1,32 @@
BASH message display library
----------------------------
A simple library for display text (bold, underline, color) on screen. I use it
for my script to make output more eye candy.
## Quick example
```bash
#import library
source /message/message.sh
#call msg()
msg "green" "This is a **formated** message"
```
## more function
This little library contain some helper function with pre-selected color. These
function automaticaly add `\n` caracter at the end of the message.
* `error()` : display message in red with ERROR: before the text.If variable
`EXIT_ON_ERROR` equal 1, calling this function terminate the script with
`$ERROR_CODE`
* `warning()` : display message in yellow with WARNING: before the text
* `debu()` : display message only if `DEBUG` variable contain `1`, color is
cyan and display DEBUG: before message
## Licence
Do what you want and feel free to send me a message or offer me a beer if you
come near Bordeaux - France.

23
example/example.sh Executable file
View file

@ -0,0 +1,23 @@
#!/bin/bash
# message librairy example
source ../message.sh
EXIT_ON_ERROR=1
debug "This message wille not be displayed because debug is not activated"
msg "\n**__welcome to message lib example__**\n"
msg "red" "\nMessages "
msg "green" "can "
msg "yellow" "be "
msg "blue" "colored"
msg " **bold** and __underline__ \n\n"
warning "Text with **a warning**"
msg "and when DEBUG=1\n"
DEBUG=1
debug "with debug message"
error "Or a **real** and __serious__ error that exit script when EXIT_ON_ERROR=1"

66
message.sh Normal file
View file

@ -0,0 +1,66 @@
#/bin/bash
#
# message ()
# ----------
#
# External library to display colored messages
#
DEBUG=0
EXIT_ON_ERROR=0
ERROR_CODE=10
DATE_FORMAT=""
msg () {
declare -A attr
local c="default"
#foreground colors
attr[default]="\e[39m"
attr[red]="\e[31m"
attr[green]="\e[32m"
attr[yellow]="\e[33m"
attr[blue]="\e[34m"
attr[magenta]="\e[35m"
attr[cyan]="\e[36m"
#formatting
attr[reset]="\e[0m"
attr[bold]="\e[1m"
attr[r_bold]="\e[22m"
attr[underl]="\e[4m"
attr[r_underl]="\e[24m"
if [[ $1 =~ ^(red|green|yellow|blue|magenta|cyan)$ ]]
then
c=$1
shift
else
c="default"
fi
#printf "Select color %s with numero %s\n" $c ${attr[$c]}
#variables
local message=$(echo "$@" | sed -E "
s/\*\*([^\*\*]*)\*\*/\\${attr[bold]}\1\\${attr[r_bold]}/g;
s/__([^__]*)__/\\${attr[underl]}\1\\${attr[r_underl]}/g
")
printf "${attr[$c]}${message}${attr[reset]}"
}
error (){
msg "red" "ERROR : $@\n"
[[ $EXIT_ON_ERROR -eq 1 ]] && exit $ERROR_CODE
exit
}
warning () {
msg "yellow" "WARNING : $@\n"
}
debug(){
if [ $DEBUG -eq 1 ]
then
local message=$(echo "$@")
msg "cyan" "DEBUG : ${message}\n"
fi
}