Completed
Push — master ( 89c3e8...c161b3 )
by Craig
05:56 queued 40s
created

ZikulaExtensionSyncCommand::configure()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula Foundation - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\ExtensionsModule\Command;
15
16
use Symfony\Component\Console\Command\Command;
17
use Symfony\Component\Console\Input\InputArgument;
18
use Symfony\Component\Console\Input\InputInterface;
19
use Symfony\Component\Console\Output\OutputInterface;
20
use Symfony\Component\Console\Style\SymfonyStyle;
21
use Zikula\ExtensionsModule\Helper\BundleSyncHelper;
22
23
class ZikulaExtensionSyncCommand extends Command
24
{
25
    /**
26
     * @var BundleSyncHelper
27
     */
28
    private $bundleSyncHelper;
29
30
    protected static $defaultName = 'zikula:extension:sync';
31
32
    public function __construct(BundleSyncHelper $bundleSyncHelper)
33
    {
34
        $this->bundleSyncHelper = $bundleSyncHelper;
35
        parent::__construct();
36
    }
37
38
    protected function configure()
39
    {
40
        $this
41
            ->setDescription('Sync bundles in a directory with the bundles table and the extensions table.')
42
            ->addArgument('include core', InputArgument::OPTIONAL, 'Include the core extensions')
43
        ;
44
    }
45
46
    protected function execute(InputInterface $input, OutputInterface $output): int
47
    {
48
        $io = new SymfonyStyle($input, $output);
49
        $include = null !== $input->getArgument('include core') ? $input->getArgument('include core') : false;
50
51
        $extensionsInFileSystem = $this->bundleSyncHelper->scanForBundles($include);
52
        if (empty($extensionsInFileSystem)) {
53
            $io->warning('There were no extensions found in src/extensions.');
54
        } else {
55
            $io->title('Extensions in directory');
56
            $io->listing(array_keys($extensionsInFileSystem));
57
        }
58
59
        $upgraded = $this->bundleSyncHelper->syncExtensions($extensionsInFileSystem);
60
        if (empty($upgraded)) {
61
            $io->warning('There were no upgraded extensions found in src/extensions.');
62
        } else {
63
            $io->title('Upgraded extensions');
64
            $io->listing(array_keys($upgraded));
65
        }
66
67
        $io->success('Complete');
68
69
        return 0;
70
    }
71
}
72