mirror of
https://github.com/actions/stale.git
synced 2026-02-07 14:48:17 +00:00
Add only-issue-types option to filter issues by type (#1255)
* Add `only-issue-types` Option to Filter Issues by Type * white-space fix in readme table Co-authored-by: andig <cpuidle@gmail.com> --------- Co-authored-by: andig <cpuidle@gmail.com>
This commit is contained in:
@@ -24,6 +24,7 @@ export class Issue implements IIssue {
|
||||
markedStaleThisRun: boolean;
|
||||
operations = new Operations();
|
||||
private readonly _options: IIssuesProcessorOptions;
|
||||
readonly issue_type?: string;
|
||||
|
||||
constructor(
|
||||
options: Readonly<IIssuesProcessorOptions>,
|
||||
@@ -43,6 +44,15 @@ export class Issue implements IIssue {
|
||||
this.assignees = issue.assignees || [];
|
||||
this.isStale = isLabeled(this, this.staleLabel);
|
||||
this.markedStaleThisRun = false;
|
||||
|
||||
if (
|
||||
typeof (issue as any).type === 'object' &&
|
||||
(issue as any).type !== null
|
||||
) {
|
||||
this.issue_type = (issue as any).type.name;
|
||||
} else {
|
||||
this.issue_type = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
get isPullRequest(): boolean {
|
||||
|
||||
@@ -252,6 +252,23 @@ export class IssuesProcessor {
|
||||
return; // If the issue has an 'include-only-assigned' option set, process only issues with nonempty assignees list
|
||||
}
|
||||
|
||||
if (this.options.onlyIssueTypes) {
|
||||
const allowedTypes = this.options.onlyIssueTypes
|
||||
.split(',')
|
||||
.map(t => t.trim().toLowerCase())
|
||||
.filter(Boolean);
|
||||
const issueType = (issue.issue_type || '').toLowerCase();
|
||||
if (!allowedTypes.includes(issueType)) {
|
||||
issueLogger.info(
|
||||
`Skipping this $$type because its type ('${
|
||||
issue.issue_type
|
||||
}') is not in onlyIssueTypes (${allowedTypes.join(', ')})`
|
||||
);
|
||||
IssuesProcessor._endIssueProcessing(issue);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const onlyLabels: string[] = wordsToList(this._getOnlyLabels(issue));
|
||||
|
||||
if (onlyLabels.length > 0) {
|
||||
|
||||
@@ -49,5 +49,6 @@ export enum Option {
|
||||
IgnoreIssueUpdates = 'ignore-issue-updates',
|
||||
IgnorePrUpdates = 'ignore-pr-updates',
|
||||
ExemptDraftPr = 'exempt-draft-pr',
|
||||
CloseIssueReason = 'close-issue-reason'
|
||||
CloseIssueReason = 'close-issue-reason',
|
||||
OnlyIssueTypes = 'only-issue-types'
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ export interface IIssue {
|
||||
locked: boolean;
|
||||
milestone?: IMilestone | null;
|
||||
assignees?: Assignee[] | null;
|
||||
issue_type?: string;
|
||||
}
|
||||
|
||||
export type OctokitIssue = components['schemas']['issue'];
|
||||
|
||||
@@ -55,4 +55,5 @@ export interface IIssuesProcessorOptions {
|
||||
exemptDraftPr: boolean;
|
||||
closeIssueReason: string;
|
||||
includeOnlyAssigned: boolean;
|
||||
onlyIssueTypes?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user