Add command help option

This commit is contained in:
Jakub Turek
2015-05-16 14:04:43 +02:00
parent bbefc65888
commit 4c519dd3bc
2 changed files with 236 additions and 0 deletions
+65
View File
@@ -26,6 +26,10 @@ abstract class AbstractCommand
*/
protected $config = null;
private $helpMessage;
private $usageExamples = [];
private $syntaxMessage;
/**
* Runs the Command
* @return integer exit code
@@ -52,4 +56,65 @@ abstract class AbstractCommand
{
return $this->config;
}
public function setHelpMessage($message)
{
$this->helpMessage = $message;
return $this;
}
public function addUsageExample($snippet, $description = '')
{
array_push($this->usageExamples, [$snippet, $description]);
return $this;
}
public function setSyntaxMessage($message)
{
$this->syntaxMessage = $message;
return $this;
}
public function getInfoMessage()
{
$indent = str_repeat(" ", 4);
$output = "";
if (!empty($this->helpMessage)) {
$output .= "\n";
$output .= $this->helpMessage . "\n";
}
if (!empty($this->syntaxMessage)) {
$output .= "\n";
$output .= "Syntax:\n";
$output .= $indent;
$output .= $this->syntaxMessage;
$output .= "\n";
}
if (!empty($this->usageExamples)) {
$output .= "\n";
$output .= "Usage examples:\n";
foreach ($this->usageExamples as $example) {
$snippet = $example[0];
$description = $example[1];
$output .= "$indent* ";
if (!empty($description)) {
$description = rtrim($description, ': ') . ":";
$output .= $description;
$output .= "\n$indent$indent";
}
$output .= $snippet;
$output .= "\n";
}
}
return $output;
}
}