We're quite fond of the style of the ebegin
, eend
, eerror
, eindent
etc commands used by Portage and other tools on Gentoo. The green-yellow-red bullets and standard layout make for very quick spotting of errors, on what would otherwise be very grey command line output.
#!/bin/sh
source /etc/init.d/functions.sh
ebegin "Copying data"
rsync ....
eend $?
Producing output similar to:
* Copying data... [ OK ]
As a result we're using these commands in some of our common shell scripts, which is a problem for the people using Ubuntu and other linuxes. (linuces? linuxen? linucae? other distros)
On Gentoo these functions are provided by OpenRC, and imported with functions.sh
file (whose exact position seems to vary slightly). But is there a simple way of getting these commands on Ubuntu?
In theory we could replace them all with dull echo
s, but we'd rather not?
With sysvinit jobs, you can probably just copy those functions from gentoo into a package which you install into your machines and then source in the same way. However, this won't solve the issue for upstart jobs.
There is a plymouth<->upstart bridge that uses dbus to show starting/started/stopped/etc. for upstart jobs in plymouth in a structured way (necessary for plymouth to do so since jobs start in parallel). To color code these would probably mean patching the plymouth details plugin with ncurses and using ncurses calls to change the color.
I ended up writing my own imitation of it:
https://github.com/marcusatbang/efunctions