| src/Cli | ||
| .gitignore | ||
| CHANGELOG.md | ||
| composer.json | ||
| CONTRIBUTING.md | ||
| LICENCE | ||
| README.md | ||
PHP Helpers: Command-line Functions
- Version: v1.1.5
- Date: May 24 2019
- Release notes
- GitHub repository
A collection of functions relating to the command-line
Installation
This library is installed via Composer. To install, use composer require pointybeard/helpers-functions-cli or add "pointybeard/helpers-functions-cli": "~1.1" to your composer.json file.
And run composer to update your dependencies:
$ curl -s http://getcomposer.org/installer | php
$ php composer.phar update
Requirements
This library makes use of the PHP Helpers: Command-line Input and Input Type Handlers, PHP Helpers: Flag Functions (pointybeard/helpers-functions-flags), PHP Helpers: Command-line Colour (pointybeard/helpers-cli-colours) and PHP Helpers: String Functions packages. They are installed automatically via composer.
To include all the PHP Helpers packages on your project, use composer require pointybeard/helpers or add "pointybeard/helpers": "~1" to your composer file.
Usage
This library is a collection convenience function for command-line tasks. They are included by the vendor autoloader automatically. The functions have a namespace of pointybeard\Helpers\Functions\Cli
The following functions are provided:
can_invoke_bash() : boolis_su() : boolusage(string $name, Cli\Input\InputCollection $collection) : stringmanpage(string $name, string $version, string $description, Input\InputCollection $collection, $foregroundColour=Colour\Colour::FG_DEFAULT, $headingColour=Colour\Colour::FG_WHITE, array $additional=[]): stringget_window_size(): array
Example usage:
<?php
declare(strict_types=1);
include __DIR__.'/vendor/autoload.php';
use pointybeard\Helpers\Cli\Input;
use pointybeard\Helpers\Cli\Colour\Colour;
use pointybeard\Helpers\Functions\Cli;
var_dump(Cli\can_invoke_bash());
// bool(true)
var_dump(Cli\is_su());
// bool(false)
var_dump(Cli\get_window_size());
// array(2) {
// 'cols' => string(3) "103"
// 'lines' => string(2) "68"
// }
echo Cli\manpage(
'test',
'1.0.1',
'A simple test command with a really long description. This is an intentionally very long argument description so we can check that word wrapping is working correctly. It should wrap to the window',
(new Input\InputCollection())
->append(
Input\InputTypeFactory::build('Argument')
->name('action')
->flags(Input\AbstractInputType::FLAG_REQUIRED)
->description('The name of the action to perform. This is an intentionally very long argument description so we can check that word wrapping is working correctly')
)
->append(
Input\InputTypeFactory::build('IncrementingFlag')
->name('v')
->flags(Input\AbstractInputType::FLAG_OPTIONAL | Input\AbstractInputType::FLAG_TYPE_INCREMENTING)
->description('verbosity level. -v (errors only), -vv (warnings and errors), -vvv (everything).')
->validator(new Input\Validator(
function (Input\AbstractInputType $input, Input\AbstractInputHandler $context) {
// Make sure verbosity level never goes above 3
return min(3, (int)$context->find('v'));
}
))
)
->append(
Input\InputTypeFactory::build('Option')
->name('P')
->flags(Input\AbstractInputType::FLAG_OPTIONAL | Input\AbstractInputType::FLAG_VALUE_OPTIONAL)
->description('Port to use for all connections.')
->default('3306')
)
->append(
Input\InputTypeFactory::build('LongOption')
->name('data')
->short('d')
->flags(Input\AbstractInputType::FLAG_OPTIONAL | Input\AbstractInputType::FLAG_VALUE_REQUIRED)
->description('Path to the input JSON data.')
),
Colour::FG_GREEN,
Colour::FG_WHITE,
[
'Examples' => 'php -f test.php -- import -vvv -d test.json',
]
).PHP_EOL;
// test 1.0.0, A simple test command with a really long description. This is an intentionally very long argument description so we can check that word wrapping is working correctly. It should wrap to the window
// Usage: test [OPTIONS]... ACTION...
//
// Arguments:
// ACTION The name of the action to perform. This is an
// intentionally very long argument description so we can check
// that word wrapping is working correctly
//
// Options:
// -v verbosity level. -v (errors only), -vv
// (warnings and errors), -vvv (everything).
// -P Port to use for all connections.
// -d, --data=VALUE Path to the input JSON data.
//
// Examples:
// php -f test.php -- import -vvv -d test.json
Support
If you believe you have found a bug, please report it using the GitHub issue tracker, or better yet, fork the library and submit a pull request.
Contributing
We encourage you to contribute to this project. Please check out the Contributing documentation for guidelines about how to get involved.
License
"PHP Helpers: Command-line Functions" is released under the MIT License.