A simple class to make php shell scripts easier to write.
A simple class to make php shell scripts easier to write.
All you need to do is require CLI.php and you are good to go. Below are the basic functions
CLI::out("This text is indented");
// Adding false as the second parameter will remove the newline
CLI::out('Working...', false);
// Adding a dash at the beginning will remove the indent
CLI::out('-Done.');
// Here are some status functions, these functions color the
// tag to indicate the status. (Although I cant show that here.)
CLI::info('Testing something...');
CLI::warning('Uh oh. Be cautious.');
CLI::success('Awesome it worked!');
CLI::error('O no. That didnt work.');
// Fail will exit the script for you.
CLI::fail('Something really bad happened exit the script');
// Create your own custom status with the following
// Check the resources/colors.php for specific color constants.
CLI::custom('ALERT', CLI_UND_WHITE, 'Check out my white underlined text');
// Want to use color text in your output? No problem just use the following.
$coloredText = CLI::color('Chason Choate', CLI_DARK_BLUE);
CLI::out("Hi my name is $coloredText.");
// Output
This text is indented
Working...Done.
[INFO] Testing something...
[WARNING] Uh oh. Be cautious.
[SUCCESS] Awesome it worked!
[ERROR] O no. That didnt work.
[ERROR] Something really bad happened exit the script
[ALERT] Check out my white underlined text
Hi my name is Chason Choate.
There are two functions available for getting user input.
$answer = CLI::in("What's your favorite beer?");
// With loopIn you can specify responses the user must enter or quit
// If the user enters an invalid input it will show the prompt again.
$answer = CLI::loopIn("What's your favorite OS?", array("Mac", "Windows"));
if ($answer == 'Mac')
CLI::out("Macs are pretty cool.");
// Output
What's your favorite beer? : <user types here and hits enter>
What's your favorite OS? [Mac,Windows,q] : Linux
What's your favorite OS? [Mac,Windows,q] : Mac
Macs are pretty cool.
This is how you make stuff happen and catch any errors if they occur.
CLI::run("cp test-dir test-dir-2");
// After the command completes there are two important pieces of info you need
// CLI::$lastCmdStatus => Int, Holds the exit status of the command.
// Exit status: 0 typically means the script finished successfully.
// CLI::$lastCmdOutput => Array, holds the output lines from the command.
if (CLI::$lastCmdStatus !== 0)
CLI::fail("Could not copy the directory.");
Below are some examples of additional functions in the CLI class.
// The outLine function will output a string on the same line
// good for counting/percentages/etc.
for ($i = 0; $i < 1000; $i++)
CLI::outLine($i);
// Checkout the progress example script for how to use the progress function.
Downloading a really large file...
2% [=>------------------------------------] 00:10