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.
This commit is contained in:
Devin J. Pohly 2020-12-02 16:12:26 -06:00
parent e74ff71f7d
commit bf76499b98
2 changed files with 11 additions and 8 deletions

4
dist/index.js vendored
View File

@ -2291,8 +2291,8 @@ function upload_to_release(release, file, asset_name, tag, overwrite, octokit) {
const file_size = stat.size; const file_size = stat.size;
const file_bytes = fs.readFileSync(file); const file_bytes = fs.readFileSync(file);
// Check for duplicates. // Check for duplicates.
const assets = yield octokit.repos.listReleaseAssets(Object.assign(Object.assign({}, repo()), { release_id: release.data.id })); const assets = yield octokit.paginate(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 duplicate_asset = assets.find(a => a.name === asset_name);
if (duplicate_asset !== undefined) { if (duplicate_asset !== undefined) {
if (overwrite) { if (overwrite) {
core.debug(`An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`); core.debug(`An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`);

View File

@ -6,7 +6,7 @@ import * as github from '@actions/github'
import * as path from 'path' import * as path from 'path'
import * as glob from 'glob' 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 ReleaseByTagResp = Endpoints['GET /repos/:owner/:repo/releases/tags/:tag']['response']
type CreateReleaseResp = Endpoints['POST /repos/:owner/:repo/releases']['response'] type CreateReleaseResp = Endpoints['POST /repos/:owner/:repo/releases']['response']
type UploadAssetResp = Endpoints['POST /repos/:owner/:repo/releases/:release_id/assets{?name,label}']['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) const file_bytes = fs.readFileSync(file)
// Check for duplicates. // Check for duplicates.
const assets: RepoAssetsResp = await octokit.repos.listReleaseAssets({ const assets: RepoAssetsResp = await octokit.paginate(
octokit.repos.listReleaseAssets,
{
...repo(), ...repo(),
release_id: release.data.id release_id: release.data.id
}) }
const duplicate_asset = assets.data.find(a => a.name === asset_name) )
const duplicate_asset = assets.find(a => a.name === asset_name)
if (duplicate_asset !== undefined) { if (duplicate_asset !== undefined) {
if (overwrite) { if (overwrite) {
core.debug( core.debug(