19d4725f3b16549773fd2585d06e46b46c0feea3
[yaffs-website] / vendor / consolidation / robo / src / Application.php
1 <?php
2 namespace Robo;
3
4 use Symfony\Component\Console\Application as SymfonyApplication;
5 use Symfony\Component\Console\Command\Command;
6 use Symfony\Component\Console\Input\InputOption;
7
8 class Application extends SymfonyApplication
9 {
10     /**
11      * @param string $name
12      * @param string $version
13      */
14     public function __construct($name, $version)
15     {
16         parent::__construct($name, $version);
17
18         $this->getDefinition()
19             ->addOption(
20                 new InputOption('--simulate', null, InputOption::VALUE_NONE, 'Run in simulated mode (show what would have happened).')
21             );
22         $this->getDefinition()
23             ->addOption(
24                 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)
25             );
26
27         $this->getDefinition()
28             ->addOption(
29                 new InputOption('--define', '-D', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Define a configuration item value.', [])
30             );
31     }
32
33     /**
34      * @param string $roboFile
35      * @param string $roboClass
36      */
37     public function addInitRoboFileCommand($roboFile, $roboClass)
38     {
39         $createRoboFile = new Command('init');
40         $createRoboFile->setDescription("Intitalizes basic RoboFile in current dir");
41         $createRoboFile->setCode(function () use ($roboClass, $roboFile) {
42             $output = Robo::output();
43             $output->writeln("<comment>  ~~~ Welcome to Robo! ~~~~ </comment>");
44             $output->writeln("<comment>  ". basename($roboFile) ." will be created in the current directory </comment>");
45             file_put_contents(
46                 $roboFile,
47                 '<?php'
48                 . "\n/**"
49                 . "\n * This is project's console commands configuration for Robo task runner."
50                 . "\n *"
51                 . "\n * @see http://robo.li/"
52                 . "\n */"
53                 . "\nclass " . $roboClass . " extends \\Robo\\Tasks\n{\n    // define public methods as commands\n}"
54             );
55             $output->writeln("<comment>  Edit this file to add your commands! </comment>");
56         });
57         $this->add($createRoboFile);
58     }
59
60     /**
61      * Add self update command, do nothing if null is provided
62      *
63      * @param string $repository GitHub Repository for self update
64      */
65     public function addSelfUpdateCommand($repository = null)
66     {
67         if (!$repository) {
68             return;
69         }
70         $selfUpdateCommand = new SelfUpdateCommand($this->getName(), $this->getVersion(), $repository);
71         $this->add($selfUpdateCommand);
72     }
73 }