Linux – Using Gentoo’s `ebegin`, `eend` etc under Ubuntu

gentoolinuxshell-scriptingUbuntu

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 echos, but we'd rather not?

Best Answer

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.