alpic 0.0.0-dev.f5b9b93 → 0.0.0-dev.f5c14d5

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.
Files changed (154) hide show
  1. package/dist/__tests__/audit.e2e.test.d.ts +1 -0
  2. package/dist/__tests__/audit.e2e.test.js +242 -0
  3. package/dist/__tests__/audit.e2e.test.js.map +1 -0
  4. package/dist/__tests__/auth.e2e.test.js +18 -3
  5. package/dist/__tests__/auth.e2e.test.js.map +1 -1
  6. package/dist/__tests__/deploy-flags.e2e.test.js +107 -6
  7. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -1
  8. package/dist/__tests__/deploy.e2e.test.js +22 -10
  9. package/dist/__tests__/deploy.e2e.test.js.map +1 -1
  10. package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
  11. package/dist/__tests__/deployment-inspect.e2e.test.js +114 -0
  12. package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -0
  13. package/dist/__tests__/deployment-list.e2e.test.d.ts +1 -0
  14. package/dist/__tests__/deployment-list.e2e.test.js +116 -0
  15. package/dist/__tests__/deployment-list.e2e.test.js.map +1 -0
  16. package/dist/__tests__/deployment-logs.e2e.test.d.ts +1 -0
  17. package/dist/__tests__/deployment-logs.e2e.test.js +255 -0
  18. package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -0
  19. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.d.ts +1 -0
  20. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +259 -0
  21. package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -0
  22. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.d.ts +1 -0
  23. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +139 -0
  24. package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -0
  25. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.d.ts +1 -0
  26. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +150 -0
  27. package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -0
  28. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.d.ts +1 -0
  29. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +342 -0
  30. package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -0
  31. package/dist/__tests__/environment-variable/environment-variable-validation.test.d.ts +1 -0
  32. package/dist/__tests__/environment-variable/environment-variable-validation.test.js +20 -0
  33. package/dist/__tests__/environment-variable/environment-variable-validation.test.js.map +1 -0
  34. package/dist/__tests__/git-flags.e2e.test.js +6 -6
  35. package/dist/__tests__/git-flags.e2e.test.js.map +1 -1
  36. package/dist/__tests__/git.e2e.test.js +2 -2
  37. package/dist/__tests__/link.e2e.test.d.ts +1 -0
  38. package/dist/__tests__/link.e2e.test.js +279 -0
  39. package/dist/__tests__/link.e2e.test.js.map +1 -0
  40. package/dist/__tests__/logs.e2e.test.d.ts +1 -0
  41. package/dist/__tests__/logs.e2e.test.js +227 -0
  42. package/dist/__tests__/logs.e2e.test.js.map +1 -0
  43. package/dist/__tests__/mock-server.d.ts +20 -0
  44. package/dist/__tests__/mock-server.js +300 -20
  45. package/dist/__tests__/mock-server.js.map +1 -1
  46. package/dist/__tests__/publish.e2e.test.d.ts +1 -0
  47. package/dist/__tests__/publish.e2e.test.js +505 -0
  48. package/dist/__tests__/publish.e2e.test.js.map +1 -0
  49. package/dist/__tests__/tunnel.e2e.test.d.ts +1 -0
  50. package/dist/__tests__/tunnel.e2e.test.js +64 -0
  51. package/dist/__tests__/tunnel.e2e.test.js.map +1 -0
  52. package/dist/__tests__/utils.d.ts +8 -2
  53. package/dist/__tests__/utils.js +55 -20
  54. package/dist/__tests__/utils.js.map +1 -1
  55. package/dist/api.d.ts +1 -1
  56. package/dist/api.js +1 -1
  57. package/dist/api.js.map +1 -1
  58. package/dist/commands/audit.d.ts +19 -0
  59. package/dist/commands/audit.js +235 -0
  60. package/dist/commands/audit.js.map +1 -0
  61. package/dist/commands/deploy.d.ts +4 -4
  62. package/dist/commands/deploy.js +44 -33
  63. package/dist/commands/deploy.js.map +1 -1
  64. package/dist/commands/deployment/inspect.d.ts +11 -0
  65. package/dist/commands/deployment/inspect.js +91 -0
  66. package/dist/commands/deployment/inspect.js.map +1 -0
  67. package/dist/commands/deployment/list.d.ts +11 -0
  68. package/dist/commands/deployment/list.js +97 -0
  69. package/dist/commands/deployment/list.js.map +1 -0
  70. package/dist/commands/deployment/logs.d.ts +12 -0
  71. package/dist/commands/deployment/logs.js +50 -0
  72. package/dist/commands/deployment/logs.js.map +1 -0
  73. package/dist/commands/environment-variable/add.d.ts +14 -0
  74. package/dist/commands/environment-variable/add.js +47 -0
  75. package/dist/commands/environment-variable/add.js.map +1 -0
  76. package/dist/commands/environment-variable/list.d.ts +9 -0
  77. package/dist/commands/environment-variable/list.js +45 -0
  78. package/dist/commands/environment-variable/list.js.map +1 -0
  79. package/dist/commands/environment-variable/remove.d.ts +11 -0
  80. package/dist/commands/environment-variable/remove.js +33 -0
  81. package/dist/commands/environment-variable/remove.js.map +1 -0
  82. package/dist/commands/environment-variable/update.d.ts +13 -0
  83. package/dist/commands/environment-variable/update.js +41 -0
  84. package/dist/commands/environment-variable/update.js.map +1 -0
  85. package/dist/commands/git/connect.d.ts +1 -4
  86. package/dist/commands/git/connect.js +16 -26
  87. package/dist/commands/git/connect.js.map +1 -1
  88. package/dist/commands/git/disconnect.d.ts +1 -4
  89. package/dist/commands/git/disconnect.js +14 -26
  90. package/dist/commands/git/disconnect.js.map +1 -1
  91. package/dist/commands/git.js +2 -2
  92. package/dist/commands/git.js.map +1 -1
  93. package/dist/commands/link.d.ts +17 -0
  94. package/dist/commands/link.js +101 -0
  95. package/dist/commands/link.js.map +1 -0
  96. package/dist/commands/login.js +4 -2
  97. package/dist/commands/login.js.map +1 -1
  98. package/dist/commands/logs.d.ts +16 -0
  99. package/dist/commands/logs.js +96 -0
  100. package/dist/commands/logs.js.map +1 -0
  101. package/dist/commands/publish.d.ts +15 -0
  102. package/dist/commands/publish.js +51 -0
  103. package/dist/commands/publish.js.map +1 -0
  104. package/dist/commands/tunnel.d.ts +9 -0
  105. package/dist/commands/tunnel.js +53 -0
  106. package/dist/commands/tunnel.js.map +1 -0
  107. package/dist/lib/archive.d.ts +3 -3
  108. package/dist/lib/archive.js +11 -15
  109. package/dist/lib/archive.js.map +1 -1
  110. package/dist/lib/auth/oauth/server/index.js +5 -2
  111. package/dist/lib/auth/oauth/server/index.js.map +1 -1
  112. package/dist/lib/base-workflow.d.ts +1 -1
  113. package/dist/lib/base-workflow.js +1 -1
  114. package/dist/lib/base-workflow.js.map +1 -1
  115. package/dist/lib/config.d.ts +3 -2
  116. package/dist/lib/config.js +8 -7
  117. package/dist/lib/config.js.map +1 -1
  118. package/dist/lib/deployment.d.ts +68 -1
  119. package/dist/lib/deployment.js +111 -15
  120. package/dist/lib/deployment.js.map +1 -1
  121. package/dist/lib/environment-variable.d.ts +37 -0
  122. package/dist/lib/environment-variable.js +299 -0
  123. package/dist/lib/environment-variable.js.map +1 -0
  124. package/dist/lib/git.d.ts +5 -5
  125. package/dist/lib/git.js +10 -13
  126. package/dist/lib/git.js.map +1 -1
  127. package/dist/lib/global-store.js +2 -2
  128. package/dist/lib/global-store.js.map +1 -1
  129. package/dist/lib/{project.d.ts → link.d.ts} +24 -12
  130. package/dist/lib/{project.js → link.js} +183 -98
  131. package/dist/lib/link.js.map +1 -0
  132. package/dist/lib/logs.d.ts +20 -0
  133. package/dist/lib/logs.js +86 -0
  134. package/dist/lib/logs.js.map +1 -0
  135. package/dist/lib/publish.d.ts +22 -0
  136. package/dist/lib/publish.js +185 -0
  137. package/dist/lib/publish.js.map +1 -0
  138. package/dist/lib/resolve.d.ts +6 -0
  139. package/dist/lib/resolve.js +26 -0
  140. package/dist/lib/resolve.js.map +1 -0
  141. package/dist/lib/table.d.ts +8 -0
  142. package/dist/lib/table.js +27 -0
  143. package/dist/lib/table.js.map +1 -0
  144. package/dist/lib/telemetry.js +1 -1
  145. package/dist/lib/telemetry.js.map +1 -1
  146. package/dist/lib/utils.d.ts +4 -0
  147. package/dist/lib/utils.js +45 -0
  148. package/dist/lib/utils.js.map +1 -0
  149. package/dist/lib/utils.test.d.ts +1 -0
  150. package/dist/lib/utils.test.js +27 -0
  151. package/dist/lib/utils.test.js.map +1 -0
  152. package/dist/types.d.ts +1 -0
  153. package/package.json +24 -19
  154. package/dist/lib/project.js.map +0 -1
@@ -1,71 +1,75 @@
1
+ import { readFileSync, rmSync } from "node:fs";
1
2
  import * as p from "@clack/prompts";
2
- import { Args, Flags } from "@oclif/core";
3
+ import { Flags } from "@oclif/core";
3
4
  import chalk from "chalk";
4
- import { readFileSync, rmSync } from "node:fs";
5
5
  import { api } from "../api.js";
6
6
  import { AlpicCommand } from "../lib/alpic-command.js";
7
7
  import { createTarArchive, getFilesToPack } from "../lib/archive.js";
8
- import { deployAndWait, formatElapsed, resolveDeployDir } from "../lib/deployment.js";
9
- import { ProjectWorkflow } from "../lib/project.js";
8
+ import { deployAndWait, formatElapsed } from "../lib/deployment.js";
9
+ import { LinkWorkflow, RUNTIMES } from "../lib/link.js";
10
10
  import { uploadToPresignedUrl } from "../lib/upload.js";
11
- const RUNTIMES = ["node24", "node22", "python3.14", "python3.13"];
12
11
  export class Deploy extends AlpicCommand {
13
12
  static description = "Deploy a project to Alpic";
14
13
  static examples = [
15
14
  "<%= config.bin %> deploy",
16
- "<%= config.bin %> deploy ./my-app",
17
- "<%= config.bin %> deploy --yes --project-name my-app --runtime node24",
15
+ "<%= config.bin %> deploy --non-interactive --project-name my-app --runtime node24",
18
16
  ];
19
- static args = {
20
- directory: Args.string({
21
- description: "Directory to deploy (default: current directory)",
22
- required: false,
23
- }),
24
- };
25
17
  static flags = {
26
- yes: Flags.boolean({
27
- char: "y",
18
+ "non-interactive": Flags.boolean({
28
19
  description: "Skip all confirmation prompts",
29
20
  required: false,
30
21
  }),
31
22
  runtime: Flags.string({
32
- description: "Runtime (node24, node22, python3.14, python3.13)",
23
+ description: "New project runtime (node24, node22, python3.14, python3.13)",
33
24
  required: false,
34
25
  options: RUNTIMES,
35
26
  }),
36
27
  "root-dir": Flags.string({
37
- description: "Root directory (defaults to .)",
28
+ description: "Path to the app root for builds and deployments",
38
29
  required: false,
39
30
  }),
40
31
  "project-name": Flags.string({
41
- description: "Name for a new project",
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",
42
45
  required: false,
43
46
  }),
44
47
  };
45
48
  async run() {
46
- const { args, flags } = await this.parse(Deploy);
47
- const projectFlags = {
48
- yes: flags.yes,
49
+ const { flags } = await this.parse(Deploy);
50
+ const linkWorkflowFlags = {
51
+ "non-interactive": flags["non-interactive"],
49
52
  projectName: flags["project-name"],
50
53
  runtime: flags.runtime,
51
54
  rootDir: flags["root-dir"],
55
+ teamId: flags["team-id"],
56
+ projectId: flags["project-id"],
57
+ environmentId: flags["environment-id"],
52
58
  };
53
59
  p.intro("Deploying to Alpic");
54
60
  await this.ensureAuthenticated();
55
- const deployDir = resolveDeployDir(args.directory);
56
- const workflow = new ProjectWorkflow(projectFlags);
57
- const config = await workflow.resolveProjectForDeploy(deployDir);
58
- if (!config) {
59
- p.cancel("Deploy cancelled");
60
- return;
61
+ const linkWorkflow = new LinkWorkflow(linkWorkflowFlags);
62
+ const projectConfig = await linkWorkflow.runLinkFlow();
63
+ if (!projectConfig) {
64
+ throw new Error("Deploy cancelled");
61
65
  }
62
66
  const spinner = p.spinner();
63
67
  let tmpDir;
64
68
  try {
65
69
  spinner.start("Collecting source files...");
66
- const files = getFilesToPack(deployDir);
70
+ const files = getFilesToPack();
67
71
  spinner.stop(`Collected ${files.length} file${files.length === 1 ? "" : "s"}`);
68
- const result = await createTarArchive(files, deployDir);
72
+ const result = await createTarArchive(files);
69
73
  tmpDir = result.tmpDir;
70
74
  const archivePath = result.archivePath;
71
75
  const { uploadUrl, token } = await api.deployments.uploadArtifact.v1();
@@ -75,7 +79,10 @@ export class Deploy extends AlpicCommand {
75
79
  spinner.stop("Upload complete");
76
80
  spinner.start("Triggering deployment...");
77
81
  const deployStartedAt = Date.now();
78
- const initialDeployment = await api.environments.deploy.v1({ environmentId: config.environmentId, token });
82
+ const initialDeployment = await api.environments.deploy.v1({
83
+ environmentId: projectConfig.environmentId,
84
+ token,
85
+ });
79
86
  spinner.stop("Deployment started");
80
87
  const { deployment, elapsedMs } = await deployAndWait({
81
88
  initial: initialDeployment,
@@ -85,20 +92,24 @@ export class Deploy extends AlpicCommand {
85
92
  if (deployment.status !== "deployed") {
86
93
  throw new Error("Deployment failed");
87
94
  }
88
- const environment = await api.environments.get.v1({ environmentId: config.environmentId });
95
+ const environment = await api.environments.get.v1({ environmentId: projectConfig.environmentId });
89
96
  const urls = environment.mcpServerUrl ? [environment.mcpServerUrl] : environment.domains;
90
- p.box([...urls.map((url) => chalk.bold(`🔗 ${url}`)), "", `Completed in ${elapsedStr}`].join("\n"), "Deployment summary:", {
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:", {
91
101
  contentAlign: "center",
92
102
  titleAlign: "center",
93
103
  width: "auto",
94
104
  rounded: true,
95
105
  contentPadding: 3,
96
106
  });
107
+ p.log.info(`View build logs: ${chalk.cyan(`alpic deployment logs --deployment-id ${deployment.id}`)}`);
97
108
  }
98
109
  catch (error) {
99
110
  spinner.stop();
100
111
  const message = error instanceof Error ? error.message : String(error);
101
- p.cancel(`Error: ${message}`);
112
+ throw new Error(`Error: ${message}`);
102
113
  }
103
114
  finally {
104
115
  if (tmpDir) {
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
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
+ }