mirror of
https://github.com/opdavies/versa.git
synced 2025-03-10 12:51:51 +00:00
Extract extraArgs
and workingDir
This commit is contained in:
parent
b4e7a71fe3
commit
ee709b2966
|
@ -4,9 +4,15 @@ namespace App\Console\Command;
|
||||||
|
|
||||||
use Symfony\Component\Console\Command\Command;
|
use Symfony\Component\Console\Command\Command;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
|
||||||
abstract class AbstractCommand extends Command
|
abstract class AbstractCommand extends Command
|
||||||
{
|
{
|
||||||
|
protected ?string $extraArgs;
|
||||||
|
|
||||||
|
protected string $workingDir;
|
||||||
|
|
||||||
protected function configure(): void
|
protected function configure(): void
|
||||||
{
|
{
|
||||||
$this->addOption(
|
$this->addOption(
|
||||||
|
@ -32,4 +38,12 @@ abstract class AbstractCommand extends Command
|
||||||
default: '.',
|
default: '.',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function execute(InputInterface $input, OutputInterface $output): int
|
||||||
|
{
|
||||||
|
$this->extraArgs = $input->getOption('extra-args');
|
||||||
|
$this->workingDir = $input->getOption('working-dir');
|
||||||
|
|
||||||
|
return Command::SUCCESS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,17 +16,14 @@ final class BuildCommand extends AbstractCommand
|
||||||
{
|
{
|
||||||
$projectType = null;
|
$projectType = null;
|
||||||
|
|
||||||
$extraArgs = $input->getOption('extra-args');
|
|
||||||
$workingDir = $input->getOption('working-dir');
|
|
||||||
|
|
||||||
$filesystem = new Filesystem();
|
$filesystem = new Filesystem();
|
||||||
|
|
||||||
// Attempt to prepopulate some of the options, such as the project type
|
// Attempt to prepopulate some of the options, such as the project type
|
||||||
// based on its dependencies.
|
// based on its dependencies.
|
||||||
// TODO: move this logic to a service so it can be tested.
|
// TODO: move this logic to a service so it can be tested.
|
||||||
if ($filesystem->exists($workingDir.'/composer.json')) {
|
if ($filesystem->exists($this->workingDir.'/composer.json')) {
|
||||||
$json = json_decode(
|
$json = json_decode(
|
||||||
json: strval(file_get_contents($workingDir.'/composer.json')),
|
json: strval(file_get_contents($this->workingDir.'/composer.json')),
|
||||||
associative: true,
|
associative: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -45,15 +42,15 @@ final class BuildCommand extends AbstractCommand
|
||||||
// the option value if there is one.
|
// the option value if there is one.
|
||||||
$projectType = $input->getOption('type') ?? $projectType;
|
$projectType = $input->getOption('type') ?? $projectType;
|
||||||
|
|
||||||
$isDockerCompose = $filesystem->exists($workingDir . '/docker-compose.yaml');
|
$isDockerCompose = $filesystem->exists($this->workingDir . '/docker-compose.yaml');
|
||||||
|
|
||||||
switch ($projectType) {
|
switch ($projectType) {
|
||||||
case ProjectType::Drupal->value:
|
case ProjectType::Drupal->value:
|
||||||
if ($isDockerCompose) {
|
if ($isDockerCompose) {
|
||||||
$process = Process::create(
|
$process = Process::create(
|
||||||
command: ['docker', 'compose', 'build'],
|
command: ['docker', 'compose', 'build'],
|
||||||
extraArgs: $extraArgs,
|
extraArgs: $this->extraArgs,
|
||||||
workingDir: $workingDir,
|
workingDir: $this->workingDir,
|
||||||
);
|
);
|
||||||
|
|
||||||
$process->run();
|
$process->run();
|
||||||
|
@ -67,8 +64,8 @@ final class BuildCommand extends AbstractCommand
|
||||||
case ProjectType::Sculpin->value:
|
case ProjectType::Sculpin->value:
|
||||||
$process = Process::create(
|
$process = Process::create(
|
||||||
command: ['./vendor/bin/sculpin', 'generate'],
|
command: ['./vendor/bin/sculpin', 'generate'],
|
||||||
extraArgs: $extraArgs,
|
extraArgs: $this->extraArgs,
|
||||||
workingDir: $workingDir,
|
workingDir: $this->workingDir,
|
||||||
);
|
);
|
||||||
|
|
||||||
$process->run();
|
$process->run();
|
||||||
|
|
|
@ -11,14 +11,13 @@ final class InstallCommand extends AbstractCommand
|
||||||
{
|
{
|
||||||
public function execute(InputInterface $input, OutputInterface $output): int
|
public function execute(InputInterface $input, OutputInterface $output): int
|
||||||
{
|
{
|
||||||
$extraArgs = $input->getOption('extra-args');
|
parent::execute($input, $output);
|
||||||
$workingDir = $input->getOption('working-dir');
|
|
||||||
|
|
||||||
// TODO: Composer in Docker Compose?
|
// TODO: Composer in Docker Compose?
|
||||||
$process = Process::create(
|
$process = Process::create(
|
||||||
command: ['composer', 'install'],
|
command: ['composer', 'install'],
|
||||||
extraArgs: $extraArgs,
|
extraArgs: $this->extraArgs,
|
||||||
workingDir: $workingDir,
|
workingDir: $this->workingDir,
|
||||||
);
|
);
|
||||||
|
|
||||||
$process->run();
|
$process->run();
|
||||||
|
|
|
@ -13,16 +13,15 @@ final class RunCommand extends AbstractCommand
|
||||||
{
|
{
|
||||||
public function execute(InputInterface $input, OutputInterface $output): int
|
public function execute(InputInterface $input, OutputInterface $output): int
|
||||||
{
|
{
|
||||||
$projectType = null;
|
parent::execute($input, $output);
|
||||||
|
|
||||||
$extraArgs = $input->getOption('extra-args');
|
$projectType = null;
|
||||||
$workingDir = $input->getOption('working-dir');
|
|
||||||
|
|
||||||
// Attempt to prepopulate some of the options, such as the project type
|
// Attempt to prepopulate some of the options, such as the project type
|
||||||
// based on its dependencies.
|
// based on its dependencies.
|
||||||
// TODO: move this logic to a service so it can be tested.
|
// TODO: move this logic to a service so it can be tested.
|
||||||
$json = json_decode(
|
$json = json_decode(
|
||||||
json: strval(file_get_contents($workingDir.'/composer.json')),
|
json: strval(file_get_contents($this->workingDir.'/composer.json')),
|
||||||
associative: true,
|
associative: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -41,13 +40,13 @@ final class RunCommand extends AbstractCommand
|
||||||
$projectType = $input->getOption('type') ?? $projectType;
|
$projectType = $input->getOption('type') ?? $projectType;
|
||||||
|
|
||||||
$filesystem = new Filesystem();
|
$filesystem = new Filesystem();
|
||||||
$isDockerCompose = $filesystem->exists($workingDir . '/docker-compose.yaml');
|
$isDockerCompose = $filesystem->exists($this->workingDir . '/docker-compose.yaml');
|
||||||
|
|
||||||
if ($isDockerCompose) {
|
if ($isDockerCompose) {
|
||||||
$process = Process::create(
|
$process = Process::create(
|
||||||
command: ['docker', 'compose', 'up'],
|
command: ['docker', 'compose', 'up'],
|
||||||
extraArgs: $extraArgs,
|
extraArgs: $this->extraArgs,
|
||||||
workingDir: $workingDir,
|
workingDir: $this->workingDir,
|
||||||
);
|
);
|
||||||
$process->setTimeout(null);
|
$process->setTimeout(null);
|
||||||
|
|
||||||
|
@ -57,8 +56,8 @@ final class RunCommand extends AbstractCommand
|
||||||
case ProjectType::Sculpin->value:
|
case ProjectType::Sculpin->value:
|
||||||
$process = Process::create(
|
$process = Process::create(
|
||||||
command: ['./vendor/bin/sculpin', 'generate', '--server', '--watch'],
|
command: ['./vendor/bin/sculpin', 'generate', '--server', '--watch'],
|
||||||
extraArgs: $extraArgs,
|
extraArgs: $this->extraArgs,
|
||||||
workingDir: $workingDir,
|
workingDir: $this->workingDir,
|
||||||
);
|
);
|
||||||
$process->setTimeout(null);
|
$process->setTimeout(null);
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,11 @@ final class TestCommand extends AbstractCommand
|
||||||
{
|
{
|
||||||
public function execute(InputInterface $input, OutputInterface $output): int
|
public function execute(InputInterface $input, OutputInterface $output): int
|
||||||
{
|
{
|
||||||
$extraArgs = $input->getOption('extra-args');
|
parent::execute($input, $output);
|
||||||
$workingDir = $input->getOption('working-dir');
|
|
||||||
|
|
||||||
// TODO: move this logic to a service so it can be tested.
|
// TODO: move this logic to a service so it can be tested.
|
||||||
$json = json_decode(
|
$json = json_decode(
|
||||||
json: strval(file_get_contents($workingDir.'/composer.json')),
|
json: strval(file_get_contents($this->workingDir.'/composer.json')),
|
||||||
associative: true,
|
associative: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -33,8 +32,8 @@ final class TestCommand extends AbstractCommand
|
||||||
// TODO: commands in Docker Compose?
|
// TODO: commands in Docker Compose?
|
||||||
$process = Process::create(
|
$process = Process::create(
|
||||||
command: $command,
|
command: $command,
|
||||||
extraArgs: $extraArgs,
|
extraArgs: $this->extraArgs,
|
||||||
workingDir: $workingDir,
|
workingDir: $this->workingDir,
|
||||||
);
|
);
|
||||||
|
|
||||||
$process->run();
|
$process->run();
|
||||||
|
|
Loading…
Reference in a new issue