This is part of kal-shlib-*
package, you should see documentation of kal-shlib-core
for more general information.
Consider this release as Very Alpha. Use at your own risk. It may or may not upgrade to a more user friendly version in future, depending on my spare time.
Nevertheless, this package supports GNU install quite well so a simple:
# autogen.sh && ./configure && make && make install
Should work (and has been tested and is currently used).
Note
you can specify a prefix thanks to --prefix=/your/location
as configure
argument.
A debian package repository is available at:
deb http://deb.kalysto.org no-dist kal-alpha
you should include this repository to your apt system and then:
apt-get update && apt-get install kal-shlib-pretty
You will need to install:
kal-shlib-core
before using this package. Note that if you choose the debian package installation, dependencies will be installed automatically.
Libraries which are files called lib*.sh
installed in $prefix/lib/shlib/
The debian package version will install directly to this location (knowing that prefix is /usr
)
It provides a quick way to get pretty and consistent outputs in ASCII:
My Title
My Section - My first Elt [ OK ] W - My sec Elt status [FAILED] - My big lengthy desc.. foo [ OFF ] - Just info.
This output is in fancy color by default, and was obtained thanks to these shell lines:
Title "My Title"
Section "My Section"
Elt "Launching My first Elt"
##
## First element
##
print_info_char W ## prints the "W" at the end of line
Elt "My first Elt" ## rewrite the label of the first element
## ... launch a script that returns errlvl 0
Feedback ## prints the "OK" depending on errlvl, and issue a linefeed.
##
## Second element
##
Elt "My sec Elt"
print_info "status"
print_status "failure"
Feed
##
## Third element
##
Elt "My big lengthy description"
## ... launch a script that returns errlvl != 0
Feedback OFF ON foo bar ## changes defaults OK/FAILED status message
## or even the ``info`` part.
##
## Final element
##
Elt "Just info."
Feed ## simply issue a line feed.
There's also a all-in-one wrapper of a task I do very often:
Wrap my-shell-command arg1 arg2 arg3
Will output:
- my-shell-command ar.. [ OK ] W
Of course, if you have larger term, the whole command line is diplayed.
And if command fails:
- my-shell-command ar.. [FAILED] W
***** ERROR in wrapped command:
***** code:
my-shell-command arg1 arg2 arg3
>>>>> Log info follows:
bash: line 1: my-shell-command: command not found
<<<<< End Log.
***** errorlevel was : 127
All this is in bright yellow and red color, it makes it much more readable.
You can also provide a better description quite easily:
Wrap -d "My description" my-shell-command arg1 arg2 arg3
Which would naturally display:
- My description [ OK ] W
And last of all, if no command is given on the command line, it'll get your standard input, which is easier to use &&
or piping or other shell-fu techniques:
Wrap -d "Do a lot of things" <<EOF
my-first-command arg1 arg2 | grep something &&
my-first-command arg1 arg2
EOF
Don't forget that Wrap will output the exact same errorlevel so you can safely:
Wrap -d "Do a lot of things" <<EOF || exit 1
my-first-command arg1 arg2 | grep something &&
my-first-command arg1 arg2
EOF
to quit your program, or with kal-shlib-common in mind:
Wrap -d "Do a lot of things" <<EOF || print_error "Argl, I can't continue safely."
my-first-command arg1 arg2 | grep something &&
my-first-command arg1 arg2
EOF
Often, we just want to the command to run quietly, but have the lengthy report of failure if it fails:
Wrap -q my-command
Will do the trick.
These commands ensure that:
- you can change Title, Section, Elt and subpart of Elt if you haven't issued a Feed.
- the final output can be seen correctly without colors thanks to ansi_color environment variable set to "no"
- color used work well with white or black backgrounds
Feedback
andWrap
commands that change depending on the last errorlevel will re-cast the same errorlevel.