Skip to content

Commit

Permalink
Merge pull request #68 from creative-commoners/pulls/main/several-things
Browse files Browse the repository at this point in the history
Several improvements
  • Loading branch information
emteknetnz authored Aug 5, 2024
2 parents fe4595f + c167c4c commit dc988df
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 17 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ MS_GITHUB_TOKEN=abc123 php run.php update --cms-major=5 --branch=next-minor --dr
| ---- | ------------|
| --cms-major=[version] | The major version of CMS to use (default: 5) which determines the list of supported modules to use |
| --branch=[type] | The branch type to use - `next-minor`\|`next-patch`\|`github-default` (default: `next-patch`) |
| --script=[scriptname] | Only run a specific script. This is the name of the script file without the file extension e.g. `tag-patch-release` |
| --only=[modules] | Only include the specified modules (without account prefix) separated by commas e.g. `silverstripe-config,silverstripe-assets` |
| --exclude=[modules] | Exclude the specified modules (without account prefix) separated by commas e.g. `silverstripe-mfa,silverstripe-totp` |
| --dry-run | Do not push to github or create pull-requests |
Expand Down
16 changes: 16 additions & 0 deletions funcs_utils.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
function error($message)
{
output_prs_created();
output_repos_with_prs_to_close();
output_repos_with_prs_created();
io()->error($message);
if (!running_unit_tests()) {
Expand Down Expand Up @@ -227,6 +228,21 @@ function output_repos_with_prs_created()
$io->writeln('');
}

function output_repos_with_prs_to_close()
{
if (running_unit_tests()) {
return;
}
global $REPOS_WITH_PRS_TO_CLOSE;
$io = io();
$io->writeln('');
$io->writeln('Repos with pull requests that should be closed:');
foreach ($REPOS_WITH_PRS_TO_CLOSE as $pr) {
$io->writeln("- $pr");
}
$io->writeln('');
}

/**
* Outputs a list of repos that that had labels updated
* If there was an error with a run (probably a secondary rate limit), this can be
Expand Down
9 changes: 9 additions & 0 deletions run.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
$REPOS_WITH_PRS_CREATED = [];
$REPOS_WITH_LABELS_UPDATED = [];
$REPOS_WITH_RULESETS_UPDATED = [];
$REPOS_WITH_PRS_TO_CLOSE = [];
$OUT = null;

// options
Expand All @@ -48,6 +49,13 @@
InputOption::VALUE_REQUIRED,
'The branch type to use - ' . implode('|', BRANCH_OPTIONS) . ' (default: ' . DEFAULT_BRANCH . ')'
];
$optionScript = [
'script',
null,
InputOption::VALUE_REQUIRED,
'Only run a specific script. This is the name of the script file without the file extension '
. 'e.g. tag-patch-release'
];
$optionOnly = [
'only',
null,
Expand Down Expand Up @@ -99,6 +107,7 @@
->setDescription('The main script of module-standardiser')
->addOption(...$optionCmsMajor)
->addOption(...$optionBranch)
->addOption(...$optionScript)
->addOption(...$optionOnly)
->addOption(...$optionExclude)
->addOption(...$optionDryRun)
Expand Down
21 changes: 19 additions & 2 deletions scripts/cms-any/tag-patch-release.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,26 @@
EOT;

$workflowPath = '.github/workflows/tag-patch-release.yml';
$ciPath = '.github/workflows/ci.yml';
$ciPaths = [ '.github/workflows/ci.yml', '.github/workflows/action-ci.yml' ];
$shouldHaveAction = false;

if (check_file_exists($ciPath)) {
foreach ($ciPaths as $ciPath) {
if (check_file_exists($ciPath)) {
$shouldHaveAction = true;
}
}

$notAllowedRepos = [
'cow',
'rhino',
'github-issue-search-client',
'module-standardiser',
'silverstripe-tx-translator',
'supported-modules',
];
$shouldHaveAction = $shouldHaveAction && !is_misc() && !module_is_one_of($notAllowedRepos);

if ($shouldHaveAction) {
write_file_even_if_exists($workflowPath, $content);
} else {
delete_file_if_exists($workflowPath);
Expand Down
36 changes: 21 additions & 15 deletions update_command.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// This is the code that is executed when running the 'update' command

// variables
global $MODULE_DIR, $GITHUB_REF, $OUT, $PRS_CREATED, $REPOS_WITH_PRS_CREATED;
global $MODULE_DIR, $GITHUB_REF, $OUT, $PRS_CREATED, $REPOS_WITH_PRS_CREATED, $REPOS_WITH_PRS_TO_CLOSE;
$OUT = $output;

$reposMissingBranch = [];
Expand Down Expand Up @@ -79,7 +79,7 @@
}
cmd("git remote add pr-remote $prOrigin", $MODULE_DIR);

$useDefaultBranch = has_wildcard_major_version_mapping() || $branchOption === 'github-default';
$useDefaultBranch = (has_wildcard_major_version_mapping() && !current_branch_name_is_numeric_style()) || $branchOption === 'github-default';

if ($input->getOption('update-prs')) {
// checkout latest existing pr branch
Expand Down Expand Up @@ -161,15 +161,26 @@
error("Branch $branchToCheckout does not support CMS major version $cmsMajor");
}

// create a new branch used for the pull-request
if (!$input->getOption('update-prs')) {
if ($input->getOption('update-prs')) {
// Delete the last commit so we're starting as through we didn't do the previous run
$lastCommitMessage = cmd('git log -1 --pretty=%B', $MODULE_DIR);
if ($lastCommitMessage !== PR_TITLE) {
error("Last commit message \"$lastCommitMessage\" does not match PR_TITLE \"" . PR_TITLE . "\"");
}
cmd("git reset HEAD~ --hard", $MODULE_DIR);
} else {
// create a new branch used for the pull-request
$timestamp = time();
$prBranch = "pulls/$branchToCheckout/module-standardiser-$timestamp";
cmd("git checkout -b $prBranch", $MODULE_DIR);
}

// run scripts
$onlyThisScript = $input->getOption('script');
foreach ($scriptFiles as $scriptFile) {
if ($onlyThisScript && basename($scriptFile, '.php') !== $onlyThisScript) {
continue;
}
$contents = file_get_contents($scriptFile);
$contents = str_replace('<?php', '', $contents);
// wrap in an anonymous function to ensure that script variables do not go into the global scope
Expand All @@ -181,20 +192,14 @@
$status = cmd('git status', $MODULE_DIR);
if (strpos($status, 'nothing to commit') !== false) {
info("No changes to commit for $repo");
if ($input->getOption('update-prs')) {
$REPOS_WITH_PRS_TO_CLOSE[] = $GITHUB_REF;
}
continue;
}
// create new commit
cmd('git add .', $MODULE_DIR);
if ($input->getOption('update-prs')) {
// squash on to existing commit
$lastCommitMessage = cmd('git log -1 --pretty=%B', $MODULE_DIR);
if ($lastCommitMessage !== PR_TITLE) {
error("Last commit message \"$lastCommitMessage\" does not match PR_TITLE \"" . PR_TITLE . "\"");
}
cmd("git commit --amend --no-edit", $MODULE_DIR);
} else {
// create new commit
cmd("git commit -m '" . PR_TITLE . "'", $MODULE_DIR);
}
cmd("git commit -m '" . PR_TITLE . "'", $MODULE_DIR);
if ($input->getOption('dry-run')) {
info('Not pushing changes or creating pull-request because --dry-run option is set');
continue;
Expand Down Expand Up @@ -223,6 +228,7 @@
}
output_repos_with_prs_created();
output_prs_created();
output_repos_with_prs_to_close();

// Report about any repos for which we couldn't find the right branch.
if (count($reposMissingBranch)) {
Expand Down

0 comments on commit dc988df

Please sign in to comment.