Completed
Pull Request — master (#615)
by
unknown
02:42
created

Application::addSelfUpdateCommand()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 5
nc 2
nop 1
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 == null) {
0 ignored issues
show
Bug introduced by
It seems like you are loosely comparing $repository of type string|null against null; this is ambiguous if the string can be empty. Consider using a strict comparison === instead.
Loading history...
68
            return;
69
        }
70
        $selfUpdateCommand = new SelfUpdateCommand('self:update', Robo::VERSION, $repository);
71
        $this->add($selfUpdateCommand);
72
    }
73
}
74