From b5f89bc1dfdb28de72d7c211a28c213fc1dcacb5 Mon Sep 17 00:00:00 2001 From: Greg Bowler Date: Sat, 8 Sep 2018 20:29:03 +0100 Subject: [PATCH] Add README --- README.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3430f1d --- /dev/null +++ b/README.md @@ -0,0 +1,89 @@ +Command line interface builder. +=============================== + +Create multi-command terminal application with parameter requirements that are self-documenting and easy to unit test. + +*** + + + Build status + + + Code quality + + + Code coverage + + + Current version + + + PHP.G/Cli documentation + + +## 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!" +$ twitter help +Twitter example application + +Available 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 + ); + } + } +} +``` \ No newline at end of file