From af306bddfef223979bfb9a76057c736d6a597718 Mon Sep 17 00:00:00 2001 From: Gabor Greif Date: Tue, 31 Jan 2023 20:23:19 +0100 Subject: [PATCH 1/2] Revert "use the `@file` mechanism of octokit-5" This reverts commit e5e4b800aabcb562ca092a1b15c124970d112992. --- dist/index.js | 13 ++++++++++++- src/main.ts | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 358c3f54..07bb82cc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -39,6 +39,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); +const fs = __importStar(__nccwpck_require__(7147)); const core = __importStar(__nccwpck_require__(2186)); const github = __importStar(__nccwpck_require__(5438)); const path = __importStar(__nccwpck_require__(1017)); @@ -68,6 +69,13 @@ function get_release_by_tag(tag, prerelease, release_name, body, octokit) { } function upload_to_release(release, file, asset_name, tag, overwrite, octokit) { return __awaiter(this, void 0, void 0, function* () { + const stat = fs.statSync(file); + if (!stat.isFile()) { + core.debug(`Skipping ${file}, since its not a file`); + return; + } + const file_size = stat.size; + const file_bytes = fs.readFileSync(file).toString('binary'); // Check for duplicates. const assets = yield octokit.paginate(repoAssets, Object.assign(Object.assign({}, repo()), { release_id: release.data.id })); const duplicate_asset = assets.find(a => a.name === asset_name); @@ -85,7 +93,10 @@ function upload_to_release(release, file, asset_name, tag, overwrite, octokit) { core.debug(`No pre-existing asset called ${asset_name} found in release ${tag}. All good.`); } core.debug(`Uploading ${file} to ${asset_name} in release ${tag}.`); - const uploaded_asset = yield octokit.request(uploadAssets, Object.assign(Object.assign({}, repo()), { release_id: release.data.id, name: asset_name, data: '@' + file })); + const uploaded_asset = yield octokit.request(uploadAssets, Object.assign(Object.assign({}, repo()), { release_id: release.data.id, url: release.data.upload_url, name: asset_name, data: file_bytes, headers: { + 'content-type': 'binary/octet-stream', + 'content-length': file_size + } })); return uploaded_asset.data.browser_download_url; }); } diff --git a/src/main.ts b/src/main.ts index 9900aaff..e93d9d34 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,3 +1,4 @@ +import * as fs from 'fs' import {Octokit} from '@octokit/core' import {Endpoints} from '@octokit/types' import * as core from '@actions/core' @@ -59,6 +60,14 @@ async function upload_to_release( overwrite: boolean, octokit: ReturnType<(typeof github)['getOctokit']> ): Promise { + const stat = fs.statSync(file) + if (!stat.isFile()) { + core.debug(`Skipping ${file}, since its not a file`) + return + } + const file_size = stat.size + const file_bytes = fs.readFileSync(file).toString('binary') + // Check for duplicates. const assets: RepoAssetsResp = await octokit.paginate(repoAssets, { ...repo(), @@ -88,8 +97,13 @@ async function upload_to_release( const uploaded_asset: UploadAssetResp = await octokit.request(uploadAssets, { ...repo(), release_id: release.data.id, + url: release.data.upload_url, name: asset_name, - data: '@' + file + data: file_bytes, + headers: { + 'content-type': 'binary/octet-stream', + 'content-length': file_size + } }) return uploaded_asset.data.browser_download_url } From f2899b4677f8400fd72fa149d6e950f89864c6bf Mon Sep 17 00:00:00 2001 From: Gabor Greif Date: Tue, 31 Jan 2023 20:27:15 +0100 Subject: [PATCH 2/2] use `createReadStream` --- dist/index.js | 6 ++++-- src/main.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dist/index.js b/dist/index.js index 07bb82cc..de75da91 100644 --- a/dist/index.js +++ b/dist/index.js @@ -75,7 +75,7 @@ function upload_to_release(release, file, asset_name, tag, overwrite, octokit) { return; } const file_size = stat.size; - const file_bytes = fs.readFileSync(file).toString('binary'); + const file_bytes = fs.createReadStream(file); // Check for duplicates. const assets = yield octokit.paginate(repoAssets, Object.assign(Object.assign({}, repo()), { release_id: release.data.id })); const duplicate_asset = assets.find(a => a.name === asset_name); @@ -9572,7 +9572,9 @@ function fetch(url, opts) { return; } - destroyStream(response.body, err); + if (response && response.body) { + destroyStream(response.body, err); + } }); /* c8 ignore next 18 */ diff --git a/src/main.ts b/src/main.ts index e93d9d34..23ff2689 100644 --- a/src/main.ts +++ b/src/main.ts @@ -66,7 +66,7 @@ async function upload_to_release( return } const file_size = stat.size - const file_bytes = fs.readFileSync(file).toString('binary') + const file_bytes: any = fs.createReadStream(file) // Check for duplicates. const assets: RepoAssetsResp = await octokit.paginate(repoAssets, {