Add linting
This commit is contained in:
parent
71bcc1ac0d
commit
4449c02d54
|
@ -0,0 +1,3 @@
|
||||||
|
dist/
|
||||||
|
lib/
|
||||||
|
node_modules/
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
"plugins": ["jest", "@typescript-eslint"],
|
||||||
|
"extends": ["plugin:github/es6"],
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 9,
|
||||||
|
"sourceType": "module",
|
||||||
|
"project": "./tsconfig.json"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"eslint-comments/no-use": "off",
|
||||||
|
"import/no-namespace": "off",
|
||||||
|
"no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "error",
|
||||||
|
"@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
|
||||||
|
"@typescript-eslint/no-require-imports": "error",
|
||||||
|
"@typescript-eslint/array-type": "error",
|
||||||
|
"@typescript-eslint/await-thenable": "error",
|
||||||
|
"@typescript-eslint/ban-ts-ignore": "error",
|
||||||
|
"camelcase": "off",
|
||||||
|
"@typescript-eslint/class-name-casing": "error",
|
||||||
|
"@typescript-eslint/func-call-spacing": ["error", "never"],
|
||||||
|
"@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
|
||||||
|
"@typescript-eslint/no-array-constructor": "error",
|
||||||
|
"@typescript-eslint/no-empty-interface": "error",
|
||||||
|
"@typescript-eslint/no-explicit-any": "error",
|
||||||
|
"@typescript-eslint/no-extraneous-class": "error",
|
||||||
|
"@typescript-eslint/no-for-in-array": "error",
|
||||||
|
"@typescript-eslint/no-inferrable-types": "error",
|
||||||
|
"@typescript-eslint/no-misused-new": "error",
|
||||||
|
"@typescript-eslint/no-namespace": "error",
|
||||||
|
"@typescript-eslint/no-non-null-assertion": "warn",
|
||||||
|
"@typescript-eslint/no-object-literal-type-assertion": "error",
|
||||||
|
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
||||||
|
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
||||||
|
"@typescript-eslint/no-useless-constructor": "error",
|
||||||
|
"@typescript-eslint/no-var-requires": "error",
|
||||||
|
"@typescript-eslint/prefer-for-of": "warn",
|
||||||
|
"@typescript-eslint/prefer-function-type": "warn",
|
||||||
|
"@typescript-eslint/prefer-includes": "error",
|
||||||
|
"@typescript-eslint/prefer-interface": "error",
|
||||||
|
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
||||||
|
"@typescript-eslint/promise-function-async": "error",
|
||||||
|
"@typescript-eslint/require-array-sort-compare": "error",
|
||||||
|
"@typescript-eslint/restrict-plus-operands": "error",
|
||||||
|
"semi": "off",
|
||||||
|
"@typescript-eslint/type-annotation-spacing": "error",
|
||||||
|
"@typescript-eslint/unbound-method": "error"
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"node": true,
|
||||||
|
"es6": true,
|
||||||
|
"jest/globals": true
|
||||||
|
}
|
||||||
|
}
|
31
src/main.ts
31
src/main.ts
|
@ -1,11 +1,11 @@
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as github from '@actions/github';
|
import * as github from '@actions/github';
|
||||||
import { Octokit } from '@octokit/rest';
|
import {Octokit} from '@octokit/rest';
|
||||||
|
|
||||||
type Issue = Octokit.IssuesListForRepoResponseItem
|
type Issue = Octokit.IssuesListForRepoResponseItem;
|
||||||
type IssueLabel = Octokit.IssuesListForRepoResponseItemLabelsItem
|
type IssueLabel = Octokit.IssuesListForRepoResponseItemLabelsItem;
|
||||||
|
|
||||||
type Args = {
|
interface Args {
|
||||||
repoToken: string;
|
repoToken: string;
|
||||||
staleIssueMessage: string;
|
staleIssueMessage: string;
|
||||||
stalePrMessage: string;
|
stalePrMessage: string;
|
||||||
|
@ -17,9 +17,9 @@ type Args = {
|
||||||
exemptPrLabel: string;
|
exemptPrLabel: string;
|
||||||
onlyLabels: string;
|
onlyLabels: string;
|
||||||
operationsPerRun: number;
|
operationsPerRun: number;
|
||||||
};
|
}
|
||||||
|
|
||||||
async function run() {
|
async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const args = getAndValidateArgs();
|
const args = getAndValidateArgs();
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ async function processIssues(
|
||||||
state: 'open',
|
state: 'open',
|
||||||
labels: args.onlyLabels,
|
labels: args.onlyLabels,
|
||||||
per_page: 100,
|
per_page: 100,
|
||||||
page: page
|
page
|
||||||
});
|
});
|
||||||
|
|
||||||
operationsLeft -= 1;
|
operationsLeft -= 1;
|
||||||
|
@ -52,23 +52,26 @@ async function processIssues(
|
||||||
return operationsLeft;
|
return operationsLeft;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var issue of issues.data.values()) {
|
for (const issue of issues.data.values()) {
|
||||||
core.debug(`found issue: ${issue.title} last updated ${issue.updated_at}`);
|
core.debug(`found issue: ${issue.title} last updated ${issue.updated_at}`);
|
||||||
let isPr = !!issue.pull_request;
|
const isPr = !!issue.pull_request;
|
||||||
|
|
||||||
let staleMessage = isPr ? args.stalePrMessage : args.staleIssueMessage;
|
const staleMessage = isPr ? args.stalePrMessage : args.staleIssueMessage;
|
||||||
if (!staleMessage) {
|
if (!staleMessage) {
|
||||||
core.debug(`skipping ${isPr ? 'pr' : 'issue'} due to empty message`);
|
core.debug(`skipping ${isPr ? 'pr' : 'issue'} due to empty message`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
let staleLabel = isPr ? args.stalePrLabel : args.staleIssueLabel;
|
const staleLabel = isPr ? args.stalePrLabel : args.staleIssueLabel;
|
||||||
let exemptLabel = isPr ? args.exemptPrLabel : args.exemptIssueLabel;
|
const exemptLabel = isPr ? args.exemptPrLabel : args.exemptIssueLabel;
|
||||||
|
|
||||||
if (exemptLabel && isLabeled(issue, exemptLabel)) {
|
if (exemptLabel && isLabeled(issue, exemptLabel)) {
|
||||||
continue;
|
continue;
|
||||||
} else if (isLabeled(issue, staleLabel)) {
|
} else if (isLabeled(issue, staleLabel)) {
|
||||||
if (args.daysBeforeClose >= 0 && wasLastUpdatedBefore(issue, args.daysBeforeClose)) {
|
if (
|
||||||
|
args.daysBeforeClose >= 0 &&
|
||||||
|
wasLastUpdatedBefore(issue, args.daysBeforeClose)
|
||||||
|
) {
|
||||||
operationsLeft -= await closeIssue(client, issue);
|
operationsLeft -= await closeIssue(client, issue);
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
|
@ -167,7 +170,7 @@ function getAndValidateArgs(): Args {
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
for (var numberInput of [
|
for (const numberInput of [
|
||||||
'days-before-stale',
|
'days-before-stale',
|
||||||
'days-before-close',
|
'days-before-close',
|
||||||
'operations-per-run'
|
'operations-per-run'
|
||||||
|
|
Loading…
Reference in New Issue