https://github.com/phpgt/cli
Command line interface builder.
https://github.com/phpgt/cli
cli cli-api cli-app cli-application cli-framework command-line-interface-builder phpgt terminal terminal-colors
Last synced: about 2 months ago
JSON representation
Command line interface builder.
- Host: GitHub
- URL: https://github.com/phpgt/cli
- Owner: phpgt
- License: mit
- Created: 2018-04-01T14:33:54.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-15T10:52:43.000Z (10 months ago)
- Last Synced: 2025-03-25T14:05:03.832Z (about 2 months ago)
- Topics: cli, cli-api, cli-app, cli-application, cli-framework, command-line-interface-builder, phpgt, terminal, terminal-colors
- Language: PHP
- Homepage: https://www.php.gt/cli
- Size: 294 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
Command line interface builder.
===============================Create multi-command terminal application with parameter requirements that are self-documenting and easy to unit test.
***
## Example usage: Twitter client
CLI interaction:
```bash
$ twitter tweet --message "Sending a test Tweet from the terminal."
Sent! View online: https://twitter.com/g105b/status/1038509073346510849
$ twitter dm --to @g105b --message "Hello, Greg!"
Sent!
$ twitter help
Twitter example applicationAvailable commands:
• tweet Send a Tweet to your timeline.
• view View your timeline
• follow Follow an account
• dm Send a direct message.
• login Authenticate your username.
• help Show this help screen.
````twitter.php:`
```php
$app = new Application(
"Twitter example application",
new CliArgumentList(...$argv),
new TweetCommand(),
new ViewCommand(),
new FollowCommand(),
new DmCommand(),
new LoginCommand()
);
$app->run();
````Command/tweet.php`
```php
class TweetCommand extends Command {
public function __construct() {
$this->setName("tweet");
$this->setDescription("Send a Tweet to your timeline.");$this->setRequiredParameter(true, "message", "m");
$this->setOptionalParameter(true, "location", "l");
}public function run(ArgumentValueList $arguments):void {
if(!TwitterApi::isLoggedIn()) {
$this->writeLine("You must login first.", Stream::ERROR);
}
try {
$uri = TwitterApi::sendTweet($arguments->get("message"));
$this->writeLine("Sent! View online: $uri");
}
catch(TwitterApiException $exception) {
$this->writeLine(
"Error sending Tweet: "
. $exception->getMessage(),
Stream::ERROR
);
}
}
}
```