diff --git a/package-lock.json b/package-lock.json index 65c6d931..7335de5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "node12-template-action", - "version": "0.0.0", + "name": "stale-action", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a295850d..278fb905 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "node12-template-action", - "version": "0.0.0", + "name": "stale-action", + "version": "1.0.0", "private": true, - "description": "Node 12 template action", + "description": "Marks old issues and PRs as stale", "main": "lib/main.js", "scripts": { "build": "tsc", @@ -12,12 +12,12 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/actions/start-vm-action.git" + "url": "git+https://github.com/actions/stale.git" }, "keywords": [ "actions", "node", - "setup" + "stale" ], "author": "GitHub", "license": "MIT", diff --git a/src/main.ts b/src/main.ts index 3a5dfc4e..c6154e30 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,6 +2,9 @@ import * as core from '@actions/core'; import * as github from '@actions/github'; import * as Octokit from '@octokit/rest'; +type Issue = Octokit.IssuesListForRepoResponseItem; +type IssueLabel = Octokit.IssuesListForRepoResponseItemLabelsItem; + type Args = { repoToken: string; staleIssueMessage: string; @@ -51,7 +54,7 @@ async function processIssues( let staleMessage = isPr ? args.stalePrMessage : args.staleIssueMessage; if (!staleMessage) { - core.debug(`skipping ${isPr ? "pr" : "issue"} due to empty message`); + core.debug(`skipping ${isPr ? 'pr' : 'issue'} due to empty message`); continue; } @@ -82,19 +85,13 @@ async function processIssues( return await processIssues(client, args, operationsLeft, page + 1); } -function isLabeledStale( - issue: Octokit.IssuesListForRepoResponseItem, - label: string -): boolean { - const labelComparer = l => - label.localeCompare(l.name, undefined, {sensitivity: 'accent'}); +function isLabeledStale(issue: Issue, label: string): boolean { + const labelComparer: (l: IssueLabel) => boolean = l => + label.localeCompare(l.name, undefined, {sensitivity: 'accent'}) === 0; return issue.labels.filter(labelComparer).length > 0; } -function wasLastUpdatedBefore( - issue: Octokit.IssuesListForRepoResponseItem, - num_days: number -): boolean { +function wasLastUpdatedBefore(issue: Issue, num_days: number): boolean { const daysInMillis = 1000 * 60 * 60 * num_days; const millisSinceLastUpdated = new Date().getTime() - new Date(issue.updated_at).getTime(); @@ -103,7 +100,7 @@ function wasLastUpdatedBefore( async function markStale( client: github.GitHub, - issue: Octokit.IssuesListForRepoResponseItem, + issue: Issue, staleMessage: string, staleLabel: string ): Promise { @@ -128,7 +125,7 @@ async function markStale( async function closeIssue( client: github.GitHub, - issue: Octokit.IssuesListForRepoResponseItem + issue: Issue ): Promise { core.debug(`closing issue ${issue.title} for being stale`);