Fix pagination
diff --git a/.github/workflows/another.yml b/.github/workflows/another.yml
deleted file mode 100644
index e0d2524..0000000
--- a/.github/workflows/another.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: "build-test"
-on: # rebuild any PRs and main branch changes
- pull_request:
- push:
-
-jobs:
- build: # make sure build/ci work properly
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - run: |
- echo Hello
- sleep 60
diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts
index bb16f9d..efa2802 100644
--- a/__tests__/main.test.ts
+++ b/__tests__/main.test.ts
@@ -7,17 +7,16 @@
// shows how the runner will run a javascript action with env / stdout protocol
// test('test runs', () => {
// const ip = path.join(__dirname, '..', 'lib', 'main.js')
-// process.env['INPUT_TOKEN'] = '';
-// process.env['RUN_ID'] = '33782469';
-// process.env['GITHUB_REPOSITORY'] = 'protean-project/quarkus-ci';
-// process.env['GITHUB_REF'] = 'master';
+// process.env['INPUT_TOKEN'] = ''
+// process.env['GITHUB_RUN_ID'] = '33782469'
+// process.env['GITHUB_REPOSITORY'] = 'n1hility/cancel-previous-runs'
+// process.env['GITHUB_REF'] = 'refs/heads/master'
// const options: cp.ExecSyncOptions = {
// env: process.env
// }
// try {
// console.log(cp.execSync(`node ${ip}`, options).toString())
// } catch (error) {
-// console.log("Error stdout = " + error.stdout.toString());
+// console.log('Error stdout = ' + error.stdout.toString())
// }
-
// })
diff --git a/dist/index.js b/dist/index.js
index 397e2b1..88b1aee 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1448,6 +1448,13 @@
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
+var __asyncValues = (this && this.__asyncValues) || function (o) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator], i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
@@ -1459,6 +1466,7 @@
const github = __importStar(__webpack_require__(469));
const core = __importStar(__webpack_require__(393));
function run() {
+ var e_1, _a;
return __awaiter(this, void 0, void 0, function* () {
try {
const token = core.getInput('token');
@@ -1477,30 +1485,43 @@
const listRuns = octokit.actions.listRepoWorkflowRuns.endpoint.merge({
owner,
repo,
- branch,
+ // branch,
event: 'push'
});
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- yield octokit.paginate(listRuns).then((runs) => __awaiter(this, void 0, void 0, function* () {
- let matched = false;
- let workflow = '';
- for (const element of runs) {
- core.info(`${element.id} : ${element.workflow_url} : ${element.status} : ${element.run_number}`);
- if (!matched) {
- if (element.id.toString() === selfRunId) {
- matched = true;
- workflow = element.workflow_url;
+ let matched = false;
+ let workflow = '';
+ let count = 0;
+ try {
+ for (var _b = __asyncValues(octokit.paginate.iterator(listRuns)), _c; _c = yield _b.next(), !_c.done;) {
+ const item = _c.value;
+ // There is some sort of bug where the pagination URLs point to a
+ // different URL with a different data format
+ const elements = ++count < 2 ? item.data : item.data.workflow_runs;
+ for (const element of elements) {
+ core.info(`${element.id} : ${element.workflow_url} : ${element.status} : ${element.run_number}`);
+ if (!matched) {
+ if (element.id.toString() === selfRunId) {
+ matched = true;
+ workflow = element.workflow_url;
+ }
+ // Skip everything up to and matching this run
+ continue;
}
- // Skip everything up to and matching this run
- continue;
- }
- // Only cancel jobs with the same workflow
- if (workflow === element.workflow_url &&
- element.status.toString() !== 'completed') {
- yield cancelRun(octokit, owner, repo, element.id);
+ // Only cancel jobs with the same workflow
+ if (workflow === element.workflow_url &&
+ element.status.toString() !== 'completed') {
+ Promise.resolve(cancelRun(octokit, owner, repo, element.id));
+ }
}
}
- }));
+ }
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
+ finally {
+ try {
+ if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
+ }
+ finally { if (e_1) throw e_1.error; }
+ }
}
catch (error) {
core.setFailed(error.message);
diff --git a/src/main.ts b/src/main.ts
index e79b04a..44db6fe 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -25,15 +25,18 @@
const listRuns = octokit.actions.listRepoWorkflowRuns.endpoint.merge({
owner,
repo,
- branch,
+ // branch,
event: 'push'
})
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- await octokit.paginate(listRuns).then(async (runs: any[]) => {
- let matched = false
- let workflow = ''
- for (const element of runs) {
+ let matched = false
+ let workflow = ''
+ let count = 0
+ for await (const item of octokit.paginate.iterator(listRuns)) {
+ // There is some sort of bug where the pagination URLs point to a
+ // different URL with a different data format
+ const elements = ++count < 2 ? item.data : item.data.workflow_runs
+ for (const element of elements) {
core.info(
`${element.id} : ${element.workflow_url} : ${element.status} : ${element.run_number}`
)
@@ -52,10 +55,10 @@
workflow === element.workflow_url &&
element.status.toString() !== 'completed'
) {
- await cancelRun(octokit, owner, repo, element.id)
+ Promise.resolve(cancelRun(octokit, owner, repo, element.id))
}
}
- })
+ }
} catch (error) {
core.setFailed(error.message)
}