Skip to content

Commit

Permalink
[BUGFIX] Move artifact generation to dumpBuildArtifact step
Browse files Browse the repository at this point in the history
  • Loading branch information
eliashaeussler committed Mar 22, 2023
1 parent eb5bd75 commit dcf3450
Show file tree
Hide file tree
Showing 16 changed files with 13 additions and 54 deletions.
18 changes: 0 additions & 18 deletions src/Builder/BuildResult.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

namespace CPSIT\ProjectBuilder\Builder;

use CPSIT\ProjectBuilder\Helper;
use CPSIT\ProjectBuilder\Resource;
use Symfony\Component\Filesystem;
use Symfony\Component\Finder;
Expand All @@ -48,7 +47,6 @@ final class BuildResult

public function __construct(
private readonly BuildInstructions $instructions,
private readonly ArtifactGenerator $artifactGenerator,
) {
}

Expand Down Expand Up @@ -84,15 +82,6 @@ public function setArtifactFile(?Finder\SplFileInfo $artifactFile): self
return $this;
}

public function getArtifact(): ?Artifact\Artifact
{
if (null !== $this->artifactFile) {
return $this->generateArtifact($this->artifactFile);
}

return null;
}

/**
* @return array<string, Generator\Step\StepInterface>
*/
Expand Down Expand Up @@ -149,11 +138,4 @@ public function getWrittenDirectory(): string

return $this->instructions->getTemporaryDirectory();
}

private function generateArtifact(Finder\SplFileInfo $artifactFile): Artifact\Artifact
{
$composer = Resource\Local\Composer::createComposer(Helper\FilesystemHelper::getProjectRootPath());

return $this->artifactGenerator->build($artifactFile, $this, $composer->getPackage());
}
}
4 changes: 2 additions & 2 deletions src/Builder/Generator/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public function run(string $targetDirectory): Builder\BuildResult
}

$instructions = new Builder\BuildInstructions($this->config, $targetDirectory);
$result = new Builder\BuildResult($instructions, $this->artifactGenerator);
$result = new Builder\BuildResult($instructions);

$this->eventDispatcher->dispatch(new Event\ProjectBuildStartedEvent($instructions));

Expand Down Expand Up @@ -106,7 +106,7 @@ public function run(string $targetDirectory): Builder\BuildResult

public function dumpArtifact(Builder\BuildResult $result): void
{
$step = new Builder\Generator\Step\DumpBuildArtifactStep($this->filesystem, $this->writer);
$step = new Builder\Generator\Step\DumpBuildArtifactStep($this->filesystem, $this->writer, $this->artifactGenerator);
$step->run($result);
}

Expand Down
9 changes: 7 additions & 2 deletions src/Builder/Generator/Step/DumpBuildArtifactStep.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
namespace CPSIT\ProjectBuilder\Builder\Generator\Step;

use CPSIT\ProjectBuilder\Builder;
use CPSIT\ProjectBuilder\Helper;
use CPSIT\ProjectBuilder\Resource;
use Symfony\Component\Filesystem;

/**
Expand All @@ -41,21 +43,24 @@ final class DumpBuildArtifactStep extends AbstractStep
public function __construct(
private readonly Filesystem\Filesystem $filesystem,
private readonly Builder\Writer\JsonFileWriter $writer,
private readonly Builder\ArtifactGenerator $artifactGenerator,
) {
parent::__construct();
}

public function run(Builder\BuildResult $buildResult): bool
{
$artifactFile = $buildResult->getArtifactFile();
$artifact = $buildResult->getArtifact();

if (null === $artifactFile || null === $artifact) {
if (null === $artifactFile) {
return true;
}

$buildResult->applyStep($this);

$composer = Resource\Local\Composer::createComposer(Helper\FilesystemHelper::getProjectRootPath());
$artifact = $this->artifactGenerator->build($artifactFile, $buildResult, $composer->getPackage());

return $this->writer->write($artifactFile, $artifact);
}

Expand Down
1 change: 0 additions & 1 deletion tests/src/Builder/ArtifactGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ protected function setUp(): void
self::$container->get('app.config'),
'foo',
),
$this->subject,
);
$this->rootPackage = Src\Resource\Local\Composer::createComposer(dirname(__DIR__, 3))->getPackage();
}
Expand Down
15 changes: 0 additions & 15 deletions tests/src/Builder/BuildResultTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ protected function setUp(): void
);
$this->subject = new Src\Builder\BuildResult(
$this->instructions,
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
}

Expand Down Expand Up @@ -82,20 +81,6 @@ public function getArtifactFileReturnsArtifactFile(): void
self::assertSame($artifactFile, $this->subject->setArtifactFile($artifactFile)->getArtifactFile());
}

/**
* @test
*/
public function getArtifactReturnsArtifact(): void
{
self::assertNull($this->subject->getArtifact());

$artifactFile = Src\Helper\FilesystemHelper::createFileObject('/foo', 'baz');

$this->subject->setArtifactFile($artifactFile);

self::assertInstanceOf(Src\Builder\Artifact\Artifact::class, $this->subject->getArtifact());
}

/**
* @test
*/
Expand Down
1 change: 0 additions & 1 deletion tests/src/Builder/Generator/Step/CleanUpStepTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ protected function setUp(): void
self::$config,
Src\Helper\FilesystemHelper::getNewTemporaryDirectory(),
),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ public function runAppliesNullAsDefaultValueOnSkippedProperties(): void

$buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions($config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);

$this->subject->run($buildResult);
Expand Down Expand Up @@ -108,7 +107,6 @@ public function runAppliesNullAsDefaultValueOnSkippedSubProperties(): void

$buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions($config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);

$this->subject->run($buildResult);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ final class DumpBuildArtifactStepTest extends Tests\ContainerAwareTestCase
protected function setUp(): void
{
$this->filesystem = self::$container->get(Filesystem\Filesystem::class);
$this->artifactGenerator = self::$container->get(Src\Builder\ArtifactGenerator::class);
$this->subject = new Src\Builder\Generator\Step\DumpBuildArtifactStep(
$this->filesystem,
self::$container->get(Src\Builder\Writer\JsonFileWriter::class),
$this->artifactGenerator,
);
$this->artifactGenerator = self::$container->get(Src\Builder\ArtifactGenerator::class);
$this->buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
$this->artifactGenerator,
);
$this->artifactFile = Src\Helper\FilesystemHelper::createFileObject(
$this->buildResult->getWrittenDirectory(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ protected function setUp(): void
$this->filesystem = self::$container->get(Filesystem\Filesystem::class);
$this->buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
$this->artifactFile = Src\Helper\FilesystemHelper::createFileObject(
$this->buildResult->getWrittenDirectory(),
Expand All @@ -71,7 +70,7 @@ public function runAsksForConfirmationIfArtifactPathAlreadyExists(bool $continue
self::assertSame($expected, $this->subject->run($this->buildResult));
self::assertSame(!$expected, $this->subject->isStopped());
self::assertFalse($this->buildResult->isStepApplied($this->subject));
self::assertNull($this->buildResult->getArtifact());
self::assertNull($this->buildResult->getArtifactFile());
self::assertStringContainsString(
'The build artifact cannot be generated because the resulting file already exists.',
self::$io->getOutput(),
Expand All @@ -84,7 +83,7 @@ public function runAsksForConfirmationIfArtifactPathAlreadyExists(bool $continue
public function runGeneratesArtifact(): void
{
self::assertTrue($this->subject->run($this->buildResult));
self::assertInstanceOf(Src\Builder\Artifact\Artifact::class, $this->buildResult->getArtifact());
self::assertEquals($this->artifactFile, $this->buildResult->getArtifactFile());
self::assertTrue($this->buildResult->isStepApplied($this->subject));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ protected function setUp(): void
$this->subject = self::$container->get(Src\Builder\Generator\Step\InstallComposerDependenciesStep::class);
$this->buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ protected function setUp(): void
$this->subject->setConfig($step);
$this->result = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ protected function setUp(): void
$this->subject->setConfig($step);
$this->result = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
}

Expand Down Expand Up @@ -94,7 +93,6 @@ public function runCanProcessTheSameSourceFileWithMultipleConditions(

$result = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions($config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);

$this->subject->setConfig($step);
Expand Down
1 change: 0 additions & 1 deletion tests/src/Builder/Generator/Step/ShowNextStepsStepTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ protected function setUp(): void
$this->subject = self::$container->get(Src\Builder\Generator\Step\ShowNextStepsStep::class);
$this->result = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
}

Expand Down
1 change: 0 additions & 1 deletion tests/src/Event/BuildStepProcessedEventTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ protected function setUp(): void
$this->step = new Tests\Fixtures\DummyStep();
$this->buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
$this->subject = new Src\Event\BuildStepProcessedEvent(
$this->step,
Expand Down
1 change: 0 additions & 1 deletion tests/src/Event/BuildStepRevertedEventTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ protected function setUp(): void
$this->step = new Tests\Fixtures\DummyStep();
$this->buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
$this->subject = new Src\Event\BuildStepRevertedEvent(
$this->step,
Expand Down
1 change: 0 additions & 1 deletion tests/src/Event/ProjectBuildFinishedEventTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ protected function setUp(): void
{
$this->buildResult = new Src\Builder\BuildResult(
new Src\Builder\BuildInstructions(self::$config, 'foo'),
self::$container->get(Src\Builder\ArtifactGenerator::class),
);
$this->subject = new Src\Event\ProjectBuildFinishedEvent(
$this->buildResult,
Expand Down

0 comments on commit dcf3450

Please sign in to comment.