From 7c06febefe0c7a479b8402f1f84c2ecf5d2f5022 Mon Sep 17 00:00:00 2001 From: Alannah Kearney Date: Mon, 20 May 2019 22:39:08 +1000 Subject: [PATCH] Updated example to use manpage() provided by the pointybeard/helpers-functions-cli package --- composer.json | 5 ++- example/example.php | 105 +++++++++++--------------------------------- 2 files changed, 28 insertions(+), 82 deletions(-) diff --git a/composer.json b/composer.json index 081d489..937c4d3 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "pointybeard/helpers-cli-input", - "version": "1.0.0", + "version": "1.0.1", "description": "Collection of classes for handling argv (and other) input when calling command-line scripts. Helps with parsing, collecting and validating arguments, options, and flags.", "homepage": "https://github.com/pointybeard/helpers-cli-input", "license": "MIT", @@ -20,7 +20,8 @@ "require-dev": { "phpunit/phpunit": "^8", "pointybeard/helpers-functions-strings": "~1.0", - "pointybeard/helpers-cli-colour": "~1.0" + "pointybeard/helpers-cli-colour": "~1.0", + "pointybeard/helpers-functions-cli": "~1.1" }, "support": { "issues": "https://github.com/pointybeard/helpers-cli-input/issues", diff --git a/example/example.php b/example/example.php index 075ff81..04c979c 100644 --- a/example/example.php +++ b/example/example.php @@ -4,9 +4,10 @@ declare(strict_types=1); include __DIR__.'/../vendor/autoload.php'; use pointybeard\Helpers\Cli\Input; +use pointybeard\Helpers\Cli\Colour\Colour; use pointybeard\Helpers\Functions\Flags; use pointybeard\Helpers\Functions\Strings; -use pointybeard\Helpers\Cli\Colour\Colour; +use pointybeard\Helpers\Functions\Cli; // Define what we are expecting to get from the command line $collection = (new Input\InputCollection()) @@ -52,87 +53,31 @@ $collection = (new Input\InputCollection()) // and validate the input according to our collection $argv = Input\InputHandlerFactory::build('Argv', $collection); -// Example of using an input collection to generate a usage string -function usage(Input\InputCollection $collection): string { - $arguments = []; - foreach ($collection->getArguments() as $a) { - $arguments[] = strtoupper( - // Wrap with square brackets if it's not required - Flags\is_flag_set(Input\AbstractInputType::FLAG_OPTIONAL, $a->flags()) || - !Flags\is_flag_set(Input\AbstractInputType::FLAG_REQUIRED, $a->flags()) - ? "[{$a->name()}]" - : $a->name() - ); - } - $arguments = trim(implode($arguments, ' ')); - return sprintf( - "Usage: php -f example.php -- [OPTIONS]... %s%s", - $arguments, - strlen($arguments) > 0 ? '...' : '' - ); -} - -// Example of using an input collection to generate a manual page -function manpage(Input\InputCollection $collection) : string { - - $arguments = $options = []; - - foreach ($collection->getArguments() as $a) { - $arguments[] = (string) $a; - } - - foreach ($collection->getOptions() as $o) { - $options[] = (string) $o; - } - - $arguments = implode($arguments, PHP_EOL.' '); - $options = implode($options, PHP_EOL.' '); - - return sprintf('%s 1.0.0, %s -%s - -Mandatory values for long options are mandatory for short options too. - -Arguments: - %s - -Options: - %s - -Examples: - php -f example/example.php -- -vvv -d example/example.json import -', - basename(__FILE__), - Strings\utf8_wordwrap( - "An example script for the PHP Helpers: Command-line Input and Input Type Handlers composer library (pointybeard/helpers-cli-input)." - ), - usage($collection), - $arguments, - $options - ); -} - // Display the manual in green text -echo Colour::colourise(manpage($collection), Colour::FG_GREEN) . PHP_EOL . PHP_EOL; +echo Colour::colourise(Cli\manpage( + basename(__FILE__), + '1.0.1', + 'An example script for the PHP Helpers: Command-line Input and Input Type Handlers composer library (pointybeard/helpers-cli-input).', + 'php -f example/example.php -- -vvv -d example/example.json import', + $collection +), Colour::FG_GREEN) . PHP_EOL . PHP_EOL; -/* -example.php 1.0.0, An example script for the PHP Helpers: Command-line Input and Input Type Handlers -composer library (pointybeard/helpers-cli-input). -Usage: php -f example.php -- [OPTIONS]... ACTION... - -Mandatory values for long options are mandatory for short options too. - -Arguments: - ACTION The name of the action to perform - -Options: - -v verbosity level. -v (errors only), -vv (warnings - and errors), -vvv (everything). - -d, --data=VALUE Path to the input JSON data - -Examples: - php -f example/example.php -- -vvv -d example/example.json import -*/ +// example.php 1.0.0, An example script for the PHP Helpers: Command-line Input and Input Type Handlers +// composer library (pointybeard/helpers-cli-input). +// Usage: example.php [OPTIONS]... ACTION... +// +// Mandatory values for long options are mandatory for short options too. +// +// Arguments: +// ACTION The name of the action to perform +// +// Options: +// -v verbosity level. -v (errors only), -vv (warnings +// and errors), -vvv (everything). +// -d, --data=VALUE Path to the input JSON data +// +// Examples: +// php -f example/example.php -- -vvv -d example/example.json import var_dump($argv->getArgument('action')); // string(6) "import"