X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FGenerator%2FServiceGenerator.php;fp=vendor%2Fdrupal%2Fconsole%2Fsrc%2FGenerator%2FServiceGenerator.php;h=855839f80e142a061fa760cae671c3ce22006adc;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/vendor/drupal/console/src/Generator/ServiceGenerator.php b/vendor/drupal/console/src/Generator/ServiceGenerator.php new file mode 100644 index 000000000..855839f80 --- /dev/null +++ b/vendor/drupal/console/src/Generator/ServiceGenerator.php @@ -0,0 +1,102 @@ +extensionManager = $extensionManager; + } + + /** + * Generator Service. + * + * @param string $module Module name + * @param string $name Service name + * @param string $class Class name + * @param string $interface If TRUE an interface for this service is generated + * @param array $services List of services + * @param string $path_service Path of services + */ + public function generate($module, $name, $class, $interface, $interface_name, $services, $path_service) + { + $interface = $interface ? ($interface_name ?: $class . 'Interface') : false; + $parameters = [ + 'module' => $module, + 'name' => $name, + 'class' => $class, + 'class_path' => sprintf('Drupal\%s\%s', $module, $class), + 'interface' => $interface, + 'services' => $services, + 'path_service' => $path_service, + 'file_exists' => file_exists($this->extensionManager->getModule($module)->getPath() .'/'.$module.'.services.yml'), + ]; + + $this->renderFile( + 'module/services.yml.twig', + $this->extensionManager->getModule($module)->getPath() .'/'.$module.'.services.yml', + $parameters, + FILE_APPEND + ); + + $this->renderFile( + 'module/src/service.php.twig', + $this->setDirectory($path_service, 'service.php.twig', $module, $class), + $parameters + ); + + if ($interface) { + $this->renderFile( + 'module/src/service-interface.php.twig', + $this->setDirectory($path_service, 'interface.php.twig', $module, $interface), + $parameters + ); + } + } + + protected function setDirectory($target, $template, $module, $class) + { + $default_path = '/modules/custom/' . $module . '/src/'; + $directory = ''; + + switch ($template) { + case 'service.php.twig': + $default_target = $this->extensionManager->getModule($module)->getPath() .'/src/'.$class.'.php'; + $custom_target = $this->extensionManager->getModule($module)->getPath() .'/'.$target.'/'.$class.'.php'; + + $directory = (strcmp($target, $default_path) == 0) ? $default_target : $custom_target; + break; + case 'interface.php.twig': + $default_target = $this->extensionManager->getModule($module)->getPath() .'/src/'.$class.'.php'; + $custom_target = $this->extensionManager->getModule($module)->getPath() .'/'.$target.'/'.$class.'.php'; + + $directory = (strcmp($target, $default_path) == 0) ? $default_target : $custom_target; + break; + default: + // code... + break; + } + + return $directory; + } +}