Skip to content

Commit 3c6d94e

Browse files
committed
[TASK] Add custom worker for defining FractorApplication version
1 parent 4c8e6ea commit 3c6d94e

6 files changed

+95
-9
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
},
4141
"autoload": {
4242
"psr-4": {
43-
"A9f\\FractorMonorepo\\": "src/",
43+
"a9f\\FractorMonorepo\\": "src",
4444
"a9f\\FractorComposerJson\\": [
4545
"packages/fractor-composer-json/rules",
4646
"packages/fractor-composer-json/src"

monorepo-builder.php

+11-7
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,26 @@
22

33
declare(strict_types=1);
44

5+
use a9f\FractorMonorepo\Release\FractorApplicationReleaseWriter;
6+
use a9f\FractorMonorepo\Release\ReleaseWorker\DefineFractorApplicationReleaseVersionWorker;
7+
use a9f\FractorMonorepo\Release\ReleaseWorker\UpdateFractorApplicationReleaseVersionWorker;
58
use Symplify\MonorepoBuilder\ComposerJsonManipulator\ValueObject\ComposerJsonSection;
69
use Symplify\MonorepoBuilder\Config\MBConfig;
7-
use Symplify\MonorepoBuilder\Release\ReleaseWorker\AddTagToChangelogReleaseWorker;
8-
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushNextDevReleaseWorker;
910
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker;
1011
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetCurrentMutualDependenciesReleaseWorker;
1112
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetNextMutualDependenciesReleaseWorker;
1213
use Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker;
1314
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateBranchAliasReleaseWorker;
14-
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateReplaceReleaseWorker;
1515
use Symplify\MonorepoBuilder\ValueObject\Option;
1616

17+
// MonoRepoBuilder uses own autoloader in custom vendor folder
18+
require_once __DIR__ . '/vendor/autoload.php';
19+
1720
return static function (MBConfig $mbConfig): void {
21+
$mbConfig->services()
22+
->set(FractorApplicationReleaseWriter::class);
23+
1824
$mbConfig->packageDirectories([__DIR__ . '/packages']);
19-
$mbConfig->packageAliasFormat('<major>.<minor>.x-dev');
2025
$mbConfig->defaultBranch('main');
2126
$mbConfig->dataToRemove([
2227
ComposerJsonSection::REPOSITORIES => [
@@ -28,13 +33,12 @@
2833
]);
2934
// release workers - in order of execution
3035
$mbConfig->workers([
31-
UpdateReplaceReleaseWorker::class,
36+
DefineFractorApplicationReleaseVersionWorker::class,
3237
SetCurrentMutualDependenciesReleaseWorker::class,
33-
AddTagToChangelogReleaseWorker::class,
3438
TagVersionReleaseWorker::class,
3539
PushTagReleaseWorker::class,
3640
SetNextMutualDependenciesReleaseWorker::class,
3741
UpdateBranchAliasReleaseWorker::class,
38-
PushNextDevReleaseWorker::class,
42+
UpdateFractorApplicationReleaseVersionWorker::class,
3943
]);
4044
};

packages/fractor/src/FractorApplication.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ final class FractorApplication extends Application
1010
{
1111
public const NAME = 'Fractor';
1212

13+
private const FRACTOR_CONSOLE_VERSION = '0.1.0';
14+
1315
public function __construct()
1416
{
15-
parent::__construct(self::NAME, 'dev');
17+
parent::__construct(self::NAME, self::FRACTOR_CONSOLE_VERSION);
1618
}
1719
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace a9f\FractorMonorepo\Release;
5+
6+
use a9f\Fractor\FractorApplication;
7+
use Nette\Utils\FileSystem;
8+
use Nette\Utils\Strings;
9+
10+
final class FractorApplicationReleaseWriter
11+
{
12+
public function write(string $version): void
13+
{
14+
$applicationFile = __DIR__ . '/../../packages/fractor/src/FractorApplication.php';
15+
$content = Filesystem::read($applicationFile);
16+
$content = Strings::replace($content, '/(const FRACTOR_CONSOLE_VERSION = \')\d+\.\d+\.\d+/', 'const FRACTOR_CONSOLE_VERSION = \'' . $version);
17+
FileSystem::write($applicationFile, $content);
18+
}
19+
20+
public function getDescription(string $version): string
21+
{
22+
return \sprintf('Add "%s" to "%s"', $version, FractorApplication::class);
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace a9f\FractorMonorepo\Release\ReleaseWorker;
5+
6+
use a9f\FractorMonorepo\Release\FractorApplicationReleaseWriter;
7+
use PharIo\Version\Version;
8+
use Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface;
9+
10+
final readonly class DefineFractorApplicationReleaseVersionWorker implements ReleaseWorkerInterface
11+
{
12+
public function __construct(private FractorApplicationReleaseWriter $fractorApplicationReleaseWriter)
13+
{
14+
}
15+
16+
public function getDescription(Version $version): string
17+
{
18+
return $this->fractorApplicationReleaseWriter->getDescription($version->getVersionString());
19+
}
20+
21+
public function work(Version $version): void
22+
{
23+
$this->fractorApplicationReleaseWriter->write($version->getVersionString());
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace a9f\FractorMonorepo\Release\ReleaseWorker;
5+
6+
use a9f\FractorMonorepo\Release\FractorApplicationReleaseWriter;
7+
use PharIo\Version\Version;
8+
use Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface;
9+
use Symplify\MonorepoBuilder\Utils\VersionUtils;
10+
11+
final class UpdateFractorApplicationReleaseVersionWorker implements ReleaseWorkerInterface
12+
{
13+
public function __construct(private FractorApplicationReleaseWriter $fractorApplicationReleaseWriter, private VersionUtils $versionUtils)
14+
{
15+
}
16+
17+
public function getDescription(Version $version) : string
18+
{
19+
return $this->fractorApplicationReleaseWriter->getDescription($this->getVersionDev($version));
20+
}
21+
22+
public function work(Version $version): void
23+
{
24+
$this->fractorApplicationReleaseWriter->write($this->getVersionDev($version));
25+
}
26+
27+
private function getVersionDev(Version $version) : string
28+
{
29+
return $this->versionUtils->getNextAliasFormat($version);
30+
}
31+
}

0 commit comments

Comments
 (0)