Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / src / Command / Drupal_8 / Module / PluginManager.php
1 <?php
2
3 namespace DrupalCodeGenerator\Command\Drupal_8\Module;
4
5 use DrupalCodeGenerator\Command\BaseGenerator;
6 use DrupalCodeGenerator\Utils;
7 use Symfony\Component\Console\Input\InputInterface;
8 use Symfony\Component\Console\Output\OutputInterface;
9 use Symfony\Component\Console\Question\Question;
10
11 /**
12  * Implements d8:module:plugin-manager command.
13  */
14 class PluginManager extends BaseGenerator {
15
16   protected $name = 'd8:module:plugin-manager';
17   protected $description = 'Generates plugin-manager module';
18   protected $alias = 'plugin-manager';
19   protected $destination = 'modules';
20
21   /**
22    * {@inheritdoc}
23    */
24   protected function interact(InputInterface $input, OutputInterface $output) {
25     $questions = Utils::defaultQuestions();
26     $questions['description'] = new Question('Description', 'Module description.');
27     $questions['package'] = new Question('Package', 'Custom');
28     $questions['dependencies'] = new Question('Dependencies (comma separated)');
29
30     $vars = &$this->collectVars($input, $output, $questions);
31
32     if ($vars['dependencies']) {
33       $vars['dependencies'] = array_map('trim', explode(',', strtolower($vars['dependencies'])));
34     }
35     $vars['class_prefix'] = Utils::camelize($vars['machine_name']);
36
37     $templates = [
38       'model.drush.inc.twig',
39       'model.info.yml.twig',
40       'model.services.yml.twig',
41       'src/Annotation/Model.php.twig',
42       'src/ModelInterface.php.twig',
43       'src/ModelPluginBase.php.twig',
44       'src/ModelPluginManager.php.twig',
45       'src/Plugin/Model/Example.php.twig',
46     ];
47
48     $templates_path = 'd8/module/plugin-manager/';
49
50     $path_placeholders = ['model', 'Model', '.twig'];
51     $path_replacements = [$vars['machine_name'], $vars['class_prefix'], ''];
52     foreach ($templates as $template) {
53       $this->addFile()
54         ->path('{machine_name}/' . str_replace($path_placeholders, $path_replacements, $template))
55         ->template($templates_path . $template);
56     }
57   }
58
59 }