Skip to content

Commit

Permalink
Merge pull request #30 from creative-commoners/pulls/main/array
Browse files Browse the repository at this point in the history
FIX Init array, use $oldName, add REPOS_EXCLUDE, check if label exists before rename
  • Loading branch information
GuySartorelli authored Jan 29, 2024
2 parents b3786b1 + 9b6c72d commit 37fee74
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 11 deletions.
1 change: 1 addition & 0 deletions funcs_utils.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ function extra_repositories()
$importantRepos = [
'silverstripe/markdown-php-codesniffer',
'silverstripe/silverstripe-standards',
'silverstripe/.github',
];
$modules = [];
// iterating to page 10 will be enough to get all the repos well into the future
Expand Down
50 changes: 39 additions & 11 deletions labels_command.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,22 @@
'type/api-change' => 'type/api-break',
];

// Repos that should not have labels updated because of a lack of API permissions because they are on
// non-silverstripe GitHub accounts, or because they are not applicable
const LABELS_EXCLUDE_GHREPOS = [
'colymba/GridFieldBulkEditingTools',
'composer/installers',
'dnadesign/silverstripe-elemental-subsites',
'hafriedlander/phockito',
'hafriedlander/silverstripe-phockito',
'lekoala/silverstripe-debugbar',
'tijsverkoyen/akismet',
'tractorcow-farm/silverstripe-fluent',
'tractorcow/classproxy',
'tractorcow/silverstripe-proxy-db',
'undefinedoffset/sortablegridfield',
];

$labelsCommand = function(InputInterface $input, OutputInterface $output): int {
// This is the code that is executed when running the 'labels' command

Expand All @@ -61,7 +77,8 @@
foreach ([$modulesCurrentMajor, $modulesPreviousMajor] as $modulesList) {
foreach ($modulesList as $module) {
$repo = $module['repo'];
if (in_array($repo, $repos)) {
$ghrepo = $module['ghrepo'];
if (in_array($repo, $repos) || in_array($ghrepo, LABELS_EXCLUDE_GHREPOS)) {
continue;
}
$modules[] = $module;
Expand Down Expand Up @@ -93,17 +110,28 @@
// https://docs.github.com/en/rest/issues/labels#update-a-label
if (array_key_exists($name, LABELS_RENAME)) {
$newName = LABELS_RENAME[$name];
info("Updating label $name to $newName in $repo");
if ($input->getOption('dry-run')) {
info('Not updating label on GitHub because --dry-run option is set');
} else {
github_api($url, ['new_name' => $newName], 'PATCH');
// Don't rename if a label with the new name already exists
$alreadyExists = false;
foreach ($labels as $label) {
if ($newName === $label['name']) {
$alreadyExists = true;
break;
}
}
if (!$alreadyExists) {
info("Updating label $name to $newName in $repo");
if ($input->getOption('dry-run')) {
info('Not updating label on GitHub because --dry-run option is set');
} else {
github_api($url, ['new_name' => $newName], 'PATCH');
}
$oldName = $name;
$name = $newName;
// Update $url replacing the $name at the end with $newName
$url = substr($url, 0, strlen($url) - strlen($oldName)) . $newName;
$labels[$key]['name'] = $newName;
$labels[$key]['url'] = $url;
}
$name = $newName;
// Update $url replacing the $name at the end with $newName
$url = substr($url, 0, strlen($url) - strlen($name)) . $newName;
$labels[$key]['name'] = $newName;
$labels[$key]['url'] = $url;
}

// Delete label
Expand Down
1 change: 1 addition & 0 deletions run.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
$MODULE_DIR = '';
$PRS_CREATED = [];
$REPOS_WITH_PRS_CREATED = [];
$REPOS_WITH_LABELS_UPDATED = [];
$OUT = null;

// options
Expand Down

0 comments on commit 37fee74

Please sign in to comment.