NAME
Term::GentooFunctions - provides gentoo's einfo, ewarn, eerror, ebegin and eend.
SYNOPSIS
use Term::GentooFunctions qw(:all)
einfo "this is kinda neat...";
ebegin "I hope this works...";
....
eend $truefalse; # the result is backwards of gentoo; ie, 0 is bad, 1 is good.
PRINTS
einfo
, ewarn
, and eerror
show informative lines with stars at the beginning colored green, yellow, and red (respectively).
BOOKENDS
ebegin
and eend
show the beginning and ends of things. ebegin
also prints the given error message using einfo.
eend
returns the result passed in for handy returns at the bottom of functions...
sub eg {
eend 0; # eg now returns a false!! Huzzah!
}
eend
will use $_ if it is not passed any arguments.
DEATH
Print an error with eerror and exit(0x65).
INDENT
You can also use eindent
and eoutdent
to show trees of things happening, example:
einfo "something"
eindent
einfo "something else" # indented
eoutdent
einfo "something else (again)" # un-dented
DO
edo
is an extra magic function that aggregates several of the functions above:
use IPC::System::Simple qw(systemx);
edo "removing file" => sub {
systemx(qw(rm file));
};
edo
handles ebegin and eend automatically and catches errors for optional edie after execution. Nested edo
functions will automatically eindent as well:
edo test1 => sub {
edo test2 => sub {
systemx(qw(rm file));
}
}
Minor caveat: edie isn't catchable (see: eval) since it calls exit, therefore, inner death(s) should use die rather than edie.
SPINNERS
Strictly speaking, these functions aren't in the real Gentoo functions.sh script, but man they're handy.
use Time::HiRes qw(sleep);
start_spinner "testing the spinner";
for (1 .. 20) {
step_spinner; # spin the spinner
# step_spinner "$_/20"; # optional msg arg
sleep 0.1;
}
end_spinner 1; # works just like eend
SHELL
Term::GentooFunctions will use RC_INDENTATION
and RC_DEFAULT_INDENT
from Gentoo's /sbin/functions.sh. So you can eindent in a bash_script.sh and your perl_script.pl will use the indent level! However, to get it to work you must first export them to your perl scripts:
export RC_INDENTATION RC_DEFAULT_INDENT
Term::GentooFunctions will not be able to modify the indent level in a way that will propagate back up to bash -- that would technically be impossible through environment variables.
AUTHOR
Paul Miller <jettero@cpan.org>
I am using this software in my own projects... If you find bugs, please please please let me know. :) Actually, let me know if you find it handy at all. Half the fun of releasing this stuff is knowing that people use it.
LICENSE
Copyright (C) 2007-2010, Paul Miller,
This module is free software. You can redistribute it and/or modify it under the terms of the Artistic License 2.0.
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.