Skip to content

Commit 650b38c

Browse files
authored
fix(build): don't merge if no merge branch (#201)
1 parent e20dd9c commit 650b38c

File tree

2 files changed

+86
-61
lines changed

2 files changed

+86
-61
lines changed

dist/build.js

Lines changed: 39 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/build.ts

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Stainless } from "@stainless-api/sdk";
12
import { tmpdir } from "node:os";
23
import type { BuildParams } from "./build.run";
34
import { runBuild } from "./build.run";
@@ -58,10 +59,7 @@ const main = wrapAction("build", async (stainless) => {
5859
defaultCommitMessage,
5960
guessConfig: params.guessConfig,
6061
failRunOn:
61-
getInput("fail_on", {
62-
choices: FailRunOn,
63-
required: false,
64-
}) || "error",
62+
getInput("fail_on", { choices: FailRunOn, required: false }) || "error",
6563
makeComment: getBooleanInput("make_comment", { required: false }) ?? true,
6664
multipleCommitMessages: getBooleanInput("multiple_commit_messages", {
6765
required: false,
@@ -89,34 +87,53 @@ const main = wrapAction("build", async (stainless) => {
8987
throw new Error("Expected merged PR to have a merge commit SHA.");
9088
}
9189

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", {
101119
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;
117133

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+
}
120137
}
121138

122139
if (ctx().refName === defaultBranch) {

0 commit comments

Comments
 (0)