Yaffs site version 1.1
[yaffs-website] / vendor / drupal / console / src / Generator / PluginTypeAnnotationGenerator.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Generator\PluginTypeAnnotationGenerator.
6  */
7
8 namespace Drupal\Console\Generator;
9
10 use Drupal\Console\Core\Generator\Generator;
11 use Drupal\Console\Extension\Manager;
12
13 class PluginTypeAnnotationGenerator extends Generator
14 {
15     /**
16      * @var Manager
17      */
18     protected $extensionManager;
19
20     /**
21      * PluginTypeAnnotationGenerator constructor.
22      *
23      * @param Manager $extensionManager
24      */
25     public function __construct(
26         Manager $extensionManager
27     ) {
28         $this->extensionManager = $extensionManager;
29     }
30
31     /**
32      * Generator for Plugin type with annotation discovery.
33      *
34      * @param $module
35      * @param $class_name
36      * @param $machine_name
37      * @param $label
38      */
39     public function generate($module, $class_name, $machine_name, $label)
40     {
41         $parameters = [
42             'module' => $module,
43             'class_name' => $class_name,
44             'machine_name' => $machine_name,
45             'label' => $label,
46             'file_exists' => file_exists($this->extensionManager->getModule($module)->getPath() .'/'.$module.'.services.yml'),
47         ];
48
49         $directory = $this->extensionManager->getModule($module)->getSourcePath() . '/Plugin/' . $class_name;
50
51         if (!is_dir($directory)) {
52             mkdir($directory, 0777, true);
53         }
54         
55         $this->renderFile(
56             'module/src/Annotation/plugin-type.php.twig',
57             $this->extensionManager->getModule($module)->getSourcePath() . '/Annotation/' . $class_name . '.php',
58             $parameters
59         );
60
61         $this->renderFile(
62             'module/src/plugin-type-annotation-base.php.twig',
63             $this->extensionManager->getModule($module)->getSourcePath() .'/Plugin/' . $class_name . 'Base.php',
64             $parameters
65         );
66
67         $this->renderFile(
68             'module/src/plugin-type-annotation-interface.php.twig',
69             $this->extensionManager->getModule($module)->getSourcePath() .'/Plugin/' . $class_name . 'Interface.php',
70             $parameters
71         );
72
73         $this->renderFile(
74             'module/src/plugin-type-annotation-manager.php.twig',
75             $this->extensionManager->getModule($module)->getSourcePath() .'/Plugin/' . $class_name . 'Manager.php',
76             $parameters
77         );
78         $this->renderFile(
79             'module/plugin-annotation-services.yml.twig',
80             $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.services.yml',
81             $parameters,
82             FILE_APPEND
83         );
84     }
85 }