Skip to content

Commit bab538d

Browse files
Copilotadamziel
andcommitted
Fix packagist release by using custom PushNextDevReleaseWorker that respects the configured default branch
Co-authored-by: adamziel <[email protected]>
1 parent 089b158 commit bab538d

File tree

3 files changed

+120
-3
lines changed

3 files changed

+120
-3
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace WordPressPhpToolkit\MonorepoBuilder;
6+
7+
use PharIo\Version\Version;
8+
use Symplify\MonorepoBuilder\DevMasterAliasUpdater;
9+
use Symplify\MonorepoBuilder\FileSystem\ComposerJsonProvider;
10+
use Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface;
11+
use Symplify\MonorepoBuilder\Release\Process\ProcessRunner;
12+
use Symplify\MonorepoBuilder\Utils\VersionUtils;
13+
use Symplify\MonorepoBuilder\ValueObject\Option;
14+
use Symplify\PackageBuilder\Parameter\ParameterProvider;
15+
16+
/**
17+
* Custom PushNextDevReleaseWorker that respects the configured default branch.
18+
*
19+
* This worker is a replacement for the default PushNextDevReleaseWorker from
20+
* symplify/monorepo-builder, which hardcodes "master" as the branch name.
21+
*/
22+
final class CustomPushNextDevReleaseWorker implements ReleaseWorkerInterface {
23+
24+
/**
25+
* Process runner.
26+
*
27+
* @var ProcessRunner
28+
*/
29+
private $processRunner;
30+
31+
/**
32+
* Version utilities.
33+
*
34+
* @var VersionUtils
35+
*/
36+
private $versionUtils;
37+
38+
/**
39+
* Composer JSON provider.
40+
*
41+
* @var ComposerJsonProvider
42+
*/
43+
private $composerJsonProvider;
44+
45+
/**
46+
* Dev master alias updater.
47+
*
48+
* @var DevMasterAliasUpdater
49+
*/
50+
private $devMasterAliasUpdater;
51+
52+
/**
53+
* Parameter provider.
54+
*
55+
* @var ParameterProvider
56+
*/
57+
private $parameterProvider;
58+
59+
/**
60+
* Constructor.
61+
*
62+
* @param ProcessRunner $processRunner Process runner.
63+
* @param VersionUtils $versionUtils Version utilities.
64+
* @param ComposerJsonProvider $composerJsonProvider Composer JSON provider.
65+
* @param DevMasterAliasUpdater $devMasterAliasUpdater Dev master alias updater.
66+
* @param ParameterProvider $parameterProvider Parameter provider.
67+
*/
68+
public function __construct(
69+
ProcessRunner $processRunner,
70+
VersionUtils $versionUtils,
71+
ComposerJsonProvider $composerJsonProvider,
72+
DevMasterAliasUpdater $devMasterAliasUpdater,
73+
ParameterProvider $parameterProvider
74+
) {
75+
$this->processRunner = $processRunner;
76+
$this->versionUtils = $versionUtils;
77+
$this->composerJsonProvider = $composerJsonProvider;
78+
$this->devMasterAliasUpdater = $devMasterAliasUpdater;
79+
$this->parameterProvider = $parameterProvider;
80+
}
81+
82+
/**
83+
* Perform the work of pushing the next dev release.
84+
*
85+
* @param Version $version Version to release.
86+
*/
87+
public function work( Version $version ): void {
88+
// Get the configured default branch from parameters.
89+
$defaultBranch = $this->parameterProvider->provideParameter( Option::DEFAULT_BRANCH );
90+
91+
$versionInString = $this->versionUtils->getRequiredNextAliasFormat( $version );
92+
93+
$gitAddCommitCommand = sprintf(
94+
'git add . && git commit --allow-empty -m "open %s" && git push origin "%s"',
95+
$versionInString,
96+
$defaultBranch
97+
);
98+
99+
$this->processRunner->run( $gitAddCommitCommand );
100+
}
101+
102+
/**
103+
* Get the description of this release worker.
104+
*
105+
* @param Version $version Version to release.
106+
* @return string Description.
107+
*/
108+
public function getDescription( Version $version ): string {
109+
$versionInString = $this->versionUtils->getRequiredNextAliasFormat( $version );
110+
111+
// Get the configured default branch from parameters.
112+
$defaultBranch = $this->parameterProvider->provideParameter( Option::DEFAULT_BRANCH );
113+
114+
return sprintf( 'Push "%s" open to remote repository on branch "%s"', $versionInString, $defaultBranch );
115+
}
116+
}

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@
7373
"psr-4": {
7474
"Rowbot\\": "components/DataLiberation/vendor-patched/",
7575
"Brick\\": "components/DataLiberation/vendor-patched/",
76-
"WordPress\\CORSProxy\\": "components/CORSProxy/"
76+
"WordPress\\CORSProxy\\": "components/CORSProxy/",
77+
"WordPressPhpToolkit\\MonorepoBuilder\\": ".monorepo-builder/"
7778
}
7879
},
7980
"scripts": {

monorepo-builder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
use Symplify\MonorepoBuilder\Config\MBConfig;
66
use Symplify\MonorepoBuilder\Release\ReleaseWorker\AddTagToChangelogReleaseWorker;
7-
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushNextDevReleaseWorker;
87
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker;
98
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetCurrentMutualDependenciesReleaseWorker;
109
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetNextMutualDependenciesReleaseWorker;
1110
use Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker;
1211
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateBranchAliasReleaseWorker;
1312
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateReplaceReleaseWorker;
13+
use WordPressPhpToolkit\MonorepoBuilder\CustomPushNextDevReleaseWorker;
1414

1515
return static function ( MBConfig $config ): void {
1616
// Where packages live.
@@ -30,7 +30,7 @@
3030
PushTagReleaseWorker::class,
3131
SetNextMutualDependenciesReleaseWorker::class,
3232
UpdateBranchAliasReleaseWorker::class,
33-
PushNextDevReleaseWorker::class,
33+
CustomPushNextDevReleaseWorker::class,
3434
)
3535
);
3636
};

0 commit comments

Comments
 (0)