From fbd30418aa61817e9ed9c902ed264b1928e8a0c9 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Fri, 3 Jul 2020 09:27:14 +0200 Subject: [PATCH] Allow for setting explicit release_name (fixes #14) --- .github/workflows/ci.yml | 1 + README.md | 1 + action.yml | 6 ++++-- dist/index.js | 7 ++++--- src/main.ts | 11 ++++++++++- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62c8c75..c934fb0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,7 @@ jobs: ...context.repo, tag: "ci-test-${{ matrix.os }}", }) + assert.deepStrictEqual(release.data.name, "ci-test-${{ matrix.os }}") assert.deepStrictEqual(release.data.prerelease, true) assert.deepStrictEqual(release.data.body, "rofl lol test") const actual = child_process.execSync(`curl -Ls ${release.data.assets[0].browser_download_url}`) diff --git a/README.md b/README.md index 0dd16b8..342fc42 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Optional Arguments - `file_glob`: If set to true, the file argument can be a glob pattern (`asset_name` is ignored in this case) (Default: `false`) - `overwrite`: If an asset with the same name already exists, overwrite it (Default: `false`). - `prerelease`: Mark the release as a pre-release (Default: `false`). +- `release_name`: Explicitly set a release name. (Defaults: same as `tag`). - `body`: Content of the release text (Defaut: `""`). ## Output variables diff --git a/action.yml b/action.yml index 1a50147..2383812 100644 --- a/action.yml +++ b/action.yml @@ -21,9 +21,11 @@ inputs: file_glob: description: 'If true the file can be a glob pattern, asset_name is ignored if this is true.' prerelease: - description: 'Mark the release as a pre-release.' + description: 'Mark the release as a pre-release. Defaults to "false".' + release_name: + description: 'Explicitly set a release name. Defaults to empty which will cause the release to take the tag as name on GitHub.' body: - description: 'Content of the release text.' + description: 'Content of the release text. Empty by default.' outputs: browser_download_url: description: 'The publicly available URL of the asset.' diff --git a/dist/index.js b/dist/index.js index 1e03236..0980dd4 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2201,7 +2201,7 @@ const core = __importStar(__webpack_require__(470)); const github = __importStar(__webpack_require__(469)); const path = __importStar(__webpack_require__(622)); const glob = __importStar(__webpack_require__(402)); -function get_release_by_tag(tag, prerelease, body, octokit) { +function get_release_by_tag(tag, prerelease, release_name, body, octokit) { return __awaiter(this, void 0, void 0, function* () { try { core.debug(`Getting release by tag ${tag}.`); @@ -2211,7 +2211,7 @@ function get_release_by_tag(tag, prerelease, body, octokit) { // If this returns 404, we need to create the release first. if (error.status === 404) { core.debug(`Release for tag ${tag} doesn't exist yet so we'll create it now.`); - return yield octokit.repos.createRelease(Object.assign(Object.assign({}, github.context.repo), { tag_name: tag, prerelease: prerelease, body: body })); + return yield octokit.repos.createRelease(Object.assign(Object.assign({}, github.context.repo), { tag_name: tag, prerelease: prerelease, release_name: release_name, body: body })); } else { throw error; @@ -2267,9 +2267,10 @@ function run() { const file_glob = core.getInput('file_glob') == 'true' ? true : false; const overwrite = core.getInput('overwrite') == 'true' ? true : false; const prerelease = core.getInput('prerelease') == 'true' ? true : false; + const release_name = core.getInput('release_name'); const body = core.getInput('body'); const octokit = github.getOctokit(token); - const release = yield get_release_by_tag(tag, prerelease, body, octokit); + const release = yield get_release_by_tag(tag, prerelease, release_name, body, octokit); if (file_glob) { const files = glob.sync(file); if (files.length > 0) { diff --git a/src/main.ts b/src/main.ts index 41d2177..0ec155e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,6 +14,7 @@ type UploadAssetResp = Endpoints['POST /repos/:owner/:repo/releases/:release_id/ async function get_release_by_tag( tag: string, prerelease: boolean, + release_name: string, body: string, octokit: Octokit ): Promise { @@ -33,6 +34,7 @@ async function get_release_by_tag( ...github.context.repo, tag_name: tag, prerelease: prerelease, + release_name: release_name, body: body }) } else { @@ -107,10 +109,17 @@ async function run(): Promise { const file_glob = core.getInput('file_glob') == 'true' ? true : false const overwrite = core.getInput('overwrite') == 'true' ? true : false const prerelease = core.getInput('prerelease') == 'true' ? true : false + const release_name = core.getInput('release_name') const body = core.getInput('body') const octokit: Octokit = github.getOctokit(token) - const release = await get_release_by_tag(tag, prerelease, body, octokit) + const release = await get_release_by_tag( + tag, + prerelease, + release_name, + body, + octokit + ) if (file_glob) { const files = glob.sync(file)