|
| 1 | +import { Stainless } from "@stainless-api/sdk"; |
1 | 2 | import { tmpdir } from "node:os"; |
2 | 3 | import type { BuildParams } from "./build.run"; |
3 | 4 | import { runBuild } from "./build.run"; |
@@ -58,10 +59,7 @@ const main = wrapAction("build", async (stainless) => { |
58 | 59 | defaultCommitMessage, |
59 | 60 | guessConfig: params.guessConfig, |
60 | 61 | failRunOn: |
61 | | - getInput("fail_on", { |
62 | | - choices: FailRunOn, |
63 | | - required: false, |
64 | | - }) || "error", |
| 62 | + getInput("fail_on", { choices: FailRunOn, required: false }) || "error", |
65 | 63 | makeComment: getBooleanInput("make_comment", { required: false }) ?? true, |
66 | 64 | multipleCommitMessages: getBooleanInput("multiple_commit_messages", { |
67 | 65 | required: false, |
@@ -89,34 +87,53 @@ const main = wrapAction("build", async (stainless) => { |
89 | 87 | throw new Error("Expected merged PR to have a merge commit SHA."); |
90 | 88 | } |
91 | 89 |
|
92 | | - const mergeParams = { |
93 | | - orgName, |
94 | | - projectName: params.projectName, |
95 | | - oasPath: params.oasPath, |
96 | | - configPath: params.configPath, |
97 | | - defaultCommitMessage, |
98 | | - failRunOn: |
99 | | - getInput("fail_on", { |
100 | | - choices: FailRunOn, |
| 90 | + const mergeBranch = |
| 91 | + getInput("merge_branch", { required: false }) ?? |
| 92 | + `preview/${inferredPR.head_ref}`; |
| 93 | + const branchExists = await stainless.projects.branches |
| 94 | + .retrieve(mergeBranch) |
| 95 | + .then((branch) => !!branch) |
| 96 | + .catch((error) => { |
| 97 | + if (error instanceof Stainless.NotFoundError) { |
| 98 | + return false; |
| 99 | + } |
| 100 | + throw error; |
| 101 | + }); |
| 102 | + if (!branchExists) { |
| 103 | + logger.debug("Merge branch does not exist; not running merge."); |
| 104 | + } else { |
| 105 | + const mergeParams = { |
| 106 | + orgName, |
| 107 | + projectName: params.projectName, |
| 108 | + oasPath: params.oasPath, |
| 109 | + configPath: params.configPath, |
| 110 | + defaultCommitMessage, |
| 111 | + failRunOn: |
| 112 | + getInput("fail_on", { |
| 113 | + choices: FailRunOn, |
| 114 | + required: false, |
| 115 | + }) || "error", |
| 116 | + makeComment: |
| 117 | + getBooleanInput("make_comment", { required: false }) ?? true, |
| 118 | + multipleCommitMessages: getBooleanInput("multiple_commit_messages", { |
101 | 119 | required: false, |
102 | | - }) || "error", |
103 | | - makeComment: getBooleanInput("make_comment", { required: false }) ?? true, |
104 | | - multipleCommitMessages: getBooleanInput("multiple_commit_messages", { |
105 | | - required: false, |
106 | | - }), |
107 | | - baseSha: getInput("base_sha", { required: false }) ?? inferredPR.base_sha, |
108 | | - baseRef: getInput("base_ref", { required: false }) ?? inferredPR.base_ref, |
109 | | - defaultBranch, |
110 | | - headSha, |
111 | | - mergeBranch: |
112 | | - getInput("merge_branch", { required: false }) ?? |
113 | | - `preview/${inferredPR.head_ref}`, |
114 | | - outputDir: getInput("output_dir", { required: false }), |
115 | | - prNumber: inferredPR.number, |
116 | | - } satisfies MergeParams; |
| 120 | + }), |
| 121 | + baseSha: |
| 122 | + getInput("base_sha", { required: false }) ?? inferredPR.base_sha, |
| 123 | + baseRef: |
| 124 | + getInput("base_ref", { required: false }) ?? inferredPR.base_ref, |
| 125 | + defaultBranch, |
| 126 | + headSha, |
| 127 | + mergeBranch: |
| 128 | + getInput("merge_branch", { required: false }) ?? |
| 129 | + `preview/${inferredPR.head_ref}`, |
| 130 | + outputDir: getInput("output_dir", { required: false }), |
| 131 | + prNumber: inferredPR.number, |
| 132 | + } satisfies MergeParams; |
117 | 133 |
|
118 | | - logger.info("Found merged PR; dispatching to `merge`.", mergeParams); |
119 | | - return await runMerge(stainless, mergeParams); |
| 134 | + logger.info("Found merged PR; dispatching to `merge`.", mergeParams); |
| 135 | + return await runMerge(stainless, mergeParams); |
| 136 | + } |
120 | 137 | } |
121 | 138 |
|
122 | 139 | if (ctx().refName === defaultBranch) { |
|
0 commit comments