<?php namespace Robo; use SelfUpdate\SelfUpdateCommand; use Symfony\Component\Console\Application as SymfonyApplication; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputOption; class Application extends SymfonyApplication { /** * @param string $name * @param string $version */ public function __construct($name, $version) { parent::__construct($name, $version); $this->getDefinition() ->addOption( new InputOption('--simulate', null, InputOption::VALUE_NONE, 'Run in simulated mode (show what would have happened).') ); $this->getDefinition() ->addOption( new InputOption('--progress-delay', null, InputOption::VALUE_REQUIRED, 'Number of seconds before progress bar is displayed in long-running task collections. Default: 2s.', Config::DEFAULT_PROGRESS_DELAY) ); $this->getDefinition() ->addOption( new InputOption('--define', '-D', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Define a configuration item value.', []) ); } /** * @param string $roboFile * @param string $roboClass */ public function addInitRoboFileCommand($roboFile, $roboClass) { $createRoboFile = new Command('init'); $createRoboFile->setDescription("Intitalizes basic RoboFile in current dir"); $createRoboFile->setCode(function () use ($roboClass, $roboFile) { $output = Robo::output(); $output->writeln("<comment> ~~~ Welcome to Robo! ~~~~ </comment>"); $output->writeln("<comment> ". basename($roboFile) ." will be created in the current directory </comment>"); file_put_contents( $roboFile, '<?php' . "\n/**" . "\n * This is project's console commands configuration for Robo task runner." . "\n *" . "\n * @see http://robo.li/" . "\n */" . "\nclass " . $roboClass . " extends \\Robo\\Tasks\n{\n // define public methods as commands\n}" ); $output->writeln("<comment> Edit this file to add your commands! </comment>"); }); $this->add($createRoboFile); } /** * Add self update command, do nothing if null is provided * * @param string $repository * GitHub Repository for self update. */ public function addSelfUpdateCommand($repository = null) { if (!$repository || empty(\Phar::running())) { return; } $selfUpdateCommand = new SelfUpdateCommand($this->getName(), $this->getVersion(), $repository); $this->add($selfUpdateCommand); } }