@lizard-build/cli 0.1.0 → 0.3.30

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 (184) hide show
  1. package/.github/workflows/release.yml +90 -0
  2. package/AGENTS.md +113 -0
  3. package/README.md +41 -0
  4. package/dist/commands/add.js +318 -45
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/config.d.ts +2 -0
  7. package/dist/commands/config.js +68 -0
  8. package/dist/commands/config.js.map +1 -0
  9. package/dist/commands/docs.d.ts +2 -0
  10. package/dist/commands/docs.js +13 -0
  11. package/dist/commands/docs.js.map +1 -0
  12. package/dist/commands/domain.d.ts +9 -0
  13. package/dist/commands/domain.js +195 -0
  14. package/dist/commands/domain.js.map +1 -0
  15. package/dist/commands/git.js +175 -36
  16. package/dist/commands/git.js.map +1 -1
  17. package/dist/commands/init.d.ts +24 -0
  18. package/dist/commands/init.js +128 -86
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/link.d.ts +7 -0
  21. package/dist/commands/link.js +104 -33
  22. package/dist/commands/link.js.map +1 -1
  23. package/dist/commands/login.js +4 -3
  24. package/dist/commands/login.js.map +1 -1
  25. package/dist/commands/logs.js +223 -30
  26. package/dist/commands/logs.js.map +1 -1
  27. package/dist/commands/open.js +3 -2
  28. package/dist/commands/open.js.map +1 -1
  29. package/dist/commands/port.d.ts +7 -0
  30. package/dist/commands/port.js +49 -0
  31. package/dist/commands/port.js.map +1 -0
  32. package/dist/commands/projects.js +36 -6
  33. package/dist/commands/projects.js.map +1 -1
  34. package/dist/commands/ps.js +32 -39
  35. package/dist/commands/ps.js.map +1 -1
  36. package/dist/commands/redeploy.js +48 -8
  37. package/dist/commands/redeploy.js.map +1 -1
  38. package/dist/commands/regions.js +2 -5
  39. package/dist/commands/regions.js.map +1 -1
  40. package/dist/commands/restart.js +84 -10
  41. package/dist/commands/restart.js.map +1 -1
  42. package/dist/commands/run.d.ts +9 -0
  43. package/dist/commands/run.js +61 -22
  44. package/dist/commands/run.js.map +1 -1
  45. package/dist/commands/scale.d.ts +10 -0
  46. package/dist/commands/scale.js +166 -0
  47. package/dist/commands/scale.js.map +1 -0
  48. package/dist/commands/secrets.js +200 -89
  49. package/dist/commands/secrets.js.map +1 -1
  50. package/dist/commands/service-set.d.ts +49 -0
  51. package/dist/commands/service-set.js +552 -0
  52. package/dist/commands/service-set.js.map +1 -0
  53. package/dist/commands/service-show.d.ts +11 -0
  54. package/dist/commands/service-show.js +44 -0
  55. package/dist/commands/service-show.js.map +1 -0
  56. package/dist/commands/service.d.ts +8 -0
  57. package/dist/commands/service.js +262 -0
  58. package/dist/commands/service.js.map +1 -0
  59. package/dist/commands/skill.d.ts +2 -0
  60. package/dist/commands/skill.js +146 -0
  61. package/dist/commands/skill.js.map +1 -0
  62. package/dist/commands/ssh.d.ts +2 -0
  63. package/dist/commands/ssh.js +161 -0
  64. package/dist/commands/ssh.js.map +1 -0
  65. package/dist/commands/status.d.ts +7 -0
  66. package/dist/commands/status.js +49 -38
  67. package/dist/commands/status.js.map +1 -1
  68. package/dist/commands/unlink.d.ts +5 -0
  69. package/dist/commands/unlink.js +18 -0
  70. package/dist/commands/unlink.js.map +1 -0
  71. package/dist/commands/up.d.ts +9 -0
  72. package/dist/commands/up.js +417 -0
  73. package/dist/commands/up.js.map +1 -0
  74. package/dist/commands/upgrade.d.ts +2 -0
  75. package/dist/commands/upgrade.js +79 -0
  76. package/dist/commands/upgrade.js.map +1 -0
  77. package/dist/commands/whoami.js +26 -6
  78. package/dist/commands/whoami.js.map +1 -1
  79. package/dist/commands/workspace.d.ts +8 -0
  80. package/dist/commands/workspace.js +36 -0
  81. package/dist/commands/workspace.js.map +1 -0
  82. package/dist/index.js +209 -82
  83. package/dist/index.js.map +1 -1
  84. package/dist/lib/api.d.ts +17 -2
  85. package/dist/lib/api.js +85 -51
  86. package/dist/lib/api.js.map +1 -1
  87. package/dist/lib/auth.d.ts +3 -11
  88. package/dist/lib/auth.js +16 -36
  89. package/dist/lib/auth.js.map +1 -1
  90. package/dist/lib/config.d.ts +36 -15
  91. package/dist/lib/config.js +71 -58
  92. package/dist/lib/config.js.map +1 -1
  93. package/dist/lib/format.d.ts +1 -0
  94. package/dist/lib/format.js +17 -4
  95. package/dist/lib/format.js.map +1 -1
  96. package/dist/lib/name.d.ts +11 -0
  97. package/dist/lib/name.js +26 -0
  98. package/dist/lib/name.js.map +1 -0
  99. package/dist/lib/picker.d.ts +32 -0
  100. package/dist/lib/picker.js +91 -0
  101. package/dist/lib/picker.js.map +1 -0
  102. package/dist/lib/resolve.d.ts +85 -0
  103. package/dist/lib/resolve.js +203 -0
  104. package/dist/lib/resolve.js.map +1 -0
  105. package/dist/lib/updater.d.ts +16 -0
  106. package/dist/lib/updater.js +102 -0
  107. package/dist/lib/updater.js.map +1 -0
  108. package/lizard-wrapper.sh +2 -0
  109. package/package.json +11 -3
  110. package/skill-data/core/SKILL.md +239 -0
  111. package/src/commands/add.ts +388 -56
  112. package/src/commands/config.ts +80 -0
  113. package/src/commands/docs.ts +15 -0
  114. package/src/commands/domain.ts +248 -0
  115. package/src/commands/git.ts +201 -40
  116. package/src/commands/init.ts +149 -100
  117. package/src/commands/link.ts +127 -35
  118. package/src/commands/login.ts +4 -3
  119. package/src/commands/logs.ts +283 -27
  120. package/src/commands/open.ts +3 -2
  121. package/src/commands/port.ts +57 -0
  122. package/src/commands/projects.ts +43 -6
  123. package/src/commands/ps.ts +39 -60
  124. package/src/commands/redeploy.ts +51 -10
  125. package/src/commands/regions.ts +2 -6
  126. package/src/commands/restart.ts +84 -10
  127. package/src/commands/run.ts +68 -24
  128. package/src/commands/scale.ts +216 -0
  129. package/src/commands/secrets.ts +277 -100
  130. package/src/commands/service-set.ts +669 -0
  131. package/src/commands/service-show.ts +52 -0
  132. package/src/commands/service.ts +298 -0
  133. package/src/commands/skill.ts +157 -0
  134. package/src/commands/ssh.ts +176 -0
  135. package/src/commands/status.ts +51 -46
  136. package/src/commands/unlink.ts +17 -0
  137. package/src/commands/up.ts +461 -0
  138. package/src/commands/upgrade.ts +87 -0
  139. package/src/commands/whoami.ts +34 -6
  140. package/src/commands/workspace.ts +44 -0
  141. package/src/index.ts +219 -85
  142. package/src/lib/api.ts +114 -51
  143. package/src/lib/auth.ts +22 -46
  144. package/src/lib/config.ts +100 -65
  145. package/src/lib/format.ts +18 -4
  146. package/src/lib/name.ts +27 -0
  147. package/src/lib/picker.ts +133 -0
  148. package/src/lib/resolve.ts +285 -0
  149. package/src/lib/updater.ts +106 -0
  150. package/test/cli.test.ts +491 -0
  151. package/test/fixtures/hello-app/Dockerfile +5 -0
  152. package/test/fixtures/hello-app/index.js +5 -0
  153. package/test/unit/api.test.ts +66 -0
  154. package/test/unit/config.test.ts +94 -0
  155. package/test/unit/init.test.ts +211 -0
  156. package/test/unit/json.test.ts +208 -0
  157. package/test/unit/picker.test.ts +161 -0
  158. package/test/unit/resolve.test.ts +124 -0
  159. package/test/unit/service-set.test.ts +355 -0
  160. package/vitest.config.ts +10 -0
  161. package/dist/commands/connect.d.ts +0 -2
  162. package/dist/commands/connect.js +0 -117
  163. package/dist/commands/connect.js.map +0 -1
  164. package/dist/commands/context.d.ts +0 -2
  165. package/dist/commands/context.js +0 -71
  166. package/dist/commands/context.js.map +0 -1
  167. package/dist/commands/deploy.d.ts +0 -2
  168. package/dist/commands/deploy.js +0 -120
  169. package/dist/commands/deploy.js.map +0 -1
  170. package/dist/commands/destroy.d.ts +0 -2
  171. package/dist/commands/destroy.js +0 -51
  172. package/dist/commands/destroy.js.map +0 -1
  173. package/dist/commands/update.d.ts +0 -2
  174. package/dist/commands/update.js +0 -41
  175. package/dist/commands/update.js.map +0 -1
  176. package/dist/commands/version.d.ts +0 -2
  177. package/dist/commands/version.js +0 -37
  178. package/dist/commands/version.js.map +0 -1
  179. package/src/commands/connect.ts +0 -145
  180. package/src/commands/context.ts +0 -93
  181. package/src/commands/deploy.ts +0 -153
  182. package/src/commands/destroy.ts +0 -51
  183. package/src/commands/update.ts +0 -44
  184. package/src/commands/version.ts +0 -37
@@ -1,2 +1,26 @@
1
1
  import { Command } from "commander";
2
+ import { type Workspace } from "../lib/api.js";
3
+ import { type ProjectLink } from "../lib/config.js";
4
+ /**
5
+ * Ensure the current directory is linked to a project. If already linked and
6
+ * `force` is false, returns the existing link. Otherwise runs the
7
+ * create-or-select flow.
8
+ *
9
+ * Flow (mirrors Railway's `link` wizard):
10
+ * 1. Workspace — selected by --workspace, single workspace auto-pick,
11
+ * or interactive select. Skipped when only one workspace exists.
12
+ * 2. Project — matched by --name within the workspace, picked from the
13
+ * workspace's project list, or created.
14
+ *
15
+ * `projectName` (from --name / --project) is matched against existing
16
+ * projects inside the resolved workspace; if not found, a new project
17
+ * with that name is created in the resolved workspace.
18
+ */
19
+ export declare function ensureLinked(opts?: {
20
+ projectName?: string;
21
+ workspaceFlag?: string;
22
+ force?: boolean;
23
+ relinkPrompt?: boolean;
24
+ }): Promise<ProjectLink>;
2
25
  export declare function registerInit(program: Command): void;
26
+ export type { Workspace };
@@ -1,106 +1,148 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
1
  import chalk from "chalk";
2
+ import path from "node:path";
4
3
  import * as p from "@clack/prompts";
5
- import { api } from "../lib/api.js";
6
- import { findProjectConfig, saveProjectConfig, } from "../lib/config.js";
4
+ import { api, withQuery } from "../lib/api.js";
5
+ import { getProjectLink, setProjectLink, } from "../lib/config.js";
7
6
  import { success, info, isJSONMode, printJSON, isTTY, } from "../lib/format.js";
8
- /** Detect framework from files in cwd */
9
- function detectFramework() {
10
- const cwd = process.cwd();
11
- const has = (f) => fs.existsSync(path.join(cwd, f));
12
- if (has("next.config.js") || has("next.config.mjs") || has("next.config.ts"))
13
- return { name: "Next.js", port: 3000, buildCmd: "npm run build", startCmd: "npm start" };
14
- if (has("nuxt.config.ts") || has("nuxt.config.js"))
15
- return { name: "Nuxt", port: 3000, buildCmd: "npm run build", startCmd: "npm start" };
16
- if (has("remix.config.js") || has("remix.config.ts"))
17
- return { name: "Remix", port: 3000, buildCmd: "npm run build", startCmd: "npm start" };
18
- if (has("astro.config.mjs") || has("astro.config.ts"))
19
- return { name: "Astro", port: 4321, buildCmd: "npm run build", startCmd: "npm start" };
20
- if (has("vite.config.ts") || has("vite.config.js"))
21
- return { name: "Vite", port: 3000, buildCmd: "npm run build", startCmd: "npm run preview" };
22
- if (has("Dockerfile"))
23
- return { name: "Docker", port: 8080, buildCmd: "", startCmd: "" };
24
- if (has("go.mod"))
25
- return { name: "Go", port: 8080, buildCmd: "go build -o app .", startCmd: "./app" };
26
- if (has("requirements.txt") || has("pyproject.toml"))
27
- return { name: "Python", port: 8000, buildCmd: "pip install -r requirements.txt", startCmd: "python app.py" };
28
- if (has("package.json"))
29
- return { name: "Node.js", port: 3000, buildCmd: "npm run build", startCmd: "npm start" };
30
- return null;
31
- }
32
- function writeLizardToml(framework) {
33
- const port = framework?.port ?? 3000;
34
- const build = framework?.buildCmd ?? "";
35
- const start = framework?.startCmd ?? "";
36
- let toml = `# lizard.toml\n\n`;
37
- if (build)
38
- toml += `[build]\ncommand = "${build}"\n\n`;
39
- toml += `[deploy]\nport = ${port}\n`;
40
- if (start)
41
- toml += `start_command = "${start}"\n`;
42
- toml += `\n[resources]\ncpu = 1\nmemory = 512\n`;
43
- const tomlPath = path.join(process.cwd(), "lizard.toml");
44
- if (!fs.existsSync(tomlPath)) {
45
- fs.writeFileSync(tomlPath, toml);
46
- }
47
- }
48
- export function registerInit(program) {
49
- program
50
- .command("init")
51
- .description("Create a new project and link current directory")
52
- .option("--name <name>", "Project name")
53
- .action(async (opts) => {
54
- // Check if already initialized
55
- const existing = findProjectConfig();
56
- if (existing) {
57
- throw new Error("Already initialized. Run `lizard link` to change project.");
7
+ import { fetchWorkspaces, pickWorkspace } from "../lib/picker.js";
8
+ /**
9
+ * Ensure the current directory is linked to a project. If already linked and
10
+ * `force` is false, returns the existing link. Otherwise runs the
11
+ * create-or-select flow.
12
+ *
13
+ * Flow (mirrors Railway's `link` wizard):
14
+ * 1. Workspace selected by --workspace, single workspace auto-pick,
15
+ * or interactive select. Skipped when only one workspace exists.
16
+ * 2. Project matched by --name within the workspace, picked from the
17
+ * workspace's project list, or created.
18
+ *
19
+ * `projectName` (from --name / --project) is matched against existing
20
+ * projects inside the resolved workspace; if not found, a new project
21
+ * with that name is created in the resolved workspace.
22
+ */
23
+ export async function ensureLinked(opts = {}) {
24
+ const existing = getProjectLink();
25
+ if (existing && !opts.force) {
26
+ if (!opts.relinkPrompt)
27
+ return existing;
28
+ if (!isTTY()) {
29
+ throw new Error(`Already linked to ${existing.projectName || existing.projectId}. Use --force to relink.`);
58
30
  }
59
- // Detect framework
60
- const framework = detectFramework();
61
- if (framework && !isJSONMode()) {
62
- info(`Detected framework: ${chalk.cyan(framework.name)}`);
31
+ const proceed = await p.confirm({
32
+ message: `Directory is linked to "${existing.projectName || existing.projectId}". Relink?`,
33
+ initialValue: false,
34
+ });
35
+ if (p.isCancel(proceed) || !proceed)
36
+ return existing;
37
+ }
38
+ // 1. Workspace
39
+ const workspaces = await fetchWorkspaces();
40
+ const workspace = await pickWorkspace({
41
+ flag: opts.workspaceFlag,
42
+ projectNameHint: opts.projectName,
43
+ workspaces,
44
+ });
45
+ // 2. Project — pulled from the chosen workspace only
46
+ const projects = await api.get(withQuery("/api/projects", { workspaceId: workspace.id }));
47
+ let project;
48
+ if (opts.projectName) {
49
+ const lower = opts.projectName.toLowerCase();
50
+ const match = projects.find((pr) => pr.name.toLowerCase() === lower ||
51
+ pr.slug.toLowerCase() === lower ||
52
+ pr.id.toLowerCase() === lower);
53
+ project =
54
+ match ??
55
+ (await api.post("/api/projects", {
56
+ name: opts.projectName,
57
+ workspaceId: workspace.id,
58
+ }));
59
+ }
60
+ else if (!isTTY()) {
61
+ project = await api.post("/api/projects", {
62
+ name: path.basename(process.cwd()),
63
+ workspaceId: workspace.id,
64
+ });
65
+ }
66
+ else {
67
+ let action = "create";
68
+ if (projects.length > 0) {
69
+ const choice = await p.select({
70
+ message: `Link a project in ${workspace.name}`,
71
+ options: [
72
+ { value: "create", label: "Create new project" },
73
+ { value: "select", label: "Select existing project" },
74
+ ],
75
+ });
76
+ if (p.isCancel(choice))
77
+ process.exit(5);
78
+ action = choice;
63
79
  }
64
- // Get project name
65
- let projectName = opts.name;
66
- if (!projectName) {
67
- if (!isTTY()) {
68
- throw new Error("--name is required in non-interactive mode");
69
- }
70
- const result = await p.text({
80
+ if (action === "create") {
81
+ const nameRes = await p.text({
71
82
  message: "Project name",
72
83
  defaultValue: path.basename(process.cwd()),
73
84
  placeholder: path.basename(process.cwd()),
74
85
  });
75
- if (p.isCancel(result))
86
+ if (p.isCancel(nameRes))
76
87
  process.exit(5);
77
- projectName = result;
88
+ project = await api.post("/api/projects", {
89
+ name: nameRes,
90
+ workspaceId: workspace.id,
91
+ });
78
92
  }
79
- // Create project via API
80
- const project = await api.post("/api/projects", {
81
- name: projectName,
82
- });
83
- // Save local config
84
- saveProjectConfig({
85
- projectId: project.id,
86
- projectName: project.name,
93
+ else {
94
+ const selected = await p.select({
95
+ message: "Select project",
96
+ options: projects.map((pr) => ({
97
+ value: pr.id,
98
+ label: pr.name,
99
+ hint: pr.id,
100
+ })),
101
+ });
102
+ if (p.isCancel(selected))
103
+ process.exit(5);
104
+ project = projects.find((pr) => pr.id === selected);
105
+ }
106
+ }
107
+ const link = {
108
+ projectId: project.id,
109
+ projectName: project.name,
110
+ workspaceId: workspace.id,
111
+ workspaceName: workspace.name,
112
+ };
113
+ setProjectLink(link);
114
+ return link;
115
+ }
116
+ export function registerInit(program) {
117
+ program
118
+ .command("init")
119
+ .description("Create or select a project and link it to the current directory")
120
+ .option("-n, --name <name>", "Project name (use existing or create if missing)")
121
+ .option("--project <name>", "Alias for --name (kept for backwards compat)")
122
+ .option("-w, --workspace <ws>", "Workspace id, slug, or name")
123
+ .option("--force", "Relink even if this directory is already linked")
124
+ .action(async (opts) => {
125
+ const projectName = opts.name || opts.project;
126
+ const link = await ensureLinked({
127
+ projectName,
128
+ workspaceFlag: opts.workspace,
129
+ force: opts.force,
130
+ relinkPrompt: true,
87
131
  });
88
- // Write lizard.toml
89
- writeLizardToml(framework);
90
132
  if (isJSONMode()) {
91
133
  printJSON({
92
- projectId: project.id,
93
- name: project.name,
94
- framework: framework?.name,
134
+ projectId: link.projectId,
135
+ name: link.projectName,
136
+ workspaceId: link.workspaceId,
137
+ workspaceName: link.workspaceName,
95
138
  });
96
139
  }
97
140
  else {
98
- success(`Project "${chalk.bold(project.name)}" created`);
99
- info(chalk.dim(" Linked to current directory"));
100
- info(chalk.dim(" Config saved to .lizard/config.json"));
101
- if (framework) {
102
- info(chalk.dim(` lizard.toml created for ${framework.name}`));
103
- }
141
+ const wsLabel = link.workspaceName
142
+ ? chalk.dim(` (${link.workspaceName})`)
143
+ : "";
144
+ success(`Linked to ${chalk.bold(link.projectName || link.projectId)}${wsLabel}`);
145
+ info(chalk.dim(" Saved to ~/.lizard/config.json"));
104
146
  }
105
147
  });
106
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
1
  import { Command } from "commander";
2
+ /**
3
+ * `lizard link` — associates the current directory with an existing
4
+ * project and (optionally) service. Each piece can be passed via flags
5
+ * or selected interactively.
6
+ *
7
+ * Order matches Railway's wizard: workspace → project → service.
8
+ */
2
9
  export declare function registerLink(program: Command): void;
@@ -1,49 +1,120 @@
1
1
  import chalk from "chalk";
2
2
  import * as p from "@clack/prompts";
3
- import { api } from "../lib/api.js";
4
- import { saveProjectConfig, findProjectConfig } from "../lib/config.js";
5
- import { success, isJSONMode, printJSON, isTTY } from "../lib/format.js";
3
+ import { api, withQuery } from "../lib/api.js";
4
+ import { setProjectLink } from "../lib/config.js";
5
+ import { isJSONMode, printJSON, isTTY, success } from "../lib/format.js";
6
+ import { fetchWorkspaces, pickWorkspace } from "../lib/picker.js";
7
+ /**
8
+ * `lizard link` — associates the current directory with an existing
9
+ * project and (optionally) service. Each piece can be passed via flags
10
+ * or selected interactively.
11
+ *
12
+ * Order matches Railway's wizard: workspace → project → service.
13
+ */
6
14
  export function registerLink(program) {
7
15
  program
8
16
  .command("link")
9
- .description("Link current directory to an existing project")
10
- .option("--project <id>", "Project ID")
11
- .action(async (opts) => {
12
- let projectId = opts.project;
13
- let projectName;
14
- if (!projectId) {
15
- // Fetch projects and let user pick
16
- const projects = await api.get("/api/projects");
17
- if (projects.length === 0) {
18
- throw new Error("No projects found. Run `lizard init` to create one.");
17
+ .description("Associate the current directory with an existing project")
18
+ .argument("[service]", "Service name or ID (optional)")
19
+ .option("-p, --project <id>", "Project name, slug, or ID")
20
+ .option("-w, --workspace <ws>", "Workspace id, slug, or name")
21
+ .option("-s, --service <name>", "Service name or ID (optional)")
22
+ .action(async (serviceArg, opts) => {
23
+ const projectFlag = opts.project;
24
+ const serviceFlag = serviceArg || opts.service;
25
+ // 1. Workspace
26
+ const workspaces = await fetchWorkspaces();
27
+ const workspace = await pickWorkspace({
28
+ flag: opts.workspace,
29
+ projectNameHint: projectFlag,
30
+ workspaces,
31
+ });
32
+ // 2. Project (within workspace)
33
+ const projects = await api.get(withQuery("/api/projects", { workspaceId: workspace.id }));
34
+ if (projects.length === 0) {
35
+ throw new Error(`No projects in ${workspace.name}. Run \`lizard init\` to create one.`);
36
+ }
37
+ let project;
38
+ if (projectFlag) {
39
+ const lower = projectFlag.toLowerCase();
40
+ const match = projects.find((pr) => pr.id.toLowerCase() === lower ||
41
+ pr.slug?.toLowerCase() === lower ||
42
+ pr.name.toLowerCase() === lower);
43
+ if (!match) {
44
+ throw new Error(`Project "${projectFlag}" not found in ${workspace.name}. Available: ${projects.map((pr) => pr.name).join(", ")}`);
19
45
  }
20
- if (!isTTY()) {
21
- throw new Error("Use --project <id> in non-interactive mode. Available: " +
22
- projects.map((p) => `${p.name} (${p.id})`).join(", "));
46
+ project = match;
47
+ }
48
+ else if (projects.length === 1) {
49
+ project = projects[0];
50
+ }
51
+ else {
52
+ if (!isTTY())
53
+ throw new Error("--project required in non-interactive mode");
54
+ const sel = await p.select({
55
+ message: `Select a project in ${workspace.name}`,
56
+ options: projects.map((pr) => ({ value: pr.id, label: pr.name, hint: pr.id })),
57
+ });
58
+ if (p.isCancel(sel))
59
+ process.exit(5);
60
+ project = projects.find((pr) => pr.id === sel);
61
+ }
62
+ // 3. Service (optional)
63
+ const services = await api
64
+ .get(withQuery(`/api/projects/${project.id}/services`, {
65
+ workspaceId: workspace.id,
66
+ }))
67
+ .catch(() => ({ apps: [], addons: [] }));
68
+ const allServices = [
69
+ ...(services.apps || []),
70
+ ...(services.addons || []),
71
+ ];
72
+ let service = null;
73
+ if (serviceFlag) {
74
+ const lower = serviceFlag.toLowerCase();
75
+ service =
76
+ allServices.find((s) => s.id.toLowerCase() === lower || s.name?.toLowerCase() === lower) || null;
77
+ if (!service) {
78
+ throw new Error(`Service "${serviceFlag}" not found. Available: ${allServices.map((s) => s.name).join(", ")}`);
23
79
  }
24
- const selected = await p.select({
25
- message: "Select project",
26
- options: projects.map((proj) => ({
27
- value: proj.id,
28
- label: proj.name,
29
- hint: proj.id,
30
- })),
80
+ }
81
+ else if (allServices.length > 0 && isTTY()) {
82
+ const choices = [
83
+ { value: "", label: "(none — link only project)" },
84
+ ...allServices.map((s) => ({ value: s.id, label: s.name, hint: s.status })),
85
+ ];
86
+ const sel = await p.select({
87
+ message: "Select a service (optional)",
88
+ options: choices,
31
89
  });
32
- if (p.isCancel(selected))
90
+ if (p.isCancel(sel))
33
91
  process.exit(5);
34
- projectId = selected;
35
- projectName = projects.find((p) => p.id === projectId)?.name;
92
+ if (sel)
93
+ service = allServices.find((s) => s.id === sel);
36
94
  }
37
- const old = findProjectConfig();
38
- saveProjectConfig({ projectId, projectName });
95
+ // Save
96
+ const link = {
97
+ projectId: project.id,
98
+ projectName: project.name,
99
+ workspaceId: workspace.id,
100
+ workspaceName: workspace.name,
101
+ serviceId: service?.id,
102
+ serviceName: service?.name,
103
+ };
104
+ setProjectLink(link);
39
105
  if (isJSONMode()) {
40
- printJSON({ projectId, projectName });
41
- }
42
- else if (old?.projectId && old.projectId !== projectId) {
43
- success(`Relinked to ${chalk.bold(projectName || projectId)} (was ${old.projectName || old.projectId})`);
106
+ printJSON({
107
+ projectId: link.projectId,
108
+ projectName: link.projectName,
109
+ workspaceId: link.workspaceId,
110
+ workspaceName: link.workspaceName,
111
+ serviceId: link.serviceId,
112
+ serviceName: link.serviceName,
113
+ });
44
114
  }
45
115
  else {
46
- success(`Linked to ${chalk.bold(projectName || projectId)}`);
116
+ const wsLabel = link.workspaceName ? chalk.dim(` (${link.workspaceName})`) : "";
117
+ success(`Linked to ${chalk.bold(project.name)}${service ? ` / ${chalk.bold(service.name)}` : ""}${wsLabel}`);
47
118
  }
48
119
  });
49
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzE,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,WAA+B,CAAC;QAEpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,mCAAmC;YACnC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAY,eAAe,CAAC,CAAC;YAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,yDAAyD;oBACvD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACxD,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;gBAC9B,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC/B,KAAK,EAAE,IAAI,CAAC,EAAE;oBACd,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,IAAI,EAAE,IAAI,CAAC,EAAE;iBACd,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,SAAS,GAAG,QAAkB,CAAC;YAC/B,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,iBAAiB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9C,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,GAAG,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,CACL,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,SAAS,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,GAAG,CAChG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
@@ -94,16 +94,17 @@ export function registerLogin(program) {
94
94
  .description("Log in to Lizard")
95
95
  .option("--token <token>", "Authenticate with an API token")
96
96
  .action(async (opts) => {
97
- if (opts.token) {
97
+ const token = opts.token;
98
+ if (token) {
98
99
  // Direct token auth — validate it
99
100
  const res = await fetch(`${getBaseURL()}/api/auth/me`, {
100
- headers: { Authorization: `Bearer ${opts.token}` },
101
+ headers: { Authorization: `Bearer ${token}` },
101
102
  });
102
103
  if (!res.ok)
103
104
  throw new Error("Invalid token");
104
105
  const user = (await res.json());
105
106
  saveCredentials({
106
- accessToken: opts.token,
107
+ accessToken: token,
107
108
  userId: user.id,
108
109
  username: user.username,
109
110
  email: user.email,
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}