Completed
Push — master ( 06c1ce...67d37c )
by Jeroen
06:20
created

Command/GenerateFormPagePartsCommand.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\GeneratorBundle\Command;
4
5
use Kunstmaan\GeneratorBundle\Generator\DefaultPagePartGenerator;
6
use Symfony\Component\Console\Input\InputOption;
7
8
/**
9
 * Generates the default form pageparts
10
 */
11
class GenerateFormPagePartsCommand extends KunstmaanGenerateCommand
12
{
13
    /**
14
     * @var BundleInterface
15
     */
16
    private $bundle;
17
18
    /**
19
     * @var string
20
     */
21
    private $prefix;
22
23
    /**
24
     * @see Command
25
     */
26
    protected function configure()
27
    {
28
        $this->setDescription('Generates default form pageparts')
29
            ->setHelp(
30
                <<<'EOT'
31
The <info>kuma:generate:form-pageparts</info> command generates the default form pageparts and adds the pageparts configuration.
32
33
<info>php bin/console kuma:generate:form-pageparts</info>
34
EOT
35
            )
36
            ->addOption('namespace', '', InputOption::VALUE_OPTIONAL, 'The namespace to generate the default form pageparts in')
37
            ->addOption('prefix', '', InputOption::VALUE_OPTIONAL, 'The prefix to be used in the table name of the generated entity')
38
            ->setName('kuma:generate:form-pageparts');
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    protected function getWelcomeText()
45
    {
46
        return 'Welcome to the Kunstmaan default form pageparts generator';
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    protected function doExecute()
53
    {
54
        $this->assistant->writeSection('Default Form PageParts generation');
55
56
        $pagepartNames = [
57
            'AbstractFormPagePart',
58
            'CheckboxPagePart',
59
            'ChoicePagePart',
60
            'EmailPagePart',
61
            'FileUploadPagePart',
62
            'MultiLineTextPagePart',
63
            'SingleLineTextPagePart',
64
            'SubmitButtonPagePart',
65
        ];
66
67
        foreach ($pagepartNames as $pagepartName) {
68
            $this->createGenerator()->generate($this->bundle, $pagepartName, $this->prefix, [], false);
69
        }
70
71
        $this->assistant->writeSection('PageParts successfully created', 'bg=green;fg=black');
72
        $this->assistant->writeLine(
73
            [
74
                'Make sure you update your database first before you test the pagepart:',
75
                '    Directly update your database:          <comment>bin/console doctrine:schema:update --force</comment>',
76
                '    Create a Doctrine migration and run it: <comment>bin/console doctrine:migrations:diff && bin/console doctrine:migrations:migrate</comment>',
77
            ]
78
        );
79
80
        return 0;
81
    }
82
83
    /**
84
     * {@inheritdoc}
85
     */
86
    protected function doInteract()
87
    {
88
        if (!$this->isBundleAvailable('KunstmaanPagePartBundle')) {
89
            $this->assistant->writeError('KunstmaanPagePartBundle not found', true);
90
        }
91
92
        $this->assistant->writeLine(["This command helps you to generate the form pageparts.\n"]);
93
94
        /**
95
         * Ask for which bundle we need to create the pagepart
96
         */
97
        $bundleNamespace = $this->assistant->getOptionOrDefault('namespace', null);
98
        $this->bundle = $this->askForBundleName('pagepart', $bundleNamespace);
0 ignored issues
show
Documentation Bug introduced by
It seems like $this->askForBundleName(...art', $bundleNamespace) of type object<Symfony\Component...Bundle\BundleInterface> is incompatible with the declared type object<Kunstmaan\Generat...ommand\BundleInterface> of property $bundle.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
99
100
        /*
101
         * Ask the database table prefix
102
         */
103
        $this->prefix = $this->askForPrefix(null, $this->bundle->getNamespace());
104
    }
105
106
    /**
107
     * Get the generator.
108
     *
109
     * @return DefaultPagePartGenerator
110
     */
111 View Code Duplication
    protected function createGenerator()
112
    {
113
        $filesystem = $this->getContainer()->get('filesystem');
114
        $registry = $this->getContainer()->get('doctrine');
115
116
        return new DefaultPagePartGenerator($filesystem, $registry, '/pagepart', $this->assistant, $this->getContainer());
117
    }
118
}
119