volnix / jobber
A slim library for printing typical CLI job output.
Installs: 1 332
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >= 5.4
- kevinlebrun/colors.php: >= 0.2
Requires (Dev)
- phpunit/phpunit: ~3.7
README
Jobber is a super-slim library for printing output from a CLI job. It supports command-line colors through the use of kevinlebrun/colors.php, a well-revered CLI color library.
It was built with simplicity in mind, as printing job output should be the least of your worries when building CLI-based scripts.
Example output from Jobber
***************************************************
2015-01-23 15:52:35 - Starting test_name
INFO: 2015-01-23 15:52:35 - foo
WARNING: 2015-01-23 15:52:35 - bar
SUCCESS: 2015-01-23 15:52:35 - baz
ERROR: 2015-01-23 15:52:35 - qux
2015-01-23 15:52:35 - Execution Time: 0.0 seconds / Peak memory usage: 3.22 Mb
***************************************************
Installation
Command line:
composer require volnix/jobber:~1.0
composer.json:
{ "name": "your/application", "require": { "volnix/jobber": "~1.0" } }
Usage
Typically the printer (Volnix/Jobber/Printer
) will be started, then stopped. The start method prints out the job name and and some asterisks to fence off this job's output. The stop method prints memory usage, runtime, and more fences.
use Volnix/Jobber/Printer; Printer::start('my_job_name'); Printer::info('Something happened, but it is not super important.'); Printer::stop();
Jobber also supports getting the output out of the printer in plain-text. This is especially useful for logging job output somewhere.
Printer::start('my_job_name'); Printer::info('Something happened, but it is not super important.'); Printer::stop(); $my_logger->info(Printer::getOutput());
All message types:
- Info (
Printer::info()
) - Warning (
Printer::warning()
) - Success (
Printer::success()
) - Error (
Printer::error()
) - Fatal (
Printer::fatal()
)- Note:
fatal
is merely an alias forerror
andstop
in one call
- Note:
If you desire to toggle verbosity on your job, this is supported. This will only disable info messages, while still allowing others to come through.
// turn off verbosity, disabling info messages Printer::setVerbosity(false);
Note: info messages will still be returned when calling Printer::getOutput() for logging purposes
If you desire to run multiple job "sessions" in one command, you can reset the printer.
// do job 1 Printer::start('job_number_1'); // do something in your code... Printer::success('Something good happened.'); Printer::stop(); // reset the printer Printer::reset(); // start job 2 Printer::start('job_number_2'); // ...
Finally, you may use sprintf-style messages as well by passing a tokenized (%s, %d, etc.) string as your first argument and an array of tokens as your second.
// printing with tokens Printer::start('something job'); Printer::info('Exported %d records to %s.', [10, '/filepath/something/here.txt']); // "Exported 10 records to /filepath/something/here.txt"