public function createCommand(TaskInfo $taskInfo) { $task = new Command($taskInfo->getName()); $task->setDescription($taskInfo->getDescription()); $task->setHelp($taskInfo->getHelp()); $args = $taskInfo->getArguments(); foreach ($args as $name => $val) { $description = $taskInfo->getArgumentDescription($name); if ($val === TaskInfo::PARAM_IS_REQUIRED) { $task->addArgument($name, InputArgument::REQUIRED, $description); } elseif (is_array($val)) { $task->addArgument($name, InputArgument::IS_ARRAY, $description, $val); } else { $task->addArgument($name, InputArgument::OPTIONAL, $description, $val); } } $opts = $taskInfo->getOptions(); foreach ($opts as $name => $val) { $description = $taskInfo->getOptionDescription($name); $fullName = $name; $shortcut = ''; if (strpos($name, '|')) { list($fullName, $shortcut) = explode('|', $name, 2); } if (is_bool($val)) { $task->addOption($fullName, $shortcut, InputOption::VALUE_NONE, $description); } else { $task->addOption($fullName, $shortcut, InputOption::VALUE_OPTIONAL, $description, $val); } } return $task; }
/** * @param int|string $key * @param mixed $value */ protected function showIterationMessage($key, $value) { if ($this->message) { $context = ['key' => $key, 'value' => $value]; $context += $this->context; $context += TaskInfo::getTaskContext($this); $this->printTaskInfo($this->message, $context); } }
/** * {@inheritdoc} */ public function run() { $callchain = ''; foreach ($this->stack as $action) { $command = array_shift($action); $parameters = $this->formatParameters($action); $callchain .= "\n ->{$command}(<fg=green>{$parameters}</>)"; } $context = $this->getTaskContext(['_level' => RoboLogLevel::SIMULATED_ACTION, 'simulated' => TaskInfo::formatTaskName($this->task), 'parameters' => $this->formatParameters($this->constructorParameters), '_style' => ['simulated' => 'fg=blue;options=bold']]); // RoboLogLevel::SIMULATED_ACTION $this->printTaskInfo("Simulating {simulated}({parameters}){$callchain}", $context); $result = null; if ($this->task instanceof SimulatedInterface) { $result = $this->task->simulate($context); } if (!isset($result)) { $result = Result::success($this); } return $result; }
/** * @param $className * @param TaskInfo $taskInfo * @return Command */ protected function createCommand($className, TaskInfo $taskInfo) { if ($className === strtolower(Tg::TGCLASS)) { $name = $taskInfo->getName(); } else { $camel = preg_replace("/:/", '-', $taskInfo->getName()); $name = $className . ':' . $camel; } $task = new Command($name); $task->setDescription($taskInfo->getDescription()); $task->setHelp($taskInfo->getHelp()); $args = $taskInfo->getArguments(); foreach ($args as $name => $val) { $description = $taskInfo->getArgumentDescription($name); if ($val === TaskInfo::PARAM_IS_REQUIRED) { $task->addArgument($name, InputArgument::REQUIRED, $description); } elseif (is_array($val)) { $task->addArgument($name, InputArgument::IS_ARRAY, $description, $val); } else { $task->addArgument($name, InputArgument::OPTIONAL, $description, $val); } } $opts = $taskInfo->getOptions(); foreach ($opts as $name => $val) { $description = $taskInfo->getOptionDescription($name); $fullName = $name; $shortcut = ''; if (strpos($name, '|')) { list($fullName, $shortcut) = explode('|', $name, 2); } if (is_bool($val)) { $task->addOption($fullName, $shortcut, InputOption::VALUE_NONE, $description); } else { $task->addOption($fullName, $shortcut, InputOption::VALUE_OPTIONAL, $description, $val); } } return $task; }
/** * Return a context useful for logging messages. * * @return array */ public function getContext() { $task = $this->getTask(); return TaskInfo::getTaskContext($task) + ['code' => $this->getExitCode(), 'data' => $this->getArrayCopy(), 'time' => $this->getExecutionTime(), 'message' => $this->getMessage()]; }
/** * {@inheritdoc} */ public function progressMessage($text, $context = [], $level = LogLevel::NOTICE) { $context += ['name' => 'Progress']; $context += TaskInfo::getTaskContext($this); return $this->addCode(function () use($level, $text, $context) { $this->printTaskOutput($level, $text, $context); }); }
/** * @param null|array $context * * @return array with context information */ protected function getTaskContext($context = null) { if (!$context) { $context = []; } if (!is_array($context)) { $context = ['task' => $context]; } if (!array_key_exists('task', $context)) { $context['task'] = $this; } return $context + TaskInfo::getTaskContext($context['task']); }
public function getName() { return 'task:' . parent::getName(); }
protected function createCommand($taskName) { $taskInfo = new TaskInfo(self::ROBOCLASS, $taskName); $task = new Command($taskInfo->getName()); $task->setDescription($taskInfo->getDescription()); $args = $taskInfo->getArguments(); foreach ($args as $name => $val) { if ($val === TaskInfo::PARAM_IS_REQUIRED) { $task->addArgument($name, InputArgument::REQUIRED); } elseif (is_array($val)) { $task->addArgument($name, InputArgument::IS_ARRAY, '', $val); } else { $task->addArgument($name, InputArgument::OPTIONAL, '', $val); } } $opts = $taskInfo->getOptions(); foreach ($opts as $name => $val) { if (empty($val)) { $task->addOption($name, '', InputOption::VALUE_NONE, ''); } else { $task->addOption($name, '', InputOption::VALUE_OPTIONAL, '', $val); } } return $task; }