@launchmatic/cli 0.2.0 → 0.3.1

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 (65) hide show
  1. package/dist/c.js +14185 -250
  2. package/dist/index.js +25203 -28
  3. package/package.json +37 -34
  4. package/dist/api.d.ts +0 -2
  5. package/dist/api.d.ts.map +0 -1
  6. package/dist/api.js +0 -70
  7. package/dist/api.js.map +0 -1
  8. package/dist/c.d.ts +0 -11
  9. package/dist/c.d.ts.map +0 -1
  10. package/dist/c.js.map +0 -1
  11. package/dist/commands/deploy.d.ts +0 -3
  12. package/dist/commands/deploy.d.ts.map +0 -1
  13. package/dist/commands/deploy.js +0 -217
  14. package/dist/commands/deploy.js.map +0 -1
  15. package/dist/commands/destroy.d.ts +0 -3
  16. package/dist/commands/destroy.d.ts.map +0 -1
  17. package/dist/commands/destroy.js +0 -53
  18. package/dist/commands/destroy.js.map +0 -1
  19. package/dist/commands/domains.d.ts +0 -3
  20. package/dist/commands/domains.d.ts.map +0 -1
  21. package/dist/commands/domains.js +0 -38
  22. package/dist/commands/domains.js.map +0 -1
  23. package/dist/commands/env.d.ts +0 -3
  24. package/dist/commands/env.d.ts.map +0 -1
  25. package/dist/commands/env.js +0 -74
  26. package/dist/commands/env.js.map +0 -1
  27. package/dist/commands/init.d.ts +0 -3
  28. package/dist/commands/init.d.ts.map +0 -1
  29. package/dist/commands/init.js +0 -201
  30. package/dist/commands/init.js.map +0 -1
  31. package/dist/commands/lightspeed.d.ts +0 -3
  32. package/dist/commands/lightspeed.d.ts.map +0 -1
  33. package/dist/commands/lightspeed.js +0 -165
  34. package/dist/commands/lightspeed.js.map +0 -1
  35. package/dist/commands/login.d.ts +0 -3
  36. package/dist/commands/login.d.ts.map +0 -1
  37. package/dist/commands/login.js +0 -131
  38. package/dist/commands/login.js.map +0 -1
  39. package/dist/commands/logs.d.ts +0 -3
  40. package/dist/commands/logs.d.ts.map +0 -1
  41. package/dist/commands/logs.js +0 -48
  42. package/dist/commands/logs.js.map +0 -1
  43. package/dist/commands/quicklaunch.d.ts +0 -3
  44. package/dist/commands/quicklaunch.d.ts.map +0 -1
  45. package/dist/commands/quicklaunch.js +0 -324
  46. package/dist/commands/quicklaunch.js.map +0 -1
  47. package/dist/commands/status.d.ts +0 -3
  48. package/dist/commands/status.d.ts.map +0 -1
  49. package/dist/commands/status.js +0 -77
  50. package/dist/commands/status.js.map +0 -1
  51. package/dist/config.d.ts +0 -12
  52. package/dist/config.d.ts.map +0 -1
  53. package/dist/config.js +0 -41
  54. package/dist/config.js.map +0 -1
  55. package/dist/context.d.ts +0 -10
  56. package/dist/context.d.ts.map +0 -1
  57. package/dist/context.js +0 -27
  58. package/dist/context.js.map +0 -1
  59. package/dist/detect.d.ts +0 -20
  60. package/dist/detect.d.ts.map +0 -1
  61. package/dist/detect.js +0 -281
  62. package/dist/detect.js.map +0 -1
  63. package/dist/index.d.ts +0 -3
  64. package/dist/index.d.ts.map +0 -1
  65. package/dist/index.js.map +0 -1
package/package.json CHANGED
@@ -1,34 +1,37 @@
1
- {
2
- "name": "@launchmatic/cli",
3
- "version": "0.2.0",
4
- "description": "Launchmatic CLI — deploy from your terminal",
5
- "private": false,
6
- "type": "module",
7
- "bin": {
8
- "lm": "dist/index.js",
9
- "c": "dist/c.js"
10
- },
11
- "files": [
12
- "dist"
13
- ],
14
- "scripts": {
15
- "dev": "tsx src/index.ts",
16
- "build": "tsc",
17
- "start": "node dist/index.js"
18
- },
19
- "dependencies": {
20
- "chalk": "^5.3.0",
21
- "commander": "^12.1.0",
22
- "conf": "^13.0.1",
23
- "open": "^10.1.0",
24
- "ora": "^8.1.0",
25
- "ws": "^8.18.0"
26
- },
27
- "devDependencies": {
28
- "@launchmatic/tsconfig": "workspace:*",
29
- "@types/node": "^22.0.0",
30
- "@types/ws": "^8.5.12",
31
- "tsx": "^4.19.0",
32
- "typescript": "^5.6.3"
33
- }
34
- }
1
+ {
2
+ "name": "@launchmatic/cli",
3
+ "version": "0.3.1",
4
+ "description": "Launchmatic CLI — deploy from your terminal",
5
+ "private": false,
6
+ "type": "module",
7
+ "bin": {
8
+ "lm": "dist/index.js",
9
+ "c": "dist/c.js"
10
+ },
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "scripts": {
15
+ "dev": "tsx src/index.ts",
16
+ "build": "tsup",
17
+ "start": "node dist/index.js"
18
+ },
19
+ "dependencies": {
20
+ "playwright-core": "^1.58.2"
21
+ },
22
+ "devDependencies": {
23
+ "@launchmatic/tsconfig": "workspace:*",
24
+ "@launchmatic/validator": "workspace:*",
25
+ "@types/node": "^22.0.0",
26
+ "@types/ws": "^8.5.12",
27
+ "chalk": "^5.3.0",
28
+ "commander": "^12.1.0",
29
+ "conf": "^13.0.1",
30
+ "open": "^10.1.0",
31
+ "ora": "^8.1.0",
32
+ "tsup": "^8.5.1",
33
+ "tsx": "^4.19.0",
34
+ "typescript": "^5.6.3",
35
+ "ws": "^8.18.0"
36
+ }
37
+ }
package/dist/api.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function api<T = unknown>(path: string, options?: RequestInit): Promise<T>;
2
- //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAuCA,wBAAsB,GAAG,CAAC,CAAC,GAAG,OAAO,EACnC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,CAAC,CAAC,CAqCZ"}
package/dist/api.js DELETED
@@ -1,70 +0,0 @@
1
- import { getApiUrl, getTokens, setTokens } from "./config.js";
2
- class ApiError extends Error {
3
- status;
4
- constructor(status, message) {
5
- super(message);
6
- this.status = status;
7
- this.name = "ApiError";
8
- }
9
- }
10
- async function refreshAccessToken() {
11
- const { refreshToken } = getTokens();
12
- if (!refreshToken)
13
- return false;
14
- try {
15
- const res = await fetch(`${getApiUrl()}/auth/refresh`, {
16
- method: "POST",
17
- headers: {
18
- "Content-Type": "application/json",
19
- Authorization: `Bearer ${refreshToken}`,
20
- },
21
- body: JSON.stringify({ refreshToken }),
22
- });
23
- if (!res.ok)
24
- return false;
25
- const data = (await res.json());
26
- if (data.success && data.accessToken) {
27
- setTokens(data.accessToken, refreshToken);
28
- return true;
29
- }
30
- return false;
31
- }
32
- catch {
33
- return false;
34
- }
35
- }
36
- export async function api(path, options = {}) {
37
- const { accessToken } = getTokens();
38
- const url = `${getApiUrl()}${path}`;
39
- const headers = {
40
- "Content-Type": "application/json",
41
- ...(options.headers || {}),
42
- };
43
- if (accessToken) {
44
- headers["Authorization"] = `Bearer ${accessToken}`;
45
- }
46
- let res = await fetch(url, { ...options, headers });
47
- // Token refresh on 401
48
- if (res.status === 401 && accessToken) {
49
- const refreshed = await refreshAccessToken();
50
- if (refreshed) {
51
- const { accessToken: newToken } = getTokens();
52
- headers["Authorization"] = `Bearer ${newToken}`;
53
- res = await fetch(url, { ...options, headers });
54
- }
55
- }
56
- if (!res.ok) {
57
- let message = `HTTP ${res.status}`;
58
- try {
59
- const body = (await res.json());
60
- if (body.error)
61
- message = body.error;
62
- }
63
- catch {
64
- // ignore parse errors
65
- }
66
- throw new ApiError(res.status, message);
67
- }
68
- return res.json();
69
- }
70
- //# sourceMappingURL=api.js.map
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/c.d.ts DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Shortcut entry point: `c`
4
- *
5
- * Usage:
6
- * c -c a babysitter app that tracks my time (create new app)
7
- * c add a health check endpoint (modify existing service)
8
- * c (interactive prompt)
9
- */
10
- export {};
11
- //# sourceMappingURL=c.d.ts.map
package/dist/c.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../src/c.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
package/dist/c.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"c.js","sourceRoot":"","sources":["../src/c.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function registerDeploy(program: Command): void;
3
- //# sourceMappingURL=deploy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiOrD"}
@@ -1,217 +0,0 @@
1
- import { execFileSync } from "node:child_process";
2
- import chalk from "chalk";
3
- import ora from "ora";
4
- import WebSocket from "ws";
5
- import { api } from "../api.js";
6
- import { isLoggedIn, getApiUrl, getTokens } from "../config.js";
7
- import { readContext } from "../context.js";
8
- import { detectLocal, getGitInfo } from "../detect.js";
9
- export function registerDeploy(program) {
10
- program
11
- .command("deploy")
12
- .description("Build and deploy the current service")
13
- .action(async () => {
14
- if (!isLoggedIn()) {
15
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
16
- process.exitCode = 1;
17
- return;
18
- }
19
- const ctx = readContext();
20
- const cwd = process.cwd();
21
- // Pre-flight: gather git info
22
- let gitInfo = getGitInfo(cwd);
23
- const branch = gitInfo.repoBranch;
24
- // Warn about uncommitted changes
25
- if (gitInfo.hasUncommitted) {
26
- console.log(chalk.yellow("Warning: uncommitted changes won't be included"));
27
- }
28
- // Auto-push if there are unpushed commits
29
- if (gitInfo.hasUnpushed && gitInfo.hasRemote) {
30
- const pushSpinner = ora("Pushing commits to remote...").start();
31
- try {
32
- execFileSync("git", ["push", "origin", branch], {
33
- cwd,
34
- encoding: "utf-8",
35
- stdio: ["pipe", "pipe", "pipe"],
36
- });
37
- pushSpinner.succeed("Pushed commits to remote");
38
- // Re-read git info after push
39
- gitInfo = getGitInfo(cwd);
40
- }
41
- catch (pushErr) {
42
- pushSpinner.fail(chalk.red(`Failed to push: ${pushErr instanceof Error ? pushErr.message : "unknown error"}`));
43
- console.error(chalk.red("Push your commits manually and retry: git push"));
44
- process.exitCode = 1;
45
- return;
46
- }
47
- }
48
- // If no remote, we can't deploy
49
- if (!gitInfo.hasRemote) {
50
- console.error(chalk.red("No git remote found. Add a GitHub remote and push your code first."));
51
- process.exitCode = 1;
52
- return;
53
- }
54
- const commitSha = gitInfo.commitSha || "";
55
- // Deploy summary
56
- const shortSha = commitSha ? commitSha.slice(0, 7) : "unknown";
57
- if (gitInfo.repoOwner && gitInfo.repoName) {
58
- console.log(chalk.dim(`Deploying ${gitInfo.repoOwner}/${gitInfo.repoName} @ ${branch} (${shortSha})`));
59
- }
60
- else {
61
- console.log(chalk.dim(`Deploying @ ${branch} (${shortSha})`));
62
- }
63
- // Auto-diagnose: patch service with locally detected data
64
- const detection = detectLocal(process.cwd());
65
- const patch = {};
66
- if (gitInfo.repoOwner)
67
- patch.repoOwner = gitInfo.repoOwner;
68
- if (gitInfo.repoName)
69
- patch.repoName = gitInfo.repoName;
70
- if (gitInfo.repoBranch)
71
- patch.repoBranch = gitInfo.repoBranch;
72
- if (gitInfo.repoOwner && gitInfo.repoName) {
73
- patch.repoUrl = `https://github.com/${gitInfo.repoOwner}/${gitInfo.repoName}.git`;
74
- }
75
- if (detection.buildCmd)
76
- patch.buildCmd = detection.buildCmd;
77
- if (detection.startCmd)
78
- patch.startCmd = detection.startCmd;
79
- if (detection.port)
80
- patch.port = detection.port;
81
- if (detection.framework)
82
- patch.framework = detection.framework;
83
- if (Object.keys(patch).length > 0) {
84
- try {
85
- await api(`/api/services/${ctx.serviceId}`, {
86
- method: "PATCH",
87
- body: JSON.stringify(patch),
88
- });
89
- }
90
- catch {
91
- // Best-effort — don't block deploy if patch fails
92
- }
93
- }
94
- const spinner = ora("Triggering deployment...").start();
95
- try {
96
- const { data: deployment } = await api("/api/deployments", {
97
- method: "POST",
98
- body: JSON.stringify({
99
- serviceId: ctx.serviceId,
100
- branch,
101
- commitSha,
102
- }),
103
- });
104
- spinner.text = "Building...";
105
- // Stream build logs via WebSocket
106
- const apiUrl = getApiUrl();
107
- const wsUrl = apiUrl.replace(/^http/, "ws");
108
- const { accessToken } = getTokens();
109
- await new Promise((resolve, reject) => {
110
- let statusResolved = false;
111
- // Log stream
112
- const logWs = new WebSocket(`${wsUrl}/ws/logs/${deployment.id}?token=${accessToken}`);
113
- logWs.on("message", (data) => {
114
- const msg = data.toString();
115
- try {
116
- const parsed = JSON.parse(msg);
117
- const line = parsed.message || parsed.line || msg;
118
- spinner.stop();
119
- console.log(chalk.dim(line));
120
- spinner.start();
121
- }
122
- catch {
123
- spinner.stop();
124
- console.log(chalk.dim(msg));
125
- spinner.start();
126
- }
127
- });
128
- logWs.on("error", () => {
129
- // Log streaming is best-effort
130
- });
131
- // Status stream
132
- const statusWs = new WebSocket(`${wsUrl}/ws/status/${deployment.id}?token=${accessToken}`);
133
- statusWs.on("message", (data) => {
134
- const msg = data.toString();
135
- try {
136
- const parsed = JSON.parse(msg);
137
- if (parsed.status === "BUILDING") {
138
- spinner.text = "Building...";
139
- }
140
- else if (parsed.status === "DEPLOYING") {
141
- spinner.text = "Deploying...";
142
- }
143
- else if (parsed.status === "ACTIVE" && !statusResolved) {
144
- statusResolved = true;
145
- logWs.close();
146
- statusWs.close();
147
- const url = parsed.subdomain ||
148
- deployment.subdomain ||
149
- "your service URL";
150
- spinner.succeed(chalk.green(`Deployed → ${chalk.bold(`https://${url}`)}`));
151
- resolve();
152
- }
153
- else if (parsed.status === "FAILED" && !statusResolved) {
154
- statusResolved = true;
155
- logWs.close();
156
- statusWs.close();
157
- spinner.fail(chalk.red(parsed.error || "Deployment failed"));
158
- reject(new Error("Deployment failed"));
159
- }
160
- }
161
- catch {
162
- // Ignore unparseable status messages
163
- }
164
- });
165
- statusWs.on("error", (err) => {
166
- if (!statusResolved) {
167
- statusResolved = true;
168
- logWs.close();
169
- spinner.fail(chalk.red("Lost connection to deployment status"));
170
- reject(err);
171
- }
172
- });
173
- statusWs.on("close", () => {
174
- if (!statusResolved) {
175
- // Poll for final status if WebSocket closes early
176
- statusResolved = true;
177
- logWs.close();
178
- pollDeploymentStatus(deployment.id, spinner)
179
- .then(resolve)
180
- .catch(reject);
181
- }
182
- });
183
- });
184
- }
185
- catch (err) {
186
- const msg = err instanceof Error ? err.message : "Unknown error";
187
- spinner.fail(chalk.red(`Deploy failed: ${msg}`));
188
- if (msg.includes("not found") || msg.includes("404")) {
189
- console.error(chalk.yellow('Service no longer exists. Run "lm init" to re-link.'));
190
- }
191
- process.exitCode = 1;
192
- }
193
- });
194
- }
195
- async function pollDeploymentStatus(deploymentId, spinner) {
196
- for (let i = 0; i < 120; i++) {
197
- await new Promise((r) => setTimeout(r, 5000));
198
- try {
199
- const { data } = await api(`/api/deployments/${deploymentId}`);
200
- if (data.status === "ACTIVE") {
201
- spinner.succeed(chalk.green(`Deployed → ${chalk.bold(`https://${data.subdomain || "your service"}`)}`));
202
- return;
203
- }
204
- if (data.status === "FAILED") {
205
- spinner.fail(chalk.red("Deployment failed"));
206
- process.exitCode = 1;
207
- return;
208
- }
209
- }
210
- catch {
211
- // Keep polling
212
- }
213
- }
214
- spinner.fail(chalk.red("Deployment timed out"));
215
- process.exitCode = 1;
216
- }
217
- //# sourceMappingURL=deploy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function registerDestroy(program: Command): void;
3
- //# sourceMappingURL=destroy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDtD"}
@@ -1,53 +0,0 @@
1
- import readline from "node:readline";
2
- import chalk from "chalk";
3
- import ora from "ora";
4
- import { api } from "../api.js";
5
- import { isLoggedIn } from "../config.js";
6
- import { readContext, removeContext } from "../context.js";
7
- export function registerDestroy(program) {
8
- program
9
- .command("destroy")
10
- .description("Tear down a service")
11
- .action(async () => {
12
- if (!isLoggedIn()) {
13
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
14
- process.exitCode = 1;
15
- return;
16
- }
17
- const ctx = readContext();
18
- try {
19
- // Get service name for confirmation
20
- const { data: service } = await api(`/api/services/${ctx.serviceId}`);
21
- console.log(chalk.red(`\nThis will permanently destroy the service "${chalk.bold(service.name)}" and all its deployments.\n`));
22
- const answer = await prompt(`Type "${service.name}" to confirm: `);
23
- if (answer !== service.name) {
24
- console.log(chalk.dim("Aborted."));
25
- return;
26
- }
27
- const spinner = ora("Destroying service...").start();
28
- await api(`/api/services/${ctx.serviceId}`, {
29
- method: "DELETE",
30
- });
31
- removeContext();
32
- spinner.succeed(chalk.green("Service destroyed"));
33
- }
34
- catch (err) {
35
- console.error(chalk.red(`Failed: ${err instanceof Error ? err.message : "Unknown error"}`));
36
- process.exitCode = 1;
37
- return;
38
- }
39
- });
40
- }
41
- function prompt(question) {
42
- const rl = readline.createInterface({
43
- input: process.stdin,
44
- output: process.stdout,
45
- });
46
- return new Promise((resolve) => {
47
- rl.question(question, (answer) => {
48
- rl.close();
49
- resolve(answer.trim());
50
- });
51
- });
52
- }
53
- //# sourceMappingURL=destroy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAGhC,iBAAiB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YAErC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,gDAAgD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CACvG,CACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,SAAS,OAAO,CAAC,IAAI,gBAAgB,CACtC,CAAC;YAEF,IAAI,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;YAErD,MAAM,GAAG,CAAC,iBAAiB,GAAG,CAAC,SAAS,EAAE,EAAE;gBAC1C,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAClE,CACF,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function registerDomains(program: Command): void;
3
- //# sourceMappingURL=domains.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/commands/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgDtD"}
@@ -1,38 +0,0 @@
1
- import chalk from "chalk";
2
- import { api } from "../api.js";
3
- import { isLoggedIn } from "../config.js";
4
- import { readContext } from "../context.js";
5
- export function registerDomains(program) {
6
- const domains = program
7
- .command("domains")
8
- .description("Manage custom domains");
9
- domains
10
- .command("add <hostname>")
11
- .description("Add a custom domain")
12
- .action(async (hostname) => {
13
- if (!isLoggedIn()) {
14
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
15
- process.exitCode = 1;
16
- return;
17
- }
18
- const ctx = readContext();
19
- try {
20
- const { data } = await api("/api/domains", {
21
- method: "POST",
22
- body: JSON.stringify({ hostname, serviceId: ctx.serviceId }),
23
- });
24
- console.log(chalk.green(`✓ Domain ${chalk.bold(data.hostname)} added`));
25
- console.log();
26
- console.log(chalk.bold("DNS Configuration:"));
27
- console.log(` Add a CNAME record pointing ${chalk.cyan(data.hostname)} to ${chalk.cyan(data.dnsTarget || "your-service.launchmatic.io")}`);
28
- console.log();
29
- console.log(chalk.dim("SSL will be provisioned automatically once DNS is configured."));
30
- }
31
- catch (err) {
32
- console.error(chalk.red(`Failed: ${err instanceof Error ? err.message : "Unknown error"}`));
33
- process.exitCode = 1;
34
- return;
35
- }
36
- });
37
- }
38
- //# sourceMappingURL=domains.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/commands/domains.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAExC,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAGvB,cAAc,EAAE;gBACjB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;aAC7D,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CACT,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,6BAA6B,CAAC,EAAE,CAC/H,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,+DAA+D,CAChE,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAClE,CACF,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function registerEnv(program: Command): void;
3
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0FlD"}
@@ -1,74 +0,0 @@
1
- import chalk from "chalk";
2
- import { api } from "../api.js";
3
- import { isLoggedIn } from "../config.js";
4
- import { readContext } from "../context.js";
5
- export function registerEnv(program) {
6
- const env = program
7
- .command("env")
8
- .description("Manage environment variables");
9
- env
10
- .command("set <pairs...>")
11
- .description("Set environment variables (KEY=VALUE ...)")
12
- .action(async (pairs) => {
13
- if (!isLoggedIn()) {
14
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
15
- process.exitCode = 1;
16
- return;
17
- }
18
- const ctx = readContext();
19
- const vars = [];
20
- for (const pair of pairs) {
21
- const eqIdx = pair.indexOf("=");
22
- if (eqIdx === -1) {
23
- console.error(chalk.red(`Invalid format: "${pair}". Use KEY=VALUE.`));
24
- process.exitCode = 1;
25
- return;
26
- }
27
- vars.push({
28
- key: pair.slice(0, eqIdx),
29
- value: pair.slice(eqIdx + 1),
30
- });
31
- }
32
- try {
33
- await api(`/api/services/${ctx.serviceId}/env`, {
34
- method: "PUT",
35
- body: JSON.stringify({ vars }),
36
- });
37
- console.log(chalk.green(`✓ ${vars.length} variable(s) set`));
38
- }
39
- catch (err) {
40
- console.error(chalk.red(`Failed: ${err instanceof Error ? err.message : "Unknown error"}`));
41
- process.exitCode = 1;
42
- return;
43
- }
44
- });
45
- env
46
- .command("list")
47
- .description("List all environment variables")
48
- .action(async () => {
49
- if (!isLoggedIn()) {
50
- console.error(chalk.red('Not logged in. Run "lm login" first.'));
51
- process.exitCode = 1;
52
- return;
53
- }
54
- const ctx = readContext();
55
- try {
56
- const { data } = await api(`/api/services/${ctx.serviceId}/env`);
57
- if (data.length === 0) {
58
- console.log(chalk.dim("No environment variables set."));
59
- return;
60
- }
61
- const maxKeyLen = Math.max(...data.map((v) => v.key.length));
62
- for (const v of data) {
63
- const masked = v.value.slice(0, 3) + "•".repeat(Math.max(0, v.value.length - 3));
64
- console.log(` ${chalk.bold(v.key.padEnd(maxKeyLen))} ${chalk.dim(masked)}`);
65
- }
66
- }
67
- catch (err) {
68
- console.error(chalk.red(`Failed: ${err instanceof Error ? err.message : "Unknown error"}`));
69
- process.exitCode = 1;
70
- return;
71
- }
72
- });
73
- }
74
- //# sourceMappingURL=env.js.map