Skip to content

Commit 052b63c

Browse files
committed
Archive when deploying if the PR is closed/merged
1 parent 704deed commit 052b63c

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

packages/cli-v3/src/commands/deploy.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { updateTriggerPackages } from "./update.js";
3737
import { setGithubActionsOutputAndEnvVars } from "../utilities/githubActions.js";
3838
import { isDirectory } from "../utilities/fileSystem.js";
3939
import { createGitMeta } from "../utilities/gitMeta.js";
40+
import { archivePreviewBranch } from "./preview.js";
4041

4142
const DeployCommandOptions = CommonCommandOptions.extend({
4243
dryRun: z.boolean().default(false),
@@ -219,6 +220,18 @@ async function _deployCommand(dir: string, options: DeployCommandOptions) {
219220
}
220221

221222
if (options.env === "preview" && branch) {
223+
//auto-archive a branch if the PR is merged or closed
224+
if (gitMeta?.pullRequestState === "merged" || gitMeta?.pullRequestState === "closed") {
225+
log.message(`Pull request ${gitMeta?.pullRequestNumber} is ${gitMeta?.pullRequestState}.`);
226+
const $buildSpinner = spinner();
227+
$buildSpinner.start(`Archiving preview branch: "${branch}"`);
228+
const result = await archivePreviewBranch(authorization, branch, resolvedConfig.project);
229+
$buildSpinner.stop(
230+
result ? `Successfully archived "${branch}"` : `Failed to archive "${branch}".`
231+
);
232+
return;
233+
}
234+
222235
logger.debug("Upserting branch", { env: options.env, branch });
223236
const branchEnv = await upsertBranch({
224237
accessToken: authorization.auth.accessToken,

packages/cli-v3/src/commands/preview.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { loadConfig } from "../config.js";
1313
import { createGitMeta } from "../utilities/gitMeta.js";
1414
import { printStandloneInitialBanner } from "../utilities/initialBanner.js";
1515
import { logger } from "../utilities/logger.js";
16-
import { getProjectClient } from "../utilities/session.js";
16+
import { getProjectClient, LoginResultOk } from "../utilities/session.js";
1717
import { spinner } from "../utilities/windows.js";
1818
import { verifyDirectory } from "./deploy.js";
1919
import { login } from "./login.js";
@@ -119,17 +119,28 @@ async function _previewArchiveCommand(dir: string, options: PreviewCommandOption
119119
);
120120
}
121121

122-
const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);
123-
124122
const $buildSpinner = spinner();
125123
$buildSpinner.start(`Archiving "${branch}"`);
124+
const result = await archivePreviewBranch(authorization, branch, resolvedConfig.project);
125+
$buildSpinner.stop(
126+
result ? `Successfully archived "${branch}"` : `Failed to archive "${branch}".`
127+
);
128+
return result;
129+
}
130+
131+
export async function archivePreviewBranch(
132+
authorization: LoginResultOk,
133+
branch: string,
134+
project: string
135+
) {
136+
const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);
126137

127-
const result = await apiClient.archiveBranch(resolvedConfig.project, branch);
138+
const result = await apiClient.archiveBranch(project, branch);
128139

129140
if (result.success) {
130-
$buildSpinner.stop(`Successfully archived "${branch}"`);
141+
return true;
131142
} else {
132-
$buildSpinner.stop(`Failed to archive "${branch}".`);
133143
logger.error(result.error);
144+
return false;
134145
}
135146
}

0 commit comments

Comments
 (0)