$module, 'machine_name' => $machineName, 'type' => 'module', 'core' => $core, 'description' => $description, 'package' => $package, 'dependencies' => $dependencies, 'test' => $test, 'twigtemplate' => $twigtemplate, ]; $this->renderFile( 'module/info.yml.twig', $dir.'/'.$machineName.'.info.yml', $parameters ); if (!empty($featuresBundle)) { $this->renderFile( 'module/features.yml.twig', $dir.'/'.$machineName.'.features.yml', [ 'bundle' => $featuresBundle, ] ); } if ($moduleFile) { // Generate '.module' file. $this->createModuleFile($dir, $parameters); } if ($composer) { $this->renderFile( 'module/composer.json.twig', $dir.'/'.'composer.json', $parameters ); } if ($test) { $this->renderFile( 'module/src/Tests/load-test.php.twig', $dir . '/src/Tests/' . 'LoadTest.php', $parameters ); } if ($twigtemplate) { // If module file is not created earlier, create now. if (!$moduleFile) { // Generate '.module' file. $this->createModuleFile($dir, $parameters); } $this->renderFile( 'module/module-twig-template-append.twig', $dir .'/' . $machineName . '.module', $parameters, FILE_APPEND ); $dir .= '/templates/'; if (file_exists($dir)) { if (!is_dir($dir)) { throw new \RuntimeException( sprintf( 'Unable to generate the templates directory as the target directory "%s" exists but is a file.', realpath($dir) ) ); } $files = scandir($dir); if ($files != ['.', '..']) { throw new \RuntimeException( sprintf( 'Unable to generate the templates directory as the target directory "%s" is not empty.', realpath($dir) ) ); } if (!is_writable($dir)) { throw new \RuntimeException( sprintf( 'Unable to generate the templates directory as the target directory "%s" is not writable.', realpath($dir) ) ); } } $this->renderFile( 'module/twig-template-file.twig', $dir . $machineName . '.html.twig', $parameters ); } } /** * Generate the '.module' file. * * @param string $dir * The directory name. * @param array $parameters * The parameter array. */ protected function createModuleFile($dir, $parameters) { $this->renderFile( 'module/module.twig', $dir . '/' . $parameters['machine_name'] . '.module', $parameters ); } }