diff --git a/src/Classes/File/DockerComposeFileBuilder.php b/src/Classes/File/DockerComposeFileBuilder.php new file mode 100644 index 0000000..0eea064 --- /dev/null +++ b/src/Classes/File/DockerComposeFileBuilder.php @@ -0,0 +1,34 @@ +<?php + +declare(strict_types=1); + +namespace Loom\Spinner\Classes\File; + +use Loom\Spinner\Classes\Config\Config; +use Symfony\Component\Console\Input\InputInterface; + +class DockerComposeFileBuilder extends AbstractFileBuilder +{ + /** + * @throws \Exception + */ + public function __construct(Config $config) + { + $projectDockerCompose = $this->config->getFilePaths()->get('projectDockerCompose'); + + if (!$projectDockerCompose instanceof SpinnerFilePath) { + throw new \Exception('Project Docker Compose file path not found.'); + } + + return parent::__construct($projectDockerCompose, $config); + } + + public function build(InputInterface $input): DockerComposeFileBuilder + { + $this->content = file_get_contents( + $this->config->getFilePaths()->get('phpYamlTemplate')->getAbsolutePath() + ); + + return $this; + } +} \ No newline at end of file diff --git a/src/Command/SpinCommand.php b/src/Command/SpinCommand.php index 3f6bbd8..7f18190 100644 --- a/src/Command/SpinCommand.php +++ b/src/Command/SpinCommand.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Loom\Spinner\Command; +use Loom\Spinner\Classes\File\DockerComposeFileBuilder; use Loom\Spinner\Classes\File\PHPDockerFileBuilder; use Loom\Spinner\Classes\File\SpinnerFilePath; use Loom\Spinner\Classes\OS\PortGenerator; @@ -70,9 +71,9 @@ class SpinCommand extends AbstractSpinnerCommand $this->style->text('Creating project data...'); $this->createProjectData($input); - $command = $this->buildDockerComposeCommand(sprintf('-p %s up', $input->getArgument('name'))); - - passthru($command); +// $command = $this->buildDockerComposeCommand(sprintf('-p %s up', $input->getArgument('name'))); +// +// passthru($command); return Command::SUCCESS; } @@ -95,7 +96,7 @@ class SpinCommand extends AbstractSpinnerCommand { $this->createProjectDataDirectory(); $this->createEnvironmentFile($input); - $this->buildDockerComposeFile(); + $this->buildDockerComposeFile($input); $this->buildDockerfile($input); } @@ -139,22 +140,27 @@ class SpinCommand extends AbstractSpinnerCommand /** * @throws \Exception */ - private function buildDockerComposeFile(): void + private function buildDockerComposeFile(InputInterface $input): void + { + $this->createProjectPhpFpmDirectory(); + + (new DockerComposeFileBuilder($this->config))->build($input)->save(); + } + + /** + * @throws \Exception + */ + private function createProjectPhpFpmDirectory(): void { $projectData = $this->config->getFilePaths()->get('projectData'); - $projectDockerCompose = $this->config->getFilePaths()->get('projectDockerCompose'); - if (!$projectData instanceof SpinnerFilePath || !$projectDockerCompose instanceof SpinnerFilePath) { + if (!$projectData instanceof SpinnerFilePath) { throw new \Exception('Invalid project data directory provided.'); } if (!file_exists($projectData->getProvidedPath() . '/php-fpm')) { mkdir($projectData->getProvidedPath() . '/php-fpm', 0777, true); } - file_put_contents( - $projectDockerCompose->getProvidedPath(), - file_get_contents($this->config->getFilePaths()->get('phpYamlTemplate')->getAbsolutePath()) - ); } /**