PHP code example of pointybeard / helpers-functions-cli
1. Go to this page and download the library: Download pointybeard/helpers-functions-cli library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pointybeard / helpers-functions-cli example snippets
declare(strict_types=1);
put;
use pointybeard\Helpers\Cli\Colour\Colour;
use pointybeard\Helpers\Functions\Cli;
var_dump(Cli\which("ls"));
// string(11) "/usr/bin/ls"
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"
// }
Cli\run_command("date", $out);
var_dump($out);
// string(29) "Mon 6 Apr 17:20:29 AEST 2020"
try{
Cli\run_command("not -a --command", $out, $err);
} catch(Cli\Exceptions\RunCommandFailedException $ex) {
var_dump($ex->getMessage(), $ex->getCommand(), $ex->getError());
}
// string(54) "Failed to run command. Returned: sh: 1: not: not found"
// string(16) "not -a --command"
// string(21) "sh: 1: not: not found"
echo Cli\manpage(
'test',
'1.0.2',
'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())
->add(
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')
)
->add(
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'));
}
))
)
->add(
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')
)
->add(
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.2, 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
Cli\display_error_and_exit('Looks like something went wrong!', 'Fatal Error');
// Fatal Error
// Looks like something went wrong!
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.