示例#1
0
 /**
  * Returns full description from the docblock.
  *
  * @param \Reflector $reflection
  * @return string
  */
 protected function parseDocCommentDetail($reflection)
 {
     $comment = strtr(trim(preg_replace('/^\\s*\\**( |\\t)?/m', '', trim($reflection->getDocComment(), '/'))), "\r", '');
     if (preg_match('/^\\s*@\\w+/m', $comment, $matches, PREG_OFFSET_CAPTURE)) {
         $comment = trim(substr($comment, 0, $matches[0][1]));
     }
     if ($comment !== '') {
         return rtrim(Console::renderColoredString(Console::markdownToAnsi($comment)));
     }
     return '';
 }
示例#2
0
 /**
  * Displays the detailed information of a command action.
  * @param Controller $controller the controller instance
  * @param string $actionID action ID
  * @throws Exception if the action does not exist
  */
 protected function getActionHelp($controller, $actionID)
 {
     $action = $controller->createAction($actionID);
     if ($action === null) {
         throw new Exception(Yii::t('yii', 'No help for unknown sub-command "{command}".', ['command' => rtrim($controller->getUniqueId() . '/' . $actionID, '/')]));
     }
     if ($action instanceof InlineAction) {
         $method = new \ReflectionMethod($controller, $action->actionMethod);
     } else {
         $method = new \ReflectionMethod($action, 'run');
     }
     $tags = $this->parseComment($method->getDocComment());
     $options = $this->getOptionHelps($controller, $actionID);
     if ($tags['description'] !== '') {
         $this->stdout("\nDESCRIPTION\n", Console::BOLD);
         echo "\n" . rtrim(Console::renderColoredString(Console::markdownToAnsi($tags['description']))) . "\n\n";
     }
     $this->stdout("\nUSAGE\n\n", Console::BOLD);
     $scriptName = $this->getScriptName();
     if ($action->id === $controller->defaultAction) {
         echo $scriptName . ' ' . $this->ansiFormat($controller->getUniqueId(), Console::FG_YELLOW);
     } else {
         echo $scriptName . ' ' . $this->ansiFormat($action->getUniqueId(), Console::FG_YELLOW);
     }
     list($required, $optional) = $this->getArgHelps($method, isset($tags['param']) ? $tags['param'] : []);
     foreach ($required as $arg => $description) {
         $this->stdout(' <' . $arg . '>', Console::FG_CYAN);
     }
     foreach ($optional as $arg => $description) {
         $this->stdout(' [' . $arg . ']', Console::FG_CYAN);
     }
     if (!empty($options)) {
         $this->stdout(' [...options...]', Console::FG_RED);
     }
     echo "\n\n";
     if (!empty($required) || !empty($optional)) {
         echo implode("\n\n", array_merge($required, $optional)) . "\n\n";
     }
     if (!empty($options)) {
         $this->stdout("\nOPTIONS\n\n", Console::BOLD);
         echo implode("\n\n", $options) . "\n\n";
     }
 }