addOption('output-dir', 'o', InputOption::VALUE_REQUIRED, 'The directory to create files in', '.'); } public function execute(InputInterface $input, OutputInterface $output): int { $outputDir = $input->getOption('output-dir'); $io = new SymfonyStyle($input, $output); $configurationData = Yaml::parseFile(getcwd().'/build.yaml'); $configurationData['dockerCompose'] = $configurationData['docker-compose']; $configurationData['docker-compose'] = null; $io->info("Building configuration for {$configurationData['name']}."); $this->filesystem->dumpFile("{$outputDir}/.env.example", $this->twig->render('env.example.twig', $configurationData)); $this->filesystem->dumpFile("{$outputDir}/Dockerfile", $this->twig->render('Dockerfile.twig', $configurationData)); if ($configurationData['dockerCompose'] === true) { $this->filesystem->dumpFile("{$outputDir}/docker-compose.yaml", $this->twig->render('docker-compose.yaml.twig', $configurationData)); } if ($configurationData['language'] === self::LANGUAGE_PHP) { $this->filesystem->dumpFile("{$outputDir}/phpcs.xml.dist", $this->twig->render('phpcs.xml.twig', $configurationData)); $this->filesystem->dumpFile("{$outputDir}/phpstan.neon.dist", $this->twig->render('phpstan.neon.twig', $configurationData)); $this->filesystem->dumpFile("{$outputDir}/phpunit.xml.dist", $this->twig->render('phpunit.xml.twig', $configurationData)); } return Command::SUCCESS; } }