-
Notifications
You must be signed in to change notification settings - Fork 0
/
monorepo-builder.php
53 lines (44 loc) · 2.53 KB
/
monorepo-builder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
declare(strict_types=1);
use LifeSpikes\MonorepoCLI\Functions;
use LifeSpikes\MonorepoCLI\Enums\PackageType;
use Symplify\MonorepoBuilder\ValueObject\Option;
use LifeSpikes\MonorepoCLI\Workers\CopyReleaseFileWorker;
use LifeSpikes\MonorepoCLI\Workers\NpmVersionMatchWorker;
use LifeSpikes\MonorepoCLI\Workers\UpdateRootVersionWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushNextDevReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateReplaceReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\AddTagToChangelogReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateBranchAliasReleaseWorker;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetNextMutualDependenciesReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetCurrentMutualDependenciesReleaseWorker;
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
$services = $containerConfigurator->services();
$packages = explode(',', getenv('MONOREPO_CLI_PKG_DIR'));
$ignorePackages = explode(',', getenv('MONOREPO_CLI_IGNORE_DIRS'));
if (!is_array($packages) || count(array_filter($packages, fn ($path) => !file_exists($path) || !is_dir($path))) > 0) {
throw new RuntimeException('Invalid environment variables - one or more package directories do not exist');
}
if (!is_array($ignorePackages)) {
throw new RuntimeException('Invalid environment variables');
}
/* Include our package directory */
$parameters->set(Option::PACKAGE_DIRECTORIES, $packages);
$parameters->set(Option::PACKAGE_DIRECTORIES_EXCLUDES, $ignorePackages);
/* Release workers */
$services->set(CopyReleaseFileWorker::class);
$services->set(UpdateReplaceReleaseWorker::class);
$services->set(SetCurrentMutualDependenciesReleaseWorker::class);
$services->set(AddTagToChangelogReleaseWorker::class);
$services->set(NpmVersionMatchWorker::class);
$services->set(UpdateRootVersionWorker::class);
$services->set(TagVersionReleaseWorker::class);
$services->set(PushTagReleaseWorker::class);
$services->set(SetNextMutualDependenciesReleaseWorker::class);
$services->set(UpdateBranchAliasReleaseWorker::class);
$services->set(PushNextDevReleaseWorker::class);
};