alpic 0.0.0-dev.fc2d21b → 0.0.0-dev.fc7e119

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 (189) hide show
  1. package/dist/__tests__/auth.e2e.test.d.ts +1 -0
  2. package/dist/__tests__/auth.e2e.test.js +158 -0
  3. package/dist/__tests__/auth.e2e.test.js.map +1 -0
  4. package/dist/__tests__/deploy-flags.e2e.test.d.ts +1 -0
  5. package/dist/__tests__/deploy-flags.e2e.test.js +111 -0
  6. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -0
  7. package/dist/__tests__/deploy.e2e.test.d.ts +1 -0
  8. package/dist/__tests__/deploy.e2e.test.js +168 -0
  9. package/dist/__tests__/deploy.e2e.test.js.map +1 -0
  10. package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
  11. package/dist/__tests__/deployment-inspect.e2e.test.js +111 -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 +108 -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 +180 -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 +250 -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 +122 -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 +139 -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 +319 -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__/fixtures/demo-project/index.d.ts +1 -0
  35. package/dist/__tests__/fixtures/demo-project/index.js +4 -0
  36. package/dist/__tests__/fixtures/demo-project/index.js.map +1 -0
  37. package/dist/__tests__/git-flags.e2e.test.d.ts +1 -0
  38. package/dist/__tests__/git-flags.e2e.test.js +124 -0
  39. package/dist/__tests__/git-flags.e2e.test.js.map +1 -0
  40. package/dist/__tests__/git.e2e.test.d.ts +1 -0
  41. package/dist/__tests__/git.e2e.test.js +221 -0
  42. package/dist/__tests__/git.e2e.test.js.map +1 -0
  43. package/dist/__tests__/logs.e2e.test.d.ts +1 -0
  44. package/dist/__tests__/logs.e2e.test.js +197 -0
  45. package/dist/__tests__/logs.e2e.test.js.map +1 -0
  46. package/dist/__tests__/mock-server.d.ts +35 -0
  47. package/dist/__tests__/mock-server.js +646 -0
  48. package/dist/__tests__/mock-server.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 +70 -0
  53. package/dist/__tests__/utils.js +275 -0
  54. package/dist/__tests__/utils.js.map +1 -0
  55. package/dist/api.d.ts +3 -0
  56. package/dist/api.js +15 -0
  57. package/dist/api.js.map +1 -0
  58. package/dist/commands/deploy.d.ts +12 -0
  59. package/dist/commands/deploy.js +100 -0
  60. package/dist/commands/deploy.js.map +1 -0
  61. package/dist/commands/deployment/inspect.d.ts +11 -0
  62. package/dist/commands/deployment/inspect.js +68 -0
  63. package/dist/commands/deployment/inspect.js.map +1 -0
  64. package/dist/commands/deployment/list.d.ts +11 -0
  65. package/dist/commands/deployment/list.js +85 -0
  66. package/dist/commands/deployment/list.js.map +1 -0
  67. package/dist/commands/deployment/logs.d.ts +12 -0
  68. package/dist/commands/deployment/logs.js +48 -0
  69. package/dist/commands/deployment/logs.js.map +1 -0
  70. package/dist/commands/environment-variable/add.d.ts +14 -0
  71. package/dist/commands/environment-variable/add.js +46 -0
  72. package/dist/commands/environment-variable/add.js.map +1 -0
  73. package/dist/commands/environment-variable/list.d.ts +9 -0
  74. package/dist/commands/environment-variable/list.js +44 -0
  75. package/dist/commands/environment-variable/list.js.map +1 -0
  76. package/dist/commands/environment-variable/remove.d.ts +11 -0
  77. package/dist/commands/environment-variable/remove.js +32 -0
  78. package/dist/commands/environment-variable/remove.js.map +1 -0
  79. package/dist/commands/environment-variable/update.d.ts +13 -0
  80. package/dist/commands/environment-variable/update.js +40 -0
  81. package/dist/commands/environment-variable/update.js.map +1 -0
  82. package/dist/commands/git/connect.d.ts +10 -0
  83. package/dist/commands/git/connect.js +58 -0
  84. package/dist/commands/git/connect.js.map +1 -0
  85. package/dist/commands/git/disconnect.d.ts +9 -0
  86. package/dist/commands/git/disconnect.js +41 -0
  87. package/dist/commands/git/disconnect.js.map +1 -0
  88. package/dist/commands/{hello.d.ts → git.d.ts} +1 -1
  89. package/dist/commands/git.js +17 -0
  90. package/dist/commands/git.js.map +1 -0
  91. package/dist/commands/login.d.ts +6 -0
  92. package/dist/commands/login.js +34 -0
  93. package/dist/commands/login.js.map +1 -0
  94. package/dist/commands/logout.d.ts +6 -0
  95. package/dist/commands/logout.js +20 -0
  96. package/dist/commands/logout.js.map +1 -0
  97. package/dist/commands/logs.d.ts +16 -0
  98. package/dist/commands/logs.js +96 -0
  99. package/dist/commands/logs.js.map +1 -0
  100. package/dist/commands/telemetry/disable.d.ts +5 -0
  101. package/dist/commands/telemetry/disable.js +14 -0
  102. package/dist/commands/telemetry/disable.js.map +1 -0
  103. package/dist/commands/telemetry/enable.d.ts +5 -0
  104. package/dist/commands/telemetry/enable.js +13 -0
  105. package/dist/commands/telemetry/enable.js.map +1 -0
  106. package/dist/commands/telemetry/status.d.ts +5 -0
  107. package/dist/commands/telemetry/status.js +19 -0
  108. package/dist/commands/telemetry/status.js.map +1 -0
  109. package/dist/commands/tunnel.d.ts +9 -0
  110. package/dist/commands/tunnel.js +45 -0
  111. package/dist/commands/tunnel.js.map +1 -0
  112. package/dist/commands/whoami.d.ts +6 -0
  113. package/dist/commands/whoami.js +13 -0
  114. package/dist/commands/whoami.js.map +1 -0
  115. package/dist/env.d.ts +4 -0
  116. package/dist/env.js +10 -0
  117. package/dist/env.js.map +1 -0
  118. package/dist/lib/alpic-command.d.ts +6 -0
  119. package/dist/lib/alpic-command.js +27 -0
  120. package/dist/lib/alpic-command.js.map +1 -0
  121. package/dist/lib/archive.d.ts +7 -0
  122. package/dist/lib/archive.js +51 -0
  123. package/dist/lib/archive.js.map +1 -0
  124. package/dist/lib/auth/auth.d.ts +2 -0
  125. package/dist/lib/auth/auth.js +21 -0
  126. package/dist/lib/auth/auth.js.map +1 -0
  127. package/dist/lib/auth/oauth/client.d.ts +28 -0
  128. package/dist/lib/auth/oauth/client.js +110 -0
  129. package/dist/lib/auth/oauth/client.js.map +1 -0
  130. package/dist/lib/auth/oauth/constants.d.ts +2 -0
  131. package/dist/lib/auth/oauth/constants.js +3 -0
  132. package/dist/lib/auth/oauth/constants.js.map +1 -0
  133. package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
  134. package/dist/lib/auth/oauth/server/assets/authorize.html +195 -0
  135. package/dist/lib/auth/oauth/server/assets/callback.html +88 -0
  136. package/dist/lib/auth/oauth/server/index.d.ts +8 -0
  137. package/dist/lib/auth/oauth/server/index.js +102 -0
  138. package/dist/lib/auth/oauth/server/index.js.map +1 -0
  139. package/dist/lib/auth/whoami.d.ts +1 -0
  140. package/dist/lib/auth/whoami.js +41 -0
  141. package/dist/lib/auth/whoami.js.map +1 -0
  142. package/dist/lib/base-workflow.d.ts +10 -0
  143. package/dist/lib/base-workflow.js +22 -0
  144. package/dist/lib/base-workflow.js.map +1 -0
  145. package/dist/lib/config.d.ts +11 -0
  146. package/dist/lib/config.js +31 -0
  147. package/dist/lib/config.js.map +1 -0
  148. package/dist/lib/deployment.d.ts +88 -0
  149. package/dist/lib/deployment.js +143 -0
  150. package/dist/lib/deployment.js.map +1 -0
  151. package/dist/lib/environment-variable.d.ts +41 -0
  152. package/dist/lib/environment-variable.js +304 -0
  153. package/dist/lib/environment-variable.js.map +1 -0
  154. package/dist/lib/git.d.ts +22 -0
  155. package/dist/lib/git.js +131 -0
  156. package/dist/lib/git.js.map +1 -0
  157. package/dist/lib/global-store.d.ts +28 -0
  158. package/dist/lib/global-store.js +76 -0
  159. package/dist/lib/global-store.js.map +1 -0
  160. package/dist/lib/logs.d.ts +20 -0
  161. package/dist/lib/logs.js +86 -0
  162. package/dist/lib/logs.js.map +1 -0
  163. package/dist/lib/project.d.ts +74 -0
  164. package/dist/lib/project.js +306 -0
  165. package/dist/lib/project.js.map +1 -0
  166. package/dist/lib/table.d.ts +8 -0
  167. package/dist/lib/table.js +27 -0
  168. package/dist/lib/table.js.map +1 -0
  169. package/dist/lib/telemetry.d.ts +7 -0
  170. package/dist/lib/telemetry.js +66 -0
  171. package/dist/lib/telemetry.js.map +1 -0
  172. package/dist/lib/upload.d.ts +1 -0
  173. package/dist/lib/upload.js +14 -0
  174. package/dist/lib/upload.js.map +1 -0
  175. package/dist/lib/utils.d.ts +4 -0
  176. package/dist/lib/utils.js +21 -0
  177. package/dist/lib/utils.js.map +1 -0
  178. package/dist/lib/utils.test.d.ts +1 -0
  179. package/dist/lib/utils.test.js +21 -0
  180. package/dist/lib/utils.test.js.map +1 -0
  181. package/dist/posthog.d.ts +3 -0
  182. package/dist/posthog.js +10 -0
  183. package/dist/posthog.js.map +1 -0
  184. package/dist/types.d.ts +7 -0
  185. package/dist/types.js +2 -0
  186. package/dist/types.js.map +1 -0
  187. package/package.json +40 -9
  188. package/dist/commands/hello.js +0 -10
  189. package/dist/commands/hello.js.map +0 -1
@@ -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,68 @@
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/environment-variable.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
+ { label: "Status", value: `${colorizeDeploymentStatus(deployment.status)("•")} ${deployment.status}` },
47
+ { label: "Environment", value: `${deployment.environmentName} ${chalk.gray(`(${deployment.environmentId})`)}` },
48
+ { label: "Current", value: deployment.isCurrent ? chalk.white("yes") : chalk.gray("no") },
49
+ { label: "Started", value: deployment.startedAt ? formatAgo(deployment.startedAt) : chalk.gray("-") },
50
+ { label: "Duration", value: durationMs !== null ? formatElapsed(durationMs) : chalk.gray("-") },
51
+ { label: "Author", value: deployment.authorUsername ?? chalk.gray("-") },
52
+ { label: "Branch / Ref", value: deployment.sourceRef ?? chalk.gray("-") },
53
+ {
54
+ label: "Commit",
55
+ value: deployment.sourceCommitId ? chalk.gray(deployment.sourceCommitId.slice(0, 7)) : chalk.gray("-"),
56
+ },
57
+ { label: "Commit message", value: deployment.sourceCommitMessage ?? chalk.gray("-") },
58
+ ...(deployment.deploymentPageUrl
59
+ ? [{ label: "Details URL", value: chalk.underline(deployment.deploymentPageUrl) }]
60
+ : []),
61
+ ];
62
+ console.log(formatTable(rows, [
63
+ { key: "label", header: "", format: (value) => chalk.bold(value) },
64
+ { key: "value", header: "" },
65
+ ]));
66
+ }
67
+ }
68
+ //# 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,85 @@
1
+ import * as p from "@clack/prompts";
2
+ import { Flags } from "@oclif/core";
3
+ import chalk from "chalk";
4
+ import { z } from "zod";
5
+ import { deploymentStatusSchema } from "@alpic-ai/api";
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/project.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
+ { key: "environmentName", header: "environment", format: (value) => chalk.gray(value) },
68
+ {
69
+ key: "status",
70
+ header: "status",
71
+ format: (value) => {
72
+ return `${colorizeDeploymentStatus(value)("•")} ${value}`;
73
+ },
74
+ },
75
+ {
76
+ key: "isCurrent",
77
+ header: "current",
78
+ format: (_, row) => (row.isCurrent ? chalk.white("yes") : chalk.gray("no")),
79
+ },
80
+ { key: "duration", header: "duration", format: (value) => chalk.gray(value) },
81
+ { key: "author", header: "author", format: (value) => chalk.gray(value) },
82
+ ]));
83
+ }
84
+ }
85
+ //# 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,48 @@
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({ deploymentId });
40
+ for (const log of logs) {
41
+ printDeploymentLog(log, { noColor });
42
+ }
43
+ if (flags.follow && hasMoreLogs) {
44
+ await followDeploymentLogs(deploymentId, logs, { noColor });
45
+ }
46
+ }
47
+ }
48
+ //# 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,EAAE,YAAY,EAAE,CAAC,CAAC;QAEjF,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,46 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../lib/alpic-command.js";
3
+ import { EnvironmentVariableWorkflow, resolveEnvironmentId } from "../../lib/environment-variable.js";
4
+ export class EnvironmentVariableAdd extends AlpicCommand {
5
+ static description = "Add one or more environment variables to an environment";
6
+ static examples = [
7
+ "<%= config.bin %> environment-variable add",
8
+ "<%= config.bin %> environment-variable add --key DATABASE_URL --value postgres://localhost/db",
9
+ "<%= config.bin %> environment-variable add --key PORT --value 3000 --no-secret",
10
+ "<%= config.bin %> environment-variable add --env-file .env",
11
+ "<%= config.bin %> environment-variable add --env-file .env --environment-id <environmentId>",
12
+ ];
13
+ static flags = {
14
+ "environment-id": Flags.string({
15
+ description: "The ID of the environment",
16
+ required: false,
17
+ }),
18
+ key: Flags.string({
19
+ description: "The environment variable key",
20
+ required: false,
21
+ }),
22
+ value: Flags.string({
23
+ description: "The environment variable value",
24
+ required: false,
25
+ }),
26
+ secret: Flags.boolean({
27
+ description: "Mark the variable as secret. Defaults to true when not specified.",
28
+ allowNo: true,
29
+ }),
30
+ "env-file": Flags.string({
31
+ description: "Path to a .env file to import variables from (mutually exclusive with --key/--value)",
32
+ required: false,
33
+ }),
34
+ "non-interactive": Flags.boolean({
35
+ description: "Disable interactive prompts. Requires --key and --value (or --env-file).",
36
+ default: false,
37
+ }),
38
+ };
39
+ async run() {
40
+ const { flags } = await this.parse(EnvironmentVariableAdd);
41
+ await this.ensureAuthenticated();
42
+ const environmentId = resolveEnvironmentId(flags);
43
+ await new EnvironmentVariableWorkflow(flags).add(environmentId);
44
+ }
45
+ }
46
+ //# 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,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEtG,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,44 @@
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, resolveEnvironmentId } from "../../lib/environment-variable.js";
6
+ import { formatTable } from "../../lib/table.js";
7
+ import { formatAgo } from "../../lib/utils.js";
8
+ export class EnvironmentVariableList extends AlpicCommand {
9
+ static description = "List all environment variables for an environment";
10
+ static examples = [
11
+ "<%= config.bin %> environment-variable list",
12
+ "<%= config.bin %> environment-variable list --environment-id <environmentId>",
13
+ ];
14
+ static flags = {
15
+ "environment-id": Flags.string({
16
+ description: "The ID of the environment",
17
+ required: false,
18
+ }),
19
+ };
20
+ async run() {
21
+ const { flags } = await this.parse(EnvironmentVariableList);
22
+ await this.ensureAuthenticated();
23
+ const environmentId = resolveEnvironmentId(flags);
24
+ const environmentVariables = await fetchEnvironmentVariables(environmentId);
25
+ if (environmentVariables.length === 0) {
26
+ p.log.info("No environment variables defined.");
27
+ return;
28
+ }
29
+ const rows = environmentVariables.map((variable) => ({
30
+ ...variable,
31
+ createdAt: formatAgo(variable.createdAt),
32
+ }));
33
+ console.log(formatTable(rows, [
34
+ { key: "key", header: "key", format: (value) => chalk.cyan(value) },
35
+ {
36
+ key: "value",
37
+ header: "value",
38
+ format: (value, row) => (row.isSecret ? chalk.gray.italic("<secret>") : chalk.bold(value)),
39
+ },
40
+ { key: "createdAt", header: "created at" },
41
+ ]));
42
+ }
43
+ }
44
+ //# 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,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpG,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
+ }
@@ -0,0 +1,32 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../lib/alpic-command.js";
3
+ import { EnvironmentVariableWorkflow, resolveEnvironmentId } from "../../lib/environment-variable.js";
4
+ export class EnvironmentVariableRemove extends AlpicCommand {
5
+ static description = "Remove an environment variable";
6
+ static examples = [
7
+ "<%= config.bin %> environment-variable remove",
8
+ "<%= config.bin %> environment-variable remove --key DATABASE_URL",
9
+ "<%= config.bin %> environment-variable remove --key DATABASE_URL --environment-id <environmentId>",
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ key: Flags.string({
17
+ description: "The key of the environment variable to remove",
18
+ required: false,
19
+ }),
20
+ "non-interactive": Flags.boolean({
21
+ description: "Disable interactive prompts. Requires --key.",
22
+ default: false,
23
+ }),
24
+ };
25
+ async run() {
26
+ const { flags } = await this.parse(EnvironmentVariableRemove);
27
+ await this.ensureAuthenticated();
28
+ const environmentId = resolveEnvironmentId(flags);
29
+ await new EnvironmentVariableWorkflow(flags).remove(environmentId);
30
+ }
31
+ }
32
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/environment-variable/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEtG,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IACzD,MAAM,CAAU,WAAW,GAAG,gCAAgC,CAAC;IAE/D,MAAM,CAAU,QAAQ,GAAG;QACzB,+CAA+C;QAC/C,kEAAkE;QAClE,mGAAmG;KACpG,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,+CAA+C;YAC5D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { AlpicCommand } from "../../lib/alpic-command.js";
2
+ export declare class EnvironmentVariableUpdate 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
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,40 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AlpicCommand } from "../../lib/alpic-command.js";
3
+ import { EnvironmentVariableWorkflow, resolveEnvironmentId } from "../../lib/environment-variable.js";
4
+ export class EnvironmentVariableUpdate extends AlpicCommand {
5
+ static description = "Update the value and/or secret status of an environment variable";
6
+ static examples = [
7
+ "<%= config.bin %> environment-variable update",
8
+ "<%= config.bin %> environment-variable update --key DATABASE_URL --value postgres://prod/db",
9
+ "<%= config.bin %> environment-variable update --key PORT --value 8080 --environment-id <environmentId>",
10
+ ];
11
+ static flags = {
12
+ "environment-id": Flags.string({
13
+ description: "The ID of the environment",
14
+ required: false,
15
+ }),
16
+ key: Flags.string({
17
+ description: "The key of the environment variable to update",
18
+ required: false,
19
+ }),
20
+ value: Flags.string({
21
+ description: "The new value (omit to keep the current value)",
22
+ required: false,
23
+ }),
24
+ secret: Flags.boolean({
25
+ description: "Mark the variable as secret. Use --no-secret to make it visible.",
26
+ allowNo: true,
27
+ }),
28
+ "non-interactive": Flags.boolean({
29
+ description: "Disable interactive prompts. Requires --key and one of --value or --secret/--no-secret.",
30
+ default: false,
31
+ }),
32
+ };
33
+ async run() {
34
+ const { flags } = await this.parse(EnvironmentVariableUpdate);
35
+ await this.ensureAuthenticated();
36
+ const environmentId = resolveEnvironmentId(flags);
37
+ await new EnvironmentVariableWorkflow(flags).update(environmentId);
38
+ }
39
+ }
40
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/environment-variable/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEtG,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IACzD,MAAM,CAAU,WAAW,GAAG,kEAAkE,CAAC;IAEjG,MAAM,CAAU,QAAQ,GAAG;QACzB,+CAA+C;QAC/C,6FAA6F;QAC7F,wGAAwG;KACzG,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,+CAA+C;YAC5D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,WAAW,EAAE,kEAAkE;YAC/E,OAAO,EAAE,IAAI;SACd,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,yFAAyF;YACtG,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AlpicCommand } from "../../lib/alpic-command.js";
2
+ export default class GitConnect extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ "remote-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ };
9
+ run(): Promise<void>;
10
+ }
@@ -0,0 +1,58 @@
1
+ import * as p from "@clack/prompts";
2
+ import { Flags } from "@oclif/core";
3
+ import chalk from "chalk";
4
+ import { api } from "../../api.js";
5
+ import { AlpicCommand } from "../../lib/alpic-command.js";
6
+ import { config } from "../../lib/config.js";
7
+ import { GitWorkflow, confirmLinkAnotherIfAlreadyConnected, isGitRepository, listGithubRemotes, showGitSetupInstructions, } from "../../lib/git.js";
8
+ export default class GitConnect extends AlpicCommand {
9
+ static description = "Connect a linked Alpic project to a git remote source";
10
+ static examples = [
11
+ "<%= config.bin %> git connect",
12
+ "<%= config.bin %> git connect --non-interactive",
13
+ "<%= config.bin %> git connect --remote-name origin",
14
+ ];
15
+ static flags = {
16
+ "non-interactive": Flags.boolean({
17
+ description: "Automatically select the remote when only one is available",
18
+ default: false,
19
+ }),
20
+ "remote-name": Flags.string({
21
+ description: "Name of the remote to connect",
22
+ }),
23
+ };
24
+ async run() {
25
+ const { flags } = await this.parse(GitConnect);
26
+ p.intro("Connecting git repository to Alpic");
27
+ await this.ensureAuthenticated();
28
+ const linkedConfig = config.load();
29
+ if (!linkedConfig) {
30
+ throw new Error("This directory is not linked to an Alpic project. Link it first using `alpic deploy`.");
31
+ }
32
+ if (!isGitRepository()) {
33
+ p.log.message("This directory is not a git repository.");
34
+ showGitSetupInstructions();
35
+ return;
36
+ }
37
+ const remotes = listGithubRemotes();
38
+ if (remotes.length === 0) {
39
+ p.log.message("This git repository has no remotes configured.");
40
+ showGitSetupInstructions();
41
+ return;
42
+ }
43
+ const project = await api.projects.get.v1({ projectId: linkedConfig.projectId });
44
+ await confirmLinkAnotherIfAlreadyConnected(project);
45
+ const workflow = new GitWorkflow({
46
+ "non-interactive": flags["non-interactive"],
47
+ remoteName: flags["remote-name"],
48
+ });
49
+ const selectedSourceRepository = await workflow.selectRemoteSourceRepository(remotes);
50
+ await api.projects.update.v1({
51
+ projectId: linkedConfig.projectId,
52
+ sourceRepository: selectedSourceRepository,
53
+ });
54
+ p.log.info("To automatically trigger deployments on every push,\nmake sure to install the Alpic GitHub App on this repository.");
55
+ p.outro(`✅ Connected ${chalk.bold(selectedSourceRepository)} to project ${chalk.bold(project.name)}.`);
56
+ }
57
+ }
58
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/commands/git/connect.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,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,oCAAoC,EACpC,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAClD,MAAM,CAAU,WAAW,GAAG,uDAAuD,CAAC;IAEtF,MAAM,CAAU,QAAQ,GAAG;QACzB,+BAA+B;QAC/B,iDAAiD;QACjD,oDAAoD;KACrD,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,4DAA4D;YACzE,OAAO,EAAE,KAAK;SACf,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,+BAA+B;SAC7C,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC3G,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACvB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;YACzD,wBAAwB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;YAChE,wBAAwB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;QACjF,MAAM,oCAAoC,CAAC,OAAO,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC;YAC/B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC;YAC3C,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;SACjC,CAAC,CAAC;QACH,MAAM,wBAAwB,GAAG,MAAM,QAAQ,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAEtF,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,gBAAgB,EAAE,wBAAwB;SAC3C,CAAC,CAAC;QAEH,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,oHAAoH,CACrH,CAAC;QACF,CAAC,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzG,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AlpicCommand } from "../../lib/alpic-command.js";
2
+ export default class GitDisconnect extends AlpicCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "non-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }