From 993a0a090df78cee07481d3886dcd8b29deb9567 Mon Sep 17 00:00:00 2001 From: David Register Date: Thu, 7 Apr 2022 13:10:26 -0400 Subject: [PATCH] Added `pullRequestNumber` to the action's outputs (#167) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: set pullRequesstNumber as action output * chore: add changeset * fix: feedback from pr review * Update .changeset/long-mayflies-yell.md Co-authored-by: Mateusz Burzyński Co-authored-by: Mateusz Burzyński --- .changeset/long-mayflies-yell.md | 5 +++++ action.yml | 2 ++ src/index.ts | 5 ++++- src/run.test.ts | 12 ++++++++++++ src/run.ts | 20 +++++++++++++++++--- 5 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 .changeset/long-mayflies-yell.md diff --git a/.changeset/long-mayflies-yell.md b/.changeset/long-mayflies-yell.md new file mode 100644 index 0000000..a78b674 --- /dev/null +++ b/.changeset/long-mayflies-yell.md @@ -0,0 +1,5 @@ +--- +"@changesets/action": minor +--- + +Added `pullRequestNumber` to the action's outputs diff --git a/action.yml b/action.yml index 7dccd70..c9ca1b6 100644 --- a/action.yml +++ b/action.yml @@ -36,6 +36,8 @@ outputs: A JSON array to present the published packages. The format is `[{"name": "@xx/xx", "version": "1.2.0"}, {"name": "@xx/xy", "version": "0.8.9"}]` hasChangesets: description: A boolean about whether there were changesets. Useful if you want to create your own publishing functionality. + pullRequestNumber: + description: The pull request number that was created or updated branding: icon: "package" color: "blue" diff --git a/src/index.ts b/src/index.ts index c1ae29b..087eccc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -97,13 +97,16 @@ const getOptionalInput = (name: string) => core.getInput(name) || undefined; return; } case hasChangesets: - await runVersion({ + const { pullRequestNumber } = await runVersion({ script: getOptionalInput("version"), githubToken, prTitle: getOptionalInput("title"), commitMessage: getOptionalInput("commit"), hasPublishScript, }); + + core.setOutput("pullRequestNumber", String(pullRequestNumber)); + return; } })().catch((err) => { diff --git a/src/run.test.ts b/src/run.test.ts index 3615f8e..f156402 100644 --- a/src/run.test.ts +++ b/src/run.test.ts @@ -57,6 +57,10 @@ describe("version", () => { () => ({ data: { items: [] } }) ); + mockedGithubMethods.pulls.create.mockImplementationOnce( + () => ({ data: { number: 123 } }) + ); + await writeChangesets( [ { @@ -92,6 +96,10 @@ describe("version", () => { () => ({ data: { items: [] } }) ); + mockedGithubMethods.pulls.create.mockImplementationOnce( + () => ({ data: { number: 123 } }) + ); + await writeChangesets( [ { @@ -123,6 +131,10 @@ describe("version", () => { () => ({ data: { items: [] } }) ); + mockedGithubMethods.pulls.create.mockImplementationOnce( + () => ({ data: { number: 123 } }) + ); + await writeChangesets( [ { diff --git a/src/run.ts b/src/run.ts index ccd8328..09b140e 100644 --- a/src/run.ts +++ b/src/run.ts @@ -177,6 +177,10 @@ type VersionOptions = { hasPublishScript?: boolean; }; +type RunVersionResult = { + pullRequestNumber: number; +}; + export async function runVersion({ script, githubToken, @@ -184,7 +188,7 @@ export async function runVersion({ prTitle = "Version Packages", commitMessage = "Version Packages", hasPublishScript = false, -}: VersionOptions) { +}: VersionOptions): Promise { let repo = `${github.context.repo.owner}/${github.context.repo.repo}`; let branch = github.context.ref.replace("refs/heads/", ""); let versionBranch = `changeset-release/${branch}`; @@ -280,20 +284,30 @@ ${ console.log(JSON.stringify(searchResult.data, null, 2)); if (searchResult.data.items.length === 0) { console.log("creating pull request"); - await octokit.pulls.create({ + const { + data: { number }, + } = await octokit.pulls.create({ base: branch, head: versionBranch, title: finalPrTitle, body: await prBodyPromise, ...github.context.repo, }); + + return { + pullRequestNumber: number, + }; } else { - octokit.pulls.update({ + await octokit.pulls.update({ pull_number: searchResult.data.items[0].number, title: finalPrTitle, body: await prBodyPromise, ...github.context.repo, }); console.log("pull request found"); + + return { + pullRequestNumber: searchResult.data.items[0].number, + }; } }