2019-08-03 21:34:59 -04:00
|
|
|
import * as core from '@actions/core';
|
2020-04-16 13:57:59 -04:00
|
|
|
import {IssueProcessor, IssueProcessorOptions} from './IssueProcessor';
|
2019-08-03 21:34:59 -04:00
|
|
|
|
2020-04-14 13:28:00 -04:00
|
|
|
async function run(): Promise<void> {
|
2019-08-03 21:34:59 -04:00
|
|
|
try {
|
|
|
|
|
const args = getAndValidateArgs();
|
|
|
|
|
|
2020-04-16 13:57:59 -04:00
|
|
|
const processor: IssueProcessor = new IssueProcessor(args);
|
|
|
|
|
await processor.processIssues();
|
2019-08-06 16:25:08 -04:00
|
|
|
} catch (error) {
|
|
|
|
|
core.error(error);
|
|
|
|
|
core.setFailed(error.message);
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-08-03 21:34:59 -04:00
|
|
|
|
2020-04-16 13:57:59 -04:00
|
|
|
function getAndValidateArgs(): IssueProcessorOptions {
|
2019-08-03 21:34:59 -04:00
|
|
|
const args = {
|
2021-01-15 21:07:08 +09:00
|
|
|
repoToken: core.getInput('repo-token'),
|
2019-08-06 16:25:08 -04:00
|
|
|
staleIssueMessage: core.getInput('stale-issue-message'),
|
2019-08-06 18:26:47 -04:00
|
|
|
stalePrMessage: core.getInput('stale-pr-message'),
|
2020-07-13 18:05:59 +01:00
|
|
|
closeIssueMessage: core.getInput('close-issue-message'),
|
|
|
|
|
closePrMessage: core.getInput('close-pr-message'),
|
2019-08-06 16:25:08 -04:00
|
|
|
daysBeforeStale: parseInt(
|
|
|
|
|
core.getInput('days-before-stale', {required: true})
|
|
|
|
|
),
|
|
|
|
|
daysBeforeClose: parseInt(
|
|
|
|
|
core.getInput('days-before-close', {required: true})
|
|
|
|
|
),
|
|
|
|
|
staleIssueLabel: core.getInput('stale-issue-label', {required: true}),
|
2020-09-08 21:32:42 +02:00
|
|
|
closeIssueLabel: core.getInput('close-issue-label'),
|
2020-04-15 21:33:09 -04:00
|
|
|
exemptIssueLabels: core.getInput('exempt-issue-labels'),
|
2019-08-06 16:25:08 -04:00
|
|
|
stalePrLabel: core.getInput('stale-pr-label', {required: true}),
|
2020-09-08 21:32:42 +02:00
|
|
|
closePrLabel: core.getInput('close-pr-label'),
|
2020-04-15 21:33:09 -04:00
|
|
|
exemptPrLabels: core.getInput('exempt-pr-labels'),
|
2019-09-27 22:33:20 +09:00
|
|
|
onlyLabels: core.getInput('only-labels'),
|
2019-08-06 16:25:08 -04:00
|
|
|
operationsPerRun: parseInt(
|
|
|
|
|
core.getInput('operations-per-run', {required: true})
|
2020-04-16 13:57:59 -04:00
|
|
|
),
|
2020-05-11 10:46:03 -04:00
|
|
|
removeStaleWhenUpdated: !(
|
|
|
|
|
core.getInput('remove-stale-when-updated') === 'false'
|
|
|
|
|
),
|
2020-06-23 10:55:24 -07:00
|
|
|
debugOnly: core.getInput('debug-only') === 'true',
|
2020-07-24 17:38:48 +05:30
|
|
|
ascending: core.getInput('ascending') === 'true',
|
|
|
|
|
skipStalePrMessage: core.getInput('skip-stale-pr-message') === 'true',
|
2021-01-15 11:49:38 +00:00
|
|
|
skipStaleIssueMessage: core.getInput('skip-stale-issue-message') === 'true',
|
|
|
|
|
deleteBranch: core.getInput('delete-branch') === 'true'
|
2019-08-03 21:34:59 -04:00
|
|
|
};
|
|
|
|
|
|
2020-04-14 13:28:00 -04:00
|
|
|
for (const numberInput of [
|
2019-08-06 16:25:08 -04:00
|
|
|
'days-before-stale',
|
|
|
|
|
'days-before-close',
|
|
|
|
|
'operations-per-run'
|
|
|
|
|
]) {
|
|
|
|
|
if (isNaN(parseInt(core.getInput(numberInput)))) {
|
2019-08-03 21:34:59 -04:00
|
|
|
throw Error(`input ${numberInput} did not parse to a valid integer`);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return args;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
run();
|