alpic 0.0.0-dev.ff063bb → 0.0.0-dev.ff4302e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/bin/run.js +5 -0
- package/dist/__tests__/auth.e2e.test.d.ts +1 -0
- package/dist/__tests__/auth.e2e.test.js +157 -0
- package/dist/__tests__/auth.e2e.test.js.map +1 -0
- package/dist/__tests__/deploy-flags.e2e.test.d.ts +1 -0
- package/dist/__tests__/deploy-flags.e2e.test.js +188 -0
- package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -0
- package/dist/__tests__/deploy.e2e.test.d.ts +1 -0
- package/dist/__tests__/deploy.e2e.test.js +180 -0
- package/dist/__tests__/deploy.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-inspect.e2e.test.js +114 -0
- package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-list.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-list.e2e.test.js +116 -0
- package/dist/__tests__/deployment-list.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-logs.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-logs.e2e.test.js +255 -0
- package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +259 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +139 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +150 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +342 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.js +20 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.js.map +1 -0
- package/dist/__tests__/fixtures/demo-project/index.d.ts +1 -0
- package/dist/__tests__/fixtures/demo-project/index.js +4 -0
- package/dist/__tests__/fixtures/demo-project/index.js.map +1 -0
- package/dist/__tests__/git-flags.e2e.test.d.ts +1 -0
- package/dist/__tests__/git-flags.e2e.test.js +124 -0
- package/dist/__tests__/git-flags.e2e.test.js.map +1 -0
- package/dist/__tests__/git.e2e.test.d.ts +1 -0
- package/dist/__tests__/git.e2e.test.js +221 -0
- package/dist/__tests__/git.e2e.test.js.map +1 -0
- package/dist/__tests__/link.e2e.test.d.ts +1 -0
- package/dist/__tests__/link.e2e.test.js +279 -0
- package/dist/__tests__/link.e2e.test.js.map +1 -0
- package/dist/__tests__/logs.e2e.test.d.ts +1 -0
- package/dist/__tests__/logs.e2e.test.js +227 -0
- package/dist/__tests__/logs.e2e.test.js.map +1 -0
- package/dist/__tests__/mock-server.d.ts +42 -0
- package/dist/__tests__/mock-server.js +739 -0
- package/dist/__tests__/mock-server.js.map +1 -0
- package/dist/__tests__/publish.e2e.test.d.ts +1 -0
- package/dist/__tests__/publish.e2e.test.js +505 -0
- package/dist/__tests__/publish.e2e.test.js.map +1 -0
- package/dist/__tests__/tunnel.e2e.test.d.ts +1 -0
- package/dist/__tests__/tunnel.e2e.test.js +61 -0
- package/dist/__tests__/tunnel.e2e.test.js.map +1 -0
- package/dist/__tests__/utils.d.ts +73 -0
- package/dist/__tests__/utils.js +278 -0
- package/dist/__tests__/utils.js.map +1 -0
- package/dist/api.d.ts +3 -9
- package/dist/api.js +20 -31
- package/dist/api.js.map +1 -1
- package/dist/commands/deploy.d.ts +10 -4
- package/dist/commands/deploy.js +85 -32
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployment/inspect.d.ts +11 -0
- package/dist/commands/deployment/inspect.js +91 -0
- package/dist/commands/deployment/inspect.js.map +1 -0
- package/dist/commands/deployment/list.d.ts +11 -0
- package/dist/commands/deployment/list.js +97 -0
- package/dist/commands/deployment/list.js.map +1 -0
- package/dist/commands/deployment/logs.d.ts +12 -0
- package/dist/commands/deployment/logs.js +50 -0
- package/dist/commands/deployment/logs.js.map +1 -0
- package/dist/commands/environment-variable/add.d.ts +14 -0
- package/dist/commands/environment-variable/add.js +47 -0
- package/dist/commands/environment-variable/add.js.map +1 -0
- package/dist/commands/environment-variable/list.d.ts +9 -0
- package/dist/commands/environment-variable/list.js +45 -0
- package/dist/commands/environment-variable/list.js.map +1 -0
- package/dist/commands/environment-variable/remove.d.ts +11 -0
- package/dist/commands/environment-variable/remove.js +33 -0
- package/dist/commands/environment-variable/remove.js.map +1 -0
- package/dist/commands/environment-variable/update.d.ts +13 -0
- package/dist/commands/environment-variable/update.js +41 -0
- package/dist/commands/environment-variable/update.js.map +1 -0
- package/dist/commands/git/connect.d.ts +10 -0
- package/dist/commands/git/connect.js +60 -0
- package/dist/commands/git/connect.js.map +1 -0
- package/dist/commands/git/disconnect.d.ts +9 -0
- package/dist/commands/git/disconnect.js +45 -0
- package/dist/commands/git/disconnect.js.map +1 -0
- package/dist/commands/git.d.ts +6 -0
- package/dist/commands/git.js +17 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/link.d.ts +17 -0
- package/dist/commands/link.js +101 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.js +21 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +6 -0
- package/dist/commands/logout.js +20 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +16 -0
- package/dist/commands/logs.js +96 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/publish.d.ts +15 -0
- package/dist/commands/publish.js +51 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/telemetry/disable.d.ts +5 -0
- package/dist/commands/telemetry/disable.js +14 -0
- package/dist/commands/telemetry/disable.js.map +1 -0
- package/dist/commands/telemetry/enable.d.ts +5 -0
- package/dist/commands/telemetry/enable.js +13 -0
- package/dist/commands/telemetry/enable.js.map +1 -0
- package/dist/commands/telemetry/status.d.ts +5 -0
- package/dist/commands/telemetry/status.js +19 -0
- package/dist/commands/telemetry/status.js.map +1 -0
- package/dist/commands/tunnel.d.ts +9 -0
- package/dist/commands/tunnel.js +96 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.js +13 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/env.d.ts +4 -0
- package/dist/env.js +10 -0
- package/dist/env.js.map +1 -0
- package/dist/lib/alpic-command.d.ts +6 -0
- package/dist/lib/alpic-command.js +27 -0
- package/dist/lib/alpic-command.js.map +1 -0
- package/dist/lib/archive.d.ts +3 -3
- package/dist/lib/archive.js +11 -15
- package/dist/lib/archive.js.map +1 -1
- package/dist/lib/auth/auth.d.ts +3 -0
- package/dist/lib/auth/auth.js +39 -0
- package/dist/lib/auth/auth.js.map +1 -0
- package/dist/lib/auth/oauth/client.d.ts +28 -0
- package/dist/lib/auth/oauth/client.js +110 -0
- package/dist/lib/auth/oauth/client.js.map +1 -0
- package/dist/lib/auth/oauth/constants.d.ts +2 -0
- package/dist/lib/auth/oauth/constants.js +3 -0
- package/dist/lib/auth/oauth/constants.js.map +1 -0
- package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
- package/dist/lib/auth/oauth/server/assets/authorize.html +195 -0
- package/dist/lib/auth/oauth/server/assets/callback.html +88 -0
- package/dist/lib/auth/oauth/server/index.d.ts +8 -0
- package/dist/lib/auth/oauth/server/index.js +105 -0
- package/dist/lib/auth/oauth/server/index.js.map +1 -0
- package/dist/lib/auth/whoami.d.ts +1 -0
- package/dist/lib/auth/whoami.js +45 -0
- package/dist/lib/auth/whoami.js.map +1 -0
- package/dist/lib/base-workflow.d.ts +10 -0
- package/dist/lib/base-workflow.js +22 -0
- package/dist/lib/base-workflow.js.map +1 -0
- package/dist/lib/config.d.ts +3 -2
- package/dist/lib/config.js +8 -7
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/deployment.d.ts +88 -0
- package/dist/lib/deployment.js +150 -0
- package/dist/lib/deployment.js.map +1 -0
- package/dist/lib/environment-variable.d.ts +37 -0
- package/dist/lib/environment-variable.js +299 -0
- package/dist/lib/environment-variable.js.map +1 -0
- package/dist/lib/git.d.ts +22 -0
- package/dist/lib/git.js +131 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/global-store.d.ts +28 -0
- package/dist/lib/global-store.js +76 -0
- package/dist/lib/global-store.js.map +1 -0
- package/dist/lib/link.d.ts +83 -0
- package/dist/lib/link.js +387 -0
- package/dist/lib/link.js.map +1 -0
- package/dist/lib/logs.d.ts +20 -0
- package/dist/lib/logs.js +86 -0
- package/dist/lib/logs.js.map +1 -0
- package/dist/lib/publish.d.ts +22 -0
- package/dist/lib/publish.js +185 -0
- package/dist/lib/publish.js.map +1 -0
- package/dist/lib/resolve.d.ts +6 -0
- package/dist/lib/resolve.js +26 -0
- package/dist/lib/resolve.js.map +1 -0
- package/dist/lib/table.d.ts +8 -0
- package/dist/lib/table.js +27 -0
- package/dist/lib/table.js.map +1 -0
- package/dist/lib/telemetry.d.ts +7 -0
- package/dist/lib/telemetry.js +66 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.js +45 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.test.d.ts +1 -0
- package/dist/lib/utils.test.js +27 -0
- package/dist/lib/utils.test.js.map +1 -0
- package/dist/posthog.d.ts +3 -0
- package/dist/posthog.js +10 -0
- package/dist/posthog.js.map +1 -0
- package/dist/types.d.ts +1 -34
- package/package.json +43 -14
- package/dist/lib/project.d.ts +0 -10
- package/dist/lib/project.js +0 -145
- package/dist/lib/project.js.map +0 -1
package/dist/commands/deploy.js
CHANGED
|
@@ -1,62 +1,115 @@
|
|
|
1
|
+
import { readFileSync, rmSync } from "node:fs";
|
|
1
2
|
import * as p from "@clack/prompts";
|
|
2
|
-
import {
|
|
3
|
+
import { Flags } from "@oclif/core";
|
|
4
|
+
import chalk from "chalk";
|
|
3
5
|
import { api } from "../api.js";
|
|
6
|
+
import { AlpicCommand } from "../lib/alpic-command.js";
|
|
4
7
|
import { createTarArchive, getFilesToPack } from "../lib/archive.js";
|
|
5
|
-
import {
|
|
8
|
+
import { deployAndWait, formatElapsed } from "../lib/deployment.js";
|
|
9
|
+
import { LinkWorkflow, RUNTIMES } from "../lib/link.js";
|
|
6
10
|
import { uploadToPresignedUrl } from "../lib/upload.js";
|
|
7
|
-
|
|
8
|
-
export class Deploy extends Command {
|
|
11
|
+
export class Deploy extends AlpicCommand {
|
|
9
12
|
static description = "Deploy a project to Alpic";
|
|
10
|
-
static examples = [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
static examples = [
|
|
14
|
+
"<%= config.bin %> deploy",
|
|
15
|
+
"<%= config.bin %> deploy --non-interactive --project-name my-app --runtime node24",
|
|
16
|
+
];
|
|
17
|
+
static flags = {
|
|
18
|
+
"non-interactive": Flags.boolean({
|
|
19
|
+
description: "Skip all confirmation prompts",
|
|
20
|
+
required: false,
|
|
21
|
+
}),
|
|
22
|
+
runtime: Flags.string({
|
|
23
|
+
description: "New project runtime (node24, node22, python3.14, python3.13)",
|
|
24
|
+
required: false,
|
|
25
|
+
options: RUNTIMES,
|
|
26
|
+
}),
|
|
27
|
+
"root-dir": Flags.string({
|
|
28
|
+
description: "Path to the app root for builds and deployments",
|
|
29
|
+
required: false,
|
|
30
|
+
}),
|
|
31
|
+
"project-name": Flags.string({
|
|
32
|
+
description: "New project name",
|
|
33
|
+
required: false,
|
|
34
|
+
}),
|
|
35
|
+
"team-id": Flags.string({
|
|
36
|
+
description: "Team ID",
|
|
37
|
+
required: false,
|
|
38
|
+
}),
|
|
39
|
+
"project-id": Flags.string({
|
|
40
|
+
description: "Project ID to deploy to directly",
|
|
41
|
+
required: false,
|
|
42
|
+
}),
|
|
43
|
+
"environment-id": Flags.string({
|
|
44
|
+
description: "Environment ID to deploy to directly",
|
|
14
45
|
required: false,
|
|
15
46
|
}),
|
|
16
47
|
};
|
|
17
48
|
async run() {
|
|
18
|
-
const {
|
|
49
|
+
const { flags } = await this.parse(Deploy);
|
|
50
|
+
const linkWorkflowFlags = {
|
|
51
|
+
"non-interactive": flags["non-interactive"],
|
|
52
|
+
projectName: flags["project-name"],
|
|
53
|
+
runtime: flags.runtime,
|
|
54
|
+
rootDir: flags["root-dir"],
|
|
55
|
+
teamId: flags["team-id"],
|
|
56
|
+
projectId: flags["project-id"],
|
|
57
|
+
environmentId: flags["environment-id"],
|
|
58
|
+
};
|
|
19
59
|
p.intro("Deploying to Alpic");
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
const deployDir = resolveDeployDir(args.directory);
|
|
27
|
-
const config = await resolveProjectForDeploy(deployDir);
|
|
28
|
-
if (!config) {
|
|
29
|
-
p.cancel("Deploy cancelled");
|
|
30
|
-
this.exit(1);
|
|
31
|
-
return;
|
|
60
|
+
await this.ensureAuthenticated();
|
|
61
|
+
const linkWorkflow = new LinkWorkflow(linkWorkflowFlags);
|
|
62
|
+
const projectConfig = await linkWorkflow.runLinkFlow();
|
|
63
|
+
if (!projectConfig) {
|
|
64
|
+
throw new Error("Deploy cancelled");
|
|
32
65
|
}
|
|
33
66
|
const spinner = p.spinner();
|
|
34
67
|
let tmpDir;
|
|
35
68
|
try {
|
|
36
69
|
spinner.start("Collecting source files...");
|
|
37
|
-
const files = getFilesToPack(
|
|
70
|
+
const files = getFilesToPack();
|
|
38
71
|
spinner.stop(`Collected ${files.length} file${files.length === 1 ? "" : "s"}`);
|
|
39
|
-
|
|
40
|
-
const result = await createTarArchive(files, deployDir);
|
|
72
|
+
const result = await createTarArchive(files);
|
|
41
73
|
tmpDir = result.tmpDir;
|
|
42
74
|
const archivePath = result.archivePath;
|
|
43
|
-
|
|
44
|
-
spinner.start("Getting upload URL...");
|
|
45
|
-
const { uploadUrl, token } = await api.getPresignedUploadUrl();
|
|
46
|
-
spinner.stop("Upload URL received");
|
|
75
|
+
const { uploadUrl, token } = await api.deployments.uploadArtifact.v1();
|
|
47
76
|
spinner.start("Uploading source...");
|
|
48
77
|
const buffer = readFileSync(archivePath);
|
|
49
78
|
await uploadToPresignedUrl(uploadUrl, buffer);
|
|
50
79
|
spinner.stop("Upload complete");
|
|
51
80
|
spinner.start("Triggering deployment...");
|
|
52
|
-
const
|
|
81
|
+
const deployStartedAt = Date.now();
|
|
82
|
+
const initialDeployment = await api.environments.deploy.v1({
|
|
83
|
+
environmentId: projectConfig.environmentId,
|
|
84
|
+
token,
|
|
85
|
+
});
|
|
53
86
|
spinner.stop("Deployment started");
|
|
54
|
-
|
|
87
|
+
const { deployment, elapsedMs } = await deployAndWait({
|
|
88
|
+
initial: initialDeployment,
|
|
89
|
+
startedAt: deployStartedAt,
|
|
90
|
+
});
|
|
91
|
+
const elapsedStr = formatElapsed(elapsedMs);
|
|
92
|
+
if (deployment.status !== "deployed") {
|
|
93
|
+
throw new Error("Deployment failed");
|
|
94
|
+
}
|
|
95
|
+
const environment = await api.environments.get.v1({ environmentId: projectConfig.environmentId });
|
|
96
|
+
const urls = environment.mcpServerUrl ? [environment.mcpServerUrl] : environment.domains;
|
|
97
|
+
const teamLine = projectConfig.teamName ? chalk.dim(`Team: ${projectConfig.teamName}`) : null;
|
|
98
|
+
p.box([teamLine, ...urls.map((url) => chalk.bold(`🔗 ${url}`)), "", `Completed in ${elapsedStr}`]
|
|
99
|
+
.filter(Boolean)
|
|
100
|
+
.join("\n"), "Deployment summary:", {
|
|
101
|
+
contentAlign: "center",
|
|
102
|
+
titleAlign: "center",
|
|
103
|
+
width: "auto",
|
|
104
|
+
rounded: true,
|
|
105
|
+
contentPadding: 3,
|
|
106
|
+
});
|
|
107
|
+
p.log.info(`View build logs: ${chalk.cyan(`alpic deployment logs --deployment-id ${deployment.id}`)}`);
|
|
55
108
|
}
|
|
56
109
|
catch (error) {
|
|
57
110
|
spinner.stop();
|
|
58
|
-
|
|
59
|
-
|
|
111
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
112
|
+
throw new Error(`Error: ${message}`);
|
|
60
113
|
}
|
|
61
114
|
finally {
|
|
62
115
|
if (tmpDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
2
|
+
export declare class DeploymentInspect extends AlpicCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"deployment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
"environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
wait: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
4
|
+
import { calculateDeploymentDuration, colorizeDeploymentStatus, fetchDeployment, fetchLatestDeploymentForEnvironment, formatElapsed, waitForDeployment, } from "../../lib/deployment.js";
|
|
5
|
+
import { resolveEnvironmentId } from "../../lib/resolve.js";
|
|
6
|
+
import { formatTable } from "../../lib/table.js";
|
|
7
|
+
import { formatAgo } from "../../lib/utils.js";
|
|
8
|
+
export class DeploymentInspect extends AlpicCommand {
|
|
9
|
+
static description = "Show details of a deployment";
|
|
10
|
+
static examples = [
|
|
11
|
+
"<%= config.bin %> deployment inspect --deployment-id <deploymentId>",
|
|
12
|
+
"<%= config.bin %> deployment inspect --deployment-id <deploymentId> --wait",
|
|
13
|
+
"<%= config.bin %> deployment inspect --environment-id <environmentId>",
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
"deployment-id": Flags.string({
|
|
17
|
+
description: "The ID of the deployment",
|
|
18
|
+
exclusive: ["environment-id"],
|
|
19
|
+
}),
|
|
20
|
+
"environment-id": Flags.string({
|
|
21
|
+
description: "Inspect the latest deployment for this environment",
|
|
22
|
+
exclusive: ["deployment-id"],
|
|
23
|
+
}),
|
|
24
|
+
wait: Flags.boolean({
|
|
25
|
+
description: "Wait for the deployment to reach a final state (deployed, failed, or canceled)",
|
|
26
|
+
default: false,
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
async run() {
|
|
30
|
+
const { flags } = await this.parse(DeploymentInspect);
|
|
31
|
+
await this.ensureAuthenticated();
|
|
32
|
+
let deployment;
|
|
33
|
+
if (flags["deployment-id"]) {
|
|
34
|
+
deployment = await fetchDeployment(flags["deployment-id"]);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const environmentId = resolveEnvironmentId(flags);
|
|
38
|
+
deployment = await fetchLatestDeploymentForEnvironment(environmentId);
|
|
39
|
+
}
|
|
40
|
+
if (flags.wait) {
|
|
41
|
+
deployment = await waitForDeployment(deployment);
|
|
42
|
+
}
|
|
43
|
+
const durationMs = calculateDeploymentDuration(deployment);
|
|
44
|
+
const rows = [
|
|
45
|
+
{ label: "ID", value: chalk.cyan(deployment.id) },
|
|
46
|
+
{
|
|
47
|
+
label: "Status",
|
|
48
|
+
value: `${colorizeDeploymentStatus(deployment.status)("•")} ${deployment.status}`,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: "Environment",
|
|
52
|
+
value: `${deployment.environmentName} ${chalk.gray(`(${deployment.environmentId})`)}`,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
label: "Current",
|
|
56
|
+
value: deployment.isCurrent ? chalk.white("yes") : chalk.gray("no"),
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
label: "Started",
|
|
60
|
+
value: deployment.startedAt ? formatAgo(deployment.startedAt) : chalk.gray("-"),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: "Duration",
|
|
64
|
+
value: durationMs !== null ? formatElapsed(durationMs) : chalk.gray("-"),
|
|
65
|
+
},
|
|
66
|
+
{ label: "Author", value: deployment.authorUsername ?? chalk.gray("-") },
|
|
67
|
+
{ label: "Branch / Ref", value: deployment.sourceRef ?? chalk.gray("-") },
|
|
68
|
+
{
|
|
69
|
+
label: "Commit",
|
|
70
|
+
value: deployment.sourceCommitId ? chalk.gray(deployment.sourceCommitId.slice(0, 7)) : chalk.gray("-"),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: "Commit message",
|
|
74
|
+
value: deployment.sourceCommitMessage ?? chalk.gray("-"),
|
|
75
|
+
},
|
|
76
|
+
...(deployment.deploymentPageUrl
|
|
77
|
+
? [
|
|
78
|
+
{
|
|
79
|
+
label: "Details URL",
|
|
80
|
+
value: chalk.underline(deployment.deploymentPageUrl),
|
|
81
|
+
},
|
|
82
|
+
]
|
|
83
|
+
: []),
|
|
84
|
+
];
|
|
85
|
+
console.log(formatTable(rows, [
|
|
86
|
+
{ key: "label", header: "", format: (value) => chalk.bold(value) },
|
|
87
|
+
{ key: "value", header: "" },
|
|
88
|
+
]));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/deployment/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
2
|
+
export declare class DeploymentList extends AlpicCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
"environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
status: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { deploymentStatusSchema } from "@alpic-ai/api";
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
import { Flags } from "@oclif/core";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { api } from "../../api.js";
|
|
7
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
8
|
+
import { calculateDeploymentDuration, colorizeDeploymentStatus, formatElapsed } from "../../lib/deployment.js";
|
|
9
|
+
import { resolveProjectId } from "../../lib/resolve.js";
|
|
10
|
+
import { formatTable } from "../../lib/table.js";
|
|
11
|
+
import { formatAgo } from "../../lib/utils.js";
|
|
12
|
+
export class DeploymentList extends AlpicCommand {
|
|
13
|
+
static description = "List deployments for the current project";
|
|
14
|
+
static examples = [
|
|
15
|
+
"<%= config.bin %> deployment list",
|
|
16
|
+
"<%= config.bin %> deployment list --project-id <projectId>",
|
|
17
|
+
"<%= config.bin %> deployment list --environment-id <environmentId>",
|
|
18
|
+
"<%= config.bin %> deployment list --status deployed --status failed",
|
|
19
|
+
];
|
|
20
|
+
static flags = {
|
|
21
|
+
"project-id": Flags.string({
|
|
22
|
+
description: "Filter by project ID",
|
|
23
|
+
required: false,
|
|
24
|
+
}),
|
|
25
|
+
"environment-id": Flags.string({
|
|
26
|
+
description: "Filter by environment ID",
|
|
27
|
+
required: false,
|
|
28
|
+
}),
|
|
29
|
+
status: Flags.string({
|
|
30
|
+
description: "Filter by status (can be specified multiple times)",
|
|
31
|
+
options: [...deploymentStatusSchema.options],
|
|
32
|
+
multiple: true,
|
|
33
|
+
required: false,
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
const { flags } = await this.parse(DeploymentList);
|
|
38
|
+
await this.ensureAuthenticated();
|
|
39
|
+
const projectId = resolveProjectId(flags);
|
|
40
|
+
const spinner = p.spinner();
|
|
41
|
+
spinner.start("Fetching deployments...");
|
|
42
|
+
const deployments = await api.deployments.list.v1({
|
|
43
|
+
projectId,
|
|
44
|
+
status: flags.status ? z.array(deploymentStatusSchema).parse(flags.status) : undefined,
|
|
45
|
+
environmentId: flags["environment-id"],
|
|
46
|
+
});
|
|
47
|
+
spinner.stop(`Found ${deployments.length} deployment${deployments.length === 1 ? "" : "s"}`);
|
|
48
|
+
if (deployments.length === 0) {
|
|
49
|
+
p.log.info("No deployments found.");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const rows = deployments.map((deployment) => {
|
|
53
|
+
const durationMs = calculateDeploymentDuration(deployment);
|
|
54
|
+
return {
|
|
55
|
+
id: deployment.id,
|
|
56
|
+
age: deployment.startedAt ? formatAgo(deployment.startedAt, { short: true }) : "-",
|
|
57
|
+
environmentName: deployment.environmentName,
|
|
58
|
+
status: deployment.status,
|
|
59
|
+
isCurrent: deployment.isCurrent,
|
|
60
|
+
duration: durationMs !== null ? formatElapsed(durationMs) : "-",
|
|
61
|
+
author: deployment.authorUsername ?? "-",
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
console.log(formatTable(rows, [
|
|
65
|
+
{ key: "id", header: "id", format: (value) => chalk.cyan(value) },
|
|
66
|
+
{ key: "age", header: "age", format: (value) => chalk.gray(value) },
|
|
67
|
+
{
|
|
68
|
+
key: "environmentName",
|
|
69
|
+
header: "environment",
|
|
70
|
+
format: (value) => chalk.gray(value),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: "status",
|
|
74
|
+
header: "status",
|
|
75
|
+
format: (value) => {
|
|
76
|
+
return `${colorizeDeploymentStatus(value)("•")} ${value}`;
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
key: "isCurrent",
|
|
81
|
+
header: "current",
|
|
82
|
+
format: (_, row) => (row.isCurrent ? chalk.white("yes") : chalk.gray("no")),
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: "duration",
|
|
86
|
+
header: "duration",
|
|
87
|
+
format: (value) => chalk.gray(value),
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
key: "author",
|
|
91
|
+
header: "author",
|
|
92
|
+
format: (value) => chalk.gray(value),
|
|
93
|
+
},
|
|
94
|
+
]));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/deployment/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
2
|
+
export declare class DeploymentLogs extends AlpicCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"deployment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
"environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
follow: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
"no-color": import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { api } from "../../api.js";
|
|
3
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
4
|
+
import { followDeploymentLogs, printDeploymentLog, resolveDeploymentId } from "../../lib/deployment.js";
|
|
5
|
+
export class DeploymentLogs extends AlpicCommand {
|
|
6
|
+
static description = "Retrieve build logs for a deployment";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> deployment logs --deployment-id dpl_xxx",
|
|
9
|
+
"<%= config.bin %> deployment logs --deployment-id dpl_xxx --follow",
|
|
10
|
+
"<%= config.bin %> deployment logs --environment-id <environmentId>",
|
|
11
|
+
"<%= config.bin %> deployment logs --deployment-id dpl_xxx --no-color",
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
"deployment-id": Flags.string({
|
|
15
|
+
description: "The ID of the deployment",
|
|
16
|
+
exclusive: ["environment-id"],
|
|
17
|
+
}),
|
|
18
|
+
"environment-id": Flags.string({
|
|
19
|
+
description: "Show logs for the latest deployment of this environment",
|
|
20
|
+
exclusive: ["deployment-id"],
|
|
21
|
+
}),
|
|
22
|
+
follow: Flags.boolean({
|
|
23
|
+
char: "f",
|
|
24
|
+
description: "Poll for new logs while the build is still running",
|
|
25
|
+
required: false,
|
|
26
|
+
default: false,
|
|
27
|
+
}),
|
|
28
|
+
"no-color": Flags.boolean({
|
|
29
|
+
description: "Disable colorized output",
|
|
30
|
+
required: false,
|
|
31
|
+
default: false,
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const { flags } = await this.parse(DeploymentLogs);
|
|
36
|
+
await this.ensureAuthenticated();
|
|
37
|
+
const deploymentId = await resolveDeploymentId(flags);
|
|
38
|
+
const noColor = flags["no-color"];
|
|
39
|
+
const { logs, hasMoreLogs } = await api.deployments.getLogs.v1({
|
|
40
|
+
deploymentId,
|
|
41
|
+
});
|
|
42
|
+
for (const log of logs) {
|
|
43
|
+
printDeploymentLog(log, { noColor });
|
|
44
|
+
}
|
|
45
|
+
if (flags.follow && hasMoreLogs) {
|
|
46
|
+
await followDeploymentLogs(deploymentId, logs, { noColor });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/deployment/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAExG,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,MAAM,CAAU,WAAW,GAAG,sCAAsC,CAAC;IAErE,MAAM,CAAU,QAAQ,GAAG;QACzB,2DAA2D;QAC3D,oEAAoE;QACpE,oEAAoE;QACpE,sEAAsE;KACvE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;YAC5B,WAAW,EAAE,0BAA0B;YACvC,SAAS,EAAE,CAAC,gBAAgB,CAAC;SAC9B,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,yDAAyD;YACtE,SAAS,EAAE,CAAC,eAAe,CAAC;SAC7B,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,YAAY;SACb,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,kBAAkB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,oBAAoB,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
2
|
+
export declare class EnvironmentVariableAdd extends AlpicCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
key: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
value: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
secret: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
"env-file": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
"non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
3
|
+
import { EnvironmentVariableWorkflow } from "../../lib/environment-variable.js";
|
|
4
|
+
import { resolveEnvironmentId } from "../../lib/resolve.js";
|
|
5
|
+
export class EnvironmentVariableAdd extends AlpicCommand {
|
|
6
|
+
static description = "Add one or more environment variables to an environment";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> environment-variable add",
|
|
9
|
+
"<%= config.bin %> environment-variable add --key DATABASE_URL --value postgres://localhost/db",
|
|
10
|
+
"<%= config.bin %> environment-variable add --key PORT --value 3000 --no-secret",
|
|
11
|
+
"<%= config.bin %> environment-variable add --env-file .env",
|
|
12
|
+
"<%= config.bin %> environment-variable add --env-file .env --environment-id <environmentId>",
|
|
13
|
+
];
|
|
14
|
+
static flags = {
|
|
15
|
+
"environment-id": Flags.string({
|
|
16
|
+
description: "The ID of the environment",
|
|
17
|
+
required: false,
|
|
18
|
+
}),
|
|
19
|
+
key: Flags.string({
|
|
20
|
+
description: "The environment variable key",
|
|
21
|
+
required: false,
|
|
22
|
+
}),
|
|
23
|
+
value: Flags.string({
|
|
24
|
+
description: "The environment variable value",
|
|
25
|
+
required: false,
|
|
26
|
+
}),
|
|
27
|
+
secret: Flags.boolean({
|
|
28
|
+
description: "Mark the variable as secret. Defaults to true when not specified.",
|
|
29
|
+
allowNo: true,
|
|
30
|
+
}),
|
|
31
|
+
"env-file": Flags.string({
|
|
32
|
+
description: "Path to a .env file to import variables from (mutually exclusive with --key/--value)",
|
|
33
|
+
required: false,
|
|
34
|
+
}),
|
|
35
|
+
"non-interactive": Flags.boolean({
|
|
36
|
+
description: "Disable interactive prompts. Requires --key and --value (or --env-file).",
|
|
37
|
+
default: false,
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
40
|
+
async run() {
|
|
41
|
+
const { flags } = await this.parse(EnvironmentVariableAdd);
|
|
42
|
+
await this.ensureAuthenticated();
|
|
43
|
+
const environmentId = resolveEnvironmentId(flags);
|
|
44
|
+
await new EnvironmentVariableWorkflow(flags).add(environmentId);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/environment-variable/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,MAAM,CAAU,WAAW,GAAG,yDAAyD,CAAC;IAExF,MAAM,CAAU,QAAQ,GAAG;QACzB,4CAA4C;QAC5C,+FAA+F;QAC/F,gFAAgF;QAChF,4DAA4D;QAC5D,6FAA6F;KAC9F,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,WAAW,EAAE,mEAAmE;YAChF,OAAO,EAAE,IAAI;SACd,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,WAAW,EAAE,sFAAsF;YACnG,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,0EAA0E;YACvF,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
2
|
+
export declare class EnvironmentVariableList extends AlpicCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
};
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as p from "@clack/prompts";
|
|
2
|
+
import { Flags } from "@oclif/core";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
5
|
+
import { fetchEnvironmentVariables } from "../../lib/environment-variable.js";
|
|
6
|
+
import { resolveEnvironmentId } from "../../lib/resolve.js";
|
|
7
|
+
import { formatTable } from "../../lib/table.js";
|
|
8
|
+
import { formatAgo } from "../../lib/utils.js";
|
|
9
|
+
export class EnvironmentVariableList extends AlpicCommand {
|
|
10
|
+
static description = "List all environment variables for an environment";
|
|
11
|
+
static examples = [
|
|
12
|
+
"<%= config.bin %> environment-variable list",
|
|
13
|
+
"<%= config.bin %> environment-variable list --environment-id <environmentId>",
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
"environment-id": Flags.string({
|
|
17
|
+
description: "The ID of the environment",
|
|
18
|
+
required: false,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
async run() {
|
|
22
|
+
const { flags } = await this.parse(EnvironmentVariableList);
|
|
23
|
+
await this.ensureAuthenticated();
|
|
24
|
+
const environmentId = resolveEnvironmentId(flags);
|
|
25
|
+
const environmentVariables = await fetchEnvironmentVariables(environmentId);
|
|
26
|
+
if (environmentVariables.length === 0) {
|
|
27
|
+
p.log.info("No environment variables defined.");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const rows = environmentVariables.map((variable) => ({
|
|
31
|
+
...variable,
|
|
32
|
+
createdAt: formatAgo(variable.createdAt),
|
|
33
|
+
}));
|
|
34
|
+
console.log(formatTable(rows, [
|
|
35
|
+
{ key: "key", header: "key", format: (value) => chalk.cyan(value) },
|
|
36
|
+
{
|
|
37
|
+
key: "value",
|
|
38
|
+
header: "value",
|
|
39
|
+
format: (value, row) => (row.isSecret ? chalk.gray.italic("<secret>") : chalk.bold(value)),
|
|
40
|
+
},
|
|
41
|
+
{ key: "createdAt", header: "created at" },
|
|
42
|
+
]));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/environment-variable/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,MAAM,CAAU,WAAW,GAAG,mDAAmD,CAAC;IAElF,MAAM,CAAU,QAAQ,GAAG;QACzB,6CAA6C;QAC7C,8EAA8E;KAC/E,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,oBAAoB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAE5E,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACnD,GAAG,QAAQ;YACX,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;SACzC,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CACT,WAAW,CAAC,IAAI,EAAE;YAChB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnE;gBACE,GAAG,EAAE,OAAO;gBACZ,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3F;YACD,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AlpicCommand } from "../../lib/alpic-command.js";
|
|
2
|
+
export declare class EnvironmentVariableRemove extends AlpicCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
key: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
"non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|