From bf76499b98f7f4408105ba24cc7adcd04b36efc8 Mon Sep 17 00:00:00 2001 From: "Devin J. Pohly" Date: Wed, 2 Dec 2020 16:12:26 -0600 Subject: [PATCH] Use octokit.paginate to get all release assets Fixes #35, in which assets not on the first page would not be detected and deleted when trying to overwrite, resulting in an "already_exists" error. --- dist/index.js | 4 ++-- src/main.ts | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/dist/index.js b/dist/index.js index f07924b..b18ab06 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2291,8 +2291,8 @@ function upload_to_release(release, file, asset_name, tag, overwrite, octokit) { const file_size = stat.size; const file_bytes = fs.readFileSync(file); // Check for duplicates. - const assets = yield octokit.repos.listReleaseAssets(Object.assign(Object.assign({}, repo()), { release_id: release.data.id })); - const duplicate_asset = assets.data.find(a => a.name === asset_name); + const assets = yield octokit.paginate(octokit.repos.listReleaseAssets, Object.assign(Object.assign({}, repo()), { release_id: release.data.id })); + const duplicate_asset = assets.find(a => a.name === asset_name); if (duplicate_asset !== undefined) { if (overwrite) { core.debug(`An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`); diff --git a/src/main.ts b/src/main.ts index a0f5398..a1a64c0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,7 @@ import * as github from '@actions/github' import * as path from 'path' import * as glob from 'glob' -type RepoAssetsResp = Endpoints['GET /repos/:owner/:repo/releases/:release_id/assets']['response'] +type RepoAssetsResp = Endpoints['GET /repos/:owner/:repo/releases/:release_id/assets']['response']['data'] type ReleaseByTagResp = Endpoints['GET /repos/:owner/:repo/releases/tags/:tag']['response'] type CreateReleaseResp = Endpoints['POST /repos/:owner/:repo/releases']['response'] type UploadAssetResp = Endpoints['POST /repos/:owner/:repo/releases/:release_id/assets{?name,label}']['response'] @@ -60,11 +60,14 @@ async function upload_to_release( const file_bytes = fs.readFileSync(file) // Check for duplicates. - const assets: RepoAssetsResp = await octokit.repos.listReleaseAssets({ - ...repo(), - release_id: release.data.id - }) - const duplicate_asset = assets.data.find(a => a.name === asset_name) + const assets: RepoAssetsResp = await octokit.paginate( + octokit.repos.listReleaseAssets, + { + ...repo(), + release_id: release.data.id + } + ) + const duplicate_asset = assets.find(a => a.name === asset_name) if (duplicate_asset !== undefined) { if (overwrite) { core.debug(