Download the PHP package aura/cli without Composer
On this page you can find all versions of the php package aura/cli. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
All versions of cli with dependencies
Informations about the package cli
Provides the equivalent of request ( Context ) and response ( Stdio ) objects for the command line interface, including Getopt support, and an independent Help object for describing commands.
This library requires PHP 7.2 or later; we recommend using the latest available version of PHP as a matter of principle. If you are interested in using this package for older PHP versions, use version 2.x for PHP 5.3+.
It has no userland dependencies.
It is installable and autoloadable via Composer as aura/cli.
Alternatively, download a release or clone this repository, then require or include its autoload.php file.
To run the unit tests at the command line, issue
composer install and then
composer test at the package root. This requires Composer to be available as
The Context object provides information about the command line environment, including any option flags passed via the command line. (This is the command line equivalent of a web request object.)
Instantiate a Context object using the CliFactory; pass it a copy of
You can access the
$argv values with the
$argv property objects, respectively. (Note that these
properties are copies of those superglobals as they were at the time of
Context instantiation.) You can pass an alternative default value if the
related key is missing.
The Context object provides support for retrieving command-line options and params, along with positional arguments.
To retrieve options and arguments parsed from the command-line
getopt() method on the Context object. This will return a
GetoptValues object for you to use as as you wish.
Defining Options and Params
getopt() how to recognize command line options, pass an array of
option definitions. The definitions array format is similar to, but not
exactly the same as, the one used by the getopt()
function in PHP. Instead of defining short flags in a string and long options
in a separate array, they are both defined as elements in a single array.
* after the option name indicates it can be passed multiple times;
its values will be stored in an array.
N.b.: When we say "required" here, it means "the option, when present, must have a parameter." It does not mean "the option must be present." These are options, after all. If a particular value must be passed, consider using positional arguments instead.
get() method on the returned GetoptValues object to retrieve the
option values. You can provide an alternative default value for when the
option is missing.
If you want to alias one option name to another, comma-separate the two names. The values will be stored under both names;
If you want to allow an option to be passed multiple times, add a '*' to the end of the option name.
If the user passes options that do not conform to the definitions, the
GetoptValues object retains various errors related to the parsing
failures. In these cases,
hasErrors() will return
true, and you can then
review the errors. (The errors are actually
but they don't get thrown as they occur; this is so that you can deal with or
ignore the different kinds of errors as you like.)
To get the positional arguments passed to the command line, use the
method and the argument position number:
Defined options will be removed from the arguments automatically.
N.b.: If a short flag has an optional parameter, the argument immediately after it will be treated as the option value, not as an argument.
Standard Input/Output Streams
The Stdio object allows you to work with standard input/output streams. (This is the command line equivalent of a web response object.)
Instantiate a Stdio object using the CliFactory.
It defaults to using
you can pass whatever stream names you like as parameters to the
The Stdio object methods are ...
getStderr()to return the respective Handle objects;
out()to print to stdout, with or without a line ending;
err()to print to stderr, with or without a line ending;
in()to read from stdin until the user hits enter;
inln()leaves the trailing line ending in place, whereas
You can use special formatting markup in the output and error strings to set text color, text weight, background color, and other display characteristics. See the formatter cheat sheet below.
This library comes with a Status class that defines constants for exit
status codes. You should use these whenever possible. For example, if a
command is used with the wrong number of arguments or improper option flags,
Status::USAGE. The exit status codes are the same as those
found in sysexits.h.
The Aura.Cli library does not come with an abstract or base command class to
extend from, but writing commands for yourself is straightforward. The
following is a standalone command script, but similar logic can be used in a
class. Save it in a file named
hello and invoke it with
php hello [-v,--verbose] [name].
Writing Command Help
Sometimes it will be useful to provide help output for your commands. With Aura.Cli, the Help object is separate from any command you may write. It may be manipulated externally or extended.
For example, extend the Help object and override the
Then instantiate the new class and pass its
getHelp() output through Stdio:
We keep the command name itself outside of the help class, because the command name may be mapped differently in different projects.
We pass a GetoptParser to the Help object so it can parse the option definitions.
- We can get the option definitions out of the Help object using
getOptions(); this allows us to pass a Help object into a hypothetical command object and reuse the definitions.
The output will look something like this:
As a side note, the array of options passed to
setOptions() may contain argument descriptions as well. These are in the format
#argname (to indicate a required argument) and
#argname? (to indicate an optional argument). They may additionally be used as keys, with corresponding description values. Their presence in a Getopt definition array is ignored, but the Help object will read them and generate output for them automatically.
For example, the following code (notice the lack of a
... will generate the following output:
Formatter Cheat Sheet
On POSIX terminals,
<<markup>> strings will change the display
characteristics. Note that these are not HTML tags; they will be converted
into terminal control codes, and do not get "closed". You can place as many
space-separated markup codes between the double angle-brackets as you like.
reset reset display to defaults black black text red red text green green text yellow yellow text blue blue text magenta magenta (purple) text cyan cyan (light blue) text white white text blackbg black background redbg red background greenbg green background yellowbg yellow background bluebg blue background magentabg magenta (purple) background cyanbg cyan (light blue) background whitebg white background bold bold in the current text and background colors dim dim in the current text and background colors ul underline in the current text and background colors blink blinking in the current text and background colors reverse reverse the current text and background colors
For example, to set bold white text on a red background, add
<<bold white redbg>>
into your output or error string. Reset back to normal with