mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 13:22:35 -07:00
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2026 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
const fs = require('node:fs');
|
|
|
|
module.exports = async ({ github, context, core }) => {
|
|
core.info('Fetching open issues to check for conflicting labels...');
|
|
|
|
const issues = await github.paginate(github.rest.issues.listForRepo, {
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
state: 'open',
|
|
per_page: 100,
|
|
});
|
|
|
|
const conflictingLabelIssues = [];
|
|
|
|
for (const issue of issues) {
|
|
if (issue.pull_request) continue;
|
|
|
|
const areaLabels = issue.labels
|
|
.filter((l) => l.name && l.name.startsWith('area/'))
|
|
.map((l) => l.name);
|
|
|
|
const priorityLabels = issue.labels
|
|
.filter((l) => l.name && l.name.startsWith('priority/'))
|
|
.map((l) => l.name);
|
|
|
|
if (areaLabels.length > 1 || priorityLabels.length > 1) {
|
|
let message = `Issue #${issue.number} has conflicting labels:`;
|
|
if (areaLabels.length > 1)
|
|
message += ` multiple areas (${areaLabels.join(', ')}).`;
|
|
if (priorityLabels.length > 1)
|
|
message += ` multiple priorities (${priorityLabels.join(', ')}).`;
|
|
|
|
core.info(message);
|
|
|
|
conflictingLabelIssues.push({
|
|
number: issue.number,
|
|
title: issue.title,
|
|
body: issue.body || '',
|
|
});
|
|
}
|
|
}
|
|
|
|
// Limit to 50 to avoid overwhelming the AI in a single run
|
|
const issuesToProcess = conflictingLabelIssues.slice(0, 50);
|
|
|
|
fs.writeFileSync(
|
|
'conflicting_labels_issues.json',
|
|
JSON.stringify(issuesToProcess, null, 2),
|
|
);
|
|
|
|
core.info(
|
|
`Found ${conflictingLabelIssues.length} issues with conflicting labels. Wrote ${issuesToProcess.length} to conflicting_labels_issues.json`,
|
|
);
|
|
};
|