@prisma/compute-cli 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -14
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/deploy.d.ts +6 -2
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +11 -4
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +10 -3
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/helpers.d.ts +4 -2
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +48 -18
- package/dist/commands/helpers.js.map +1 -1
- package/package.json +2 -2
- package/src/cli.ts +8 -1
- package/src/commands/deploy.ts +12 -4
- package/src/commands/env.ts +13 -3
- package/src/commands/helpers.ts +64 -21
package/README.md
CHANGED
|
@@ -57,20 +57,20 @@ bunx @prisma/compute-cli deploy --path ./my-app
|
|
|
57
57
|
|
|
58
58
|
Key flags:
|
|
59
59
|
|
|
60
|
-
| Flag | Description
|
|
61
|
-
| ----------------- |
|
|
62
|
-
| `--path` | App directory (default: `.`)
|
|
63
|
-
| `--project` | Project ID (prompted interactively if omitted)
|
|
64
|
-
| `--service` | Compute service ID (prompted interactively if omitted)
|
|
65
|
-
| `--entrypoint` |
|
|
66
|
-
| `--serviceName` | Name for a new compute service
|
|
67
|
-
| `--region` | Region for a new compute service
|
|
68
|
-
| `--env KEY=VALUE` | Environment variable (repeatable)
|
|
69
|
-
| `--httpPort` | HTTP port your application listens on
|
|
70
|
-
| `--skipBuild` | Deploy a pre-built artifact (requires `--entrypoint`)
|
|
71
|
-
| `--timeout` | Poll timeout in seconds (default: `120`)
|
|
72
|
-
| `--pollInterval` | Poll interval in ms (default: `1000`)
|
|
73
|
-
| `--json` | Output JSON instead of human-readable text
|
|
60
|
+
| Flag | Description |
|
|
61
|
+
| ----------------- | ---------------------------------------------------------------------------------- |
|
|
62
|
+
| `--path` | App directory (default: `.`) |
|
|
63
|
+
| `--project` | Project ID (prompted interactively if omitted) |
|
|
64
|
+
| `--service` | Compute service ID (prompted interactively if omitted) |
|
|
65
|
+
| `--entrypoint` | File to run at startup, relative to `--path` (falls back to `package.json` `main`) |
|
|
66
|
+
| `--serviceName` | Name for a new compute service |
|
|
67
|
+
| `--region` | Region for a new compute service |
|
|
68
|
+
| `--env KEY=VALUE` | Environment variable (repeatable) |
|
|
69
|
+
| `--httpPort` | HTTP port your application listens on (default: `8080`) |
|
|
70
|
+
| `--skipBuild` | Deploy a pre-built artifact (requires `--entrypoint`) |
|
|
71
|
+
| `--timeout` | Poll timeout in seconds (default: `120`) |
|
|
72
|
+
| `--pollInterval` | Poll interval in ms (default: `1000`) |
|
|
73
|
+
| `--json` | Output JSON instead of human-readable text |
|
|
74
74
|
|
|
75
75
|
Set `PRISMA_COMPUTE_SERVICE_ID` to skip the `--service` flag across all commands:
|
|
76
76
|
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { parseEnvAssignments, parseEnvFromArgs } from "./commands/helpers.ts";
|
|
1
|
+
export { mergeEnvVars, parseEnvAssignments, parseEnvFromArgs, parseEnvVarsFromArgs, parseUnsetEnvFromArgs, parseUnsetEnvKeys, } from "./commands/helpers.ts";
|
|
2
2
|
export declare const mainCommand: import("citty").CommandDef<import("citty").ArgsDef>;
|
|
3
3
|
export declare function runCli(): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AASA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,WAAW,qDActB,CAAC;AAEH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5C"}
|
package/dist/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ import { logoutCommand } from "./commands/logout.js";
|
|
|
6
6
|
import { projectsGroup } from "./commands/projects.js";
|
|
7
7
|
import { servicesGroup } from "./commands/services.js";
|
|
8
8
|
import { versionsGroup } from "./commands/versions.js";
|
|
9
|
-
export { parseEnvAssignments, parseEnvFromArgs } from "./commands/helpers.js";
|
|
9
|
+
export { mergeEnvVars, parseEnvAssignments, parseEnvFromArgs, parseEnvVarsFromArgs, parseUnsetEnvFromArgs, parseUnsetEnvKeys, } from "./commands/helpers.js";
|
|
10
10
|
export const mainCommand = defineCommand({
|
|
11
11
|
meta: {
|
|
12
12
|
name: "compute",
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,oBAAoB;KAClC;IACD,WAAW,EAAE;QACX,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,aAAa;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -14,7 +14,7 @@ export declare const deployCommand: import("citty").CommandDef<{
|
|
|
14
14
|
};
|
|
15
15
|
readonly entrypoint: {
|
|
16
16
|
readonly type: "string";
|
|
17
|
-
readonly description: "
|
|
17
|
+
readonly description: "File to run at startup, relative to --path (falls back to package.json main)";
|
|
18
18
|
};
|
|
19
19
|
readonly serviceName: {
|
|
20
20
|
readonly type: "string";
|
|
@@ -33,9 +33,13 @@ export declare const deployCommand: import("citty").CommandDef<{
|
|
|
33
33
|
readonly type: "string";
|
|
34
34
|
readonly description: "Environment variables (repeat --env KEY=VALUE)";
|
|
35
35
|
};
|
|
36
|
+
readonly unsetEnv: {
|
|
37
|
+
readonly type: "string";
|
|
38
|
+
readonly description: "Remove environment variables (repeat --unset-env KEY)";
|
|
39
|
+
};
|
|
36
40
|
readonly httpPort: {
|
|
37
41
|
readonly type: "string";
|
|
38
|
-
readonly description: "HTTP port your application listens on";
|
|
42
|
+
readonly description: "HTTP port your application listens on (default: 8080)";
|
|
39
43
|
};
|
|
40
44
|
readonly timeout: {
|
|
41
45
|
readonly type: "string";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8HxB,CAAC"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -4,14 +4,17 @@ import { defineCommand } from "citty";
|
|
|
4
4
|
import { createDeployInteraction } from "../lib/interaction.js";
|
|
5
5
|
import { printJsonResult } from "../lib/json-output.js";
|
|
6
6
|
import { createDeployProgress } from "../lib/progress.js";
|
|
7
|
-
import { endFlow, handleError,
|
|
7
|
+
import { endFlow, handleError, parseEnvVarsFromArgs, parsePollOptions, parsePortMapping, resolveServiceId, startFlow, withAuthAndSignal, } from "./helpers.js";
|
|
8
8
|
export const deployCommand = defineCommand({
|
|
9
9
|
meta: { name: "deploy", description: "Build and deploy your application" },
|
|
10
10
|
args: {
|
|
11
11
|
project: { type: "string", description: "Project ID" },
|
|
12
12
|
service: { type: "string", description: "Compute service ID" },
|
|
13
13
|
path: { type: "string", default: ".", description: "App directory" },
|
|
14
|
-
entrypoint: {
|
|
14
|
+
entrypoint: {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "File to run at startup, relative to --path (falls back to package.json main)",
|
|
17
|
+
},
|
|
15
18
|
serviceName: {
|
|
16
19
|
type: "string",
|
|
17
20
|
description: "Name for a new compute service",
|
|
@@ -26,9 +29,13 @@ export const deployCommand = defineCommand({
|
|
|
26
29
|
type: "string",
|
|
27
30
|
description: "Environment variables (repeat --env KEY=VALUE)",
|
|
28
31
|
},
|
|
32
|
+
unsetEnv: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "Remove environment variables (repeat --unset-env KEY)",
|
|
35
|
+
},
|
|
29
36
|
httpPort: {
|
|
30
37
|
type: "string",
|
|
31
|
-
description: "HTTP port your application listens on",
|
|
38
|
+
description: "HTTP port your application listens on (default: 8080)",
|
|
32
39
|
},
|
|
33
40
|
timeout: {
|
|
34
41
|
type: "string",
|
|
@@ -58,7 +65,7 @@ export const deployCommand = defineCommand({
|
|
|
58
65
|
try {
|
|
59
66
|
const sdk = new ComputeClient(managementClient);
|
|
60
67
|
const appPath = path.resolve(process.cwd(), args.path);
|
|
61
|
-
const envVars =
|
|
68
|
+
const envVars = parseEnvVarsFromArgs(rawArgs);
|
|
62
69
|
const portMapping = parsePortMapping(args.httpPort);
|
|
63
70
|
const inputServiceId = resolveServiceId(args);
|
|
64
71
|
let strategy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,QAAQ,EACR,aAAa,EAEb,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,OAAO,EACP,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AA+GA,eAAO,MAAM,QAAQ,qDAGnB,CAAC"}
|
package/dist/commands/env.js
CHANGED
|
@@ -3,7 +3,7 @@ import { defineCommand } from "citty";
|
|
|
3
3
|
import { createDeployInteraction } from "../lib/interaction.js";
|
|
4
4
|
import { printJsonResult } from "../lib/json-output.js";
|
|
5
5
|
import { createUpdateEnvProgress } from "../lib/progress.js";
|
|
6
|
-
import { endFlow, handleError,
|
|
6
|
+
import { endFlow, handleError, parseEnvVarsFromArgs, parsePollOptions, parsePortMapping, printServiceIdHint, resolveServiceId, startFlow, withAuthAndSignal, } from "./helpers.js";
|
|
7
7
|
const envUpdateCommand = defineCommand({
|
|
8
8
|
meta: {
|
|
9
9
|
name: "update",
|
|
@@ -15,7 +15,10 @@ const envUpdateCommand = defineCommand({
|
|
|
15
15
|
env: {
|
|
16
16
|
type: "string",
|
|
17
17
|
description: "Environment variables (repeat --env KEY=VALUE)",
|
|
18
|
-
|
|
18
|
+
},
|
|
19
|
+
unsetEnv: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Remove environment variables (repeat --unset-env KEY)",
|
|
19
22
|
},
|
|
20
23
|
httpPort: {
|
|
21
24
|
type: "string",
|
|
@@ -38,8 +41,12 @@ const envUpdateCommand = defineCommand({
|
|
|
38
41
|
const flowStarted = !args.json && startFlow("Prisma Compute · Env Update");
|
|
39
42
|
try {
|
|
40
43
|
const sdk = new ComputeClient(managementClient);
|
|
41
|
-
const envVars =
|
|
44
|
+
const envVars = parseEnvVarsFromArgs(rawArgs);
|
|
42
45
|
const portMapping = parsePortMapping(args.httpPort);
|
|
46
|
+
if (!envVars && !portMapping) {
|
|
47
|
+
console.error("Nothing to update: provide --env, --unset-env, or --http-port");
|
|
48
|
+
return 1;
|
|
49
|
+
}
|
|
43
50
|
const inputServiceId = resolveServiceId(args);
|
|
44
51
|
const result = await sdk.updateEnv({
|
|
45
52
|
projectId: args.project,
|
package/dist/commands/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { ManagementApiClient } from "@prisma/management-api-sdk";
|
|
2
|
-
import { isInteractiveSession } from "../lib/interaction.ts";
|
|
3
2
|
export declare const PRISMA_COMPUTE_SERVICE_ID_ENV = "PRISMA_COMPUTE_SERVICE_ID";
|
|
4
3
|
export declare function parseEnvAssignments(entries: string[]): Record<string, string>;
|
|
5
4
|
export declare function parseEnvFromArgs(rawArgs: string[]): Record<string, string>;
|
|
5
|
+
export declare function parseUnsetEnvKeys(entries: string[]): string[];
|
|
6
|
+
export declare function parseUnsetEnvFromArgs(rawArgs: string[]): string[];
|
|
7
|
+
export declare function mergeEnvVars(setVars: Record<string, string>, unsetKeys: string[]): Record<string, string | null>;
|
|
8
|
+
export declare function parseEnvVarsFromArgs(rawArgs: string[]): Record<string, string | null> | undefined;
|
|
6
9
|
export declare function parsePortMapping(httpPort: string | undefined): {
|
|
7
10
|
http: number;
|
|
8
11
|
} | undefined;
|
|
@@ -25,5 +28,4 @@ export declare function withAuthAndSignal(fn: (client: ManagementApiClient, sign
|
|
|
25
28
|
export declare function handleError(error: unknown): number;
|
|
26
29
|
export declare function startFlow(title: string): boolean;
|
|
27
30
|
export declare function endFlow(started: boolean, message?: string): void;
|
|
28
|
-
export { isInteractiveSession };
|
|
29
31
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAItE,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AAEzE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe7E;AA8BD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAe7D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjE;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAa/B;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAO3C;AAUD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAG9B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;;;EAKA;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,SAAS,CAIrB;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED,wBAAgB,wBAAwB,IAAI;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,IAAI,IAAI,CAAC;CACjB,CAuBA;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,GACxE,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIlD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIhD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,SAAU,GAAG,IAAI,CAEjE"}
|
package/dist/commands/helpers.js
CHANGED
|
@@ -18,44 +18,70 @@ export function parseEnvAssignments(entries) {
|
|
|
18
18
|
}
|
|
19
19
|
return envVars;
|
|
20
20
|
}
|
|
21
|
-
function
|
|
22
|
-
const
|
|
21
|
+
function extractFlagValues(rawArgs, flag) {
|
|
22
|
+
const values = [];
|
|
23
|
+
const prefix = `${flag}=`;
|
|
23
24
|
for (let i = 0; i < rawArgs.length; i++) {
|
|
24
25
|
const arg = rawArgs[i];
|
|
25
26
|
if (arg === undefined)
|
|
26
27
|
continue;
|
|
27
28
|
if (arg === "--")
|
|
28
29
|
break;
|
|
29
|
-
if (arg ===
|
|
30
|
+
if (arg === flag) {
|
|
30
31
|
const value = rawArgs[i + 1];
|
|
31
32
|
if (value === undefined || value.startsWith("-")) {
|
|
32
|
-
|
|
33
|
+
values.push("");
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
|
-
|
|
36
|
+
values.push(value);
|
|
36
37
|
i++;
|
|
37
38
|
}
|
|
38
39
|
continue;
|
|
39
40
|
}
|
|
40
|
-
if (arg.startsWith(
|
|
41
|
-
|
|
41
|
+
if (arg.startsWith(prefix)) {
|
|
42
|
+
values.push(arg.slice(prefix.length));
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
return
|
|
45
|
+
return values;
|
|
45
46
|
}
|
|
46
47
|
export function parseEnvFromArgs(rawArgs) {
|
|
47
|
-
|
|
48
|
-
const batches = extractEnvBatches(rawArgs);
|
|
49
|
-
return parseEnvAssignments(batches);
|
|
48
|
+
return parseEnvAssignments(extractFlagValues(rawArgs, "--env"));
|
|
50
49
|
}
|
|
51
|
-
export function
|
|
52
|
-
|
|
50
|
+
export function parseUnsetEnvKeys(entries) {
|
|
51
|
+
const keys = [];
|
|
52
|
+
for (const raw of entries) {
|
|
53
|
+
const key = raw.trim();
|
|
54
|
+
if (key.length === 0) {
|
|
55
|
+
throw new Error("Invalid --unset-env value; expected a variable name");
|
|
56
|
+
}
|
|
57
|
+
if (key.includes("=")) {
|
|
58
|
+
throw new Error(`Invalid --unset-env value \`${raw}\`; use --env KEY=VALUE to set a value`);
|
|
59
|
+
}
|
|
60
|
+
keys.push(key);
|
|
61
|
+
}
|
|
62
|
+
return keys;
|
|
63
|
+
}
|
|
64
|
+
export function parseUnsetEnvFromArgs(rawArgs) {
|
|
65
|
+
return parseUnsetEnvKeys(extractFlagValues(rawArgs, "--unset-env"));
|
|
66
|
+
}
|
|
67
|
+
export function mergeEnvVars(setVars, unsetKeys) {
|
|
68
|
+
const conflicts = unsetKeys.filter((key) => Object.hasOwn(setVars, key));
|
|
69
|
+
if (conflicts.length > 0) {
|
|
70
|
+
throw new Error(`Conflicting env flags: ${conflicts.map((k) => `\`${k}\``).join(", ")} appear in both --env and --unset-env`);
|
|
71
|
+
}
|
|
72
|
+
const merged = { ...setVars };
|
|
73
|
+
for (const key of unsetKeys) {
|
|
74
|
+
merged[key] = null;
|
|
75
|
+
}
|
|
76
|
+
return merged;
|
|
77
|
+
}
|
|
78
|
+
export function parseEnvVarsFromArgs(rawArgs) {
|
|
79
|
+
const setVars = parseEnvFromArgs(rawArgs);
|
|
80
|
+
const unsetKeys = parseUnsetEnvFromArgs(rawArgs);
|
|
81
|
+
if (Object.keys(setVars).length === 0 && unsetKeys.length === 0) {
|
|
53
82
|
return undefined;
|
|
54
|
-
const port = Number.parseInt(httpPort, 10);
|
|
55
|
-
if (Number.isNaN(port)) {
|
|
56
|
-
throw new Error(`Invalid --http-port value: ${httpPort}`);
|
|
57
83
|
}
|
|
58
|
-
return
|
|
84
|
+
return mergeEnvVars(setVars, unsetKeys);
|
|
59
85
|
}
|
|
60
86
|
function parseIntOrThrow(value, flag) {
|
|
61
87
|
const n = Number.parseInt(value, 10);
|
|
@@ -64,6 +90,11 @@ function parseIntOrThrow(value, flag) {
|
|
|
64
90
|
}
|
|
65
91
|
return n;
|
|
66
92
|
}
|
|
93
|
+
export function parsePortMapping(httpPort) {
|
|
94
|
+
if (!httpPort)
|
|
95
|
+
return undefined;
|
|
96
|
+
return { http: parseIntOrThrow(httpPort, "--http-port") };
|
|
97
|
+
}
|
|
67
98
|
export function parsePollOptions(args) {
|
|
68
99
|
return {
|
|
69
100
|
timeoutSeconds: parseIntOrThrow(args.timeout, "--timeout"),
|
|
@@ -125,5 +156,4 @@ export function endFlow(started, message = "Done.") {
|
|
|
125
156
|
if (started)
|
|
126
157
|
outro(message);
|
|
127
158
|
}
|
|
128
|
-
export { isInteractiveSession };
|
|
129
159
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,CAAC,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,wBAAwB,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAiB;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/compute-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"repository": "prisma/project-compute",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@clack/prompts": "^1.1.0",
|
|
34
|
-
"@prisma/compute-sdk": "0.
|
|
34
|
+
"@prisma/compute-sdk": "0.7.0",
|
|
35
35
|
"@prisma/credentials-store": "^7.5.0",
|
|
36
36
|
"@prisma/management-api-sdk": "^1.23.0",
|
|
37
37
|
"citty": "^0.2.1",
|
package/src/cli.ts
CHANGED
|
@@ -7,7 +7,14 @@ import { projectsGroup } from "./commands/projects.ts";
|
|
|
7
7
|
import { servicesGroup } from "./commands/services.ts";
|
|
8
8
|
import { versionsGroup } from "./commands/versions.ts";
|
|
9
9
|
|
|
10
|
-
export {
|
|
10
|
+
export {
|
|
11
|
+
mergeEnvVars,
|
|
12
|
+
parseEnvAssignments,
|
|
13
|
+
parseEnvFromArgs,
|
|
14
|
+
parseEnvVarsFromArgs,
|
|
15
|
+
parseUnsetEnvFromArgs,
|
|
16
|
+
parseUnsetEnvKeys,
|
|
17
|
+
} from "./commands/helpers.ts";
|
|
11
18
|
|
|
12
19
|
export const mainCommand = defineCommand({
|
|
13
20
|
meta: {
|
package/src/commands/deploy.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { createDeployProgress } from "../lib/progress.ts";
|
|
|
12
12
|
import {
|
|
13
13
|
endFlow,
|
|
14
14
|
handleError,
|
|
15
|
-
|
|
15
|
+
parseEnvVarsFromArgs,
|
|
16
16
|
parsePollOptions,
|
|
17
17
|
parsePortMapping,
|
|
18
18
|
resolveServiceId,
|
|
@@ -26,7 +26,11 @@ export const deployCommand = defineCommand({
|
|
|
26
26
|
project: { type: "string", description: "Project ID" },
|
|
27
27
|
service: { type: "string", description: "Compute service ID" },
|
|
28
28
|
path: { type: "string", default: ".", description: "App directory" },
|
|
29
|
-
entrypoint: {
|
|
29
|
+
entrypoint: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description:
|
|
32
|
+
"File to run at startup, relative to --path (falls back to package.json main)",
|
|
33
|
+
},
|
|
30
34
|
serviceName: {
|
|
31
35
|
type: "string",
|
|
32
36
|
description: "Name for a new compute service",
|
|
@@ -41,9 +45,13 @@ export const deployCommand = defineCommand({
|
|
|
41
45
|
type: "string",
|
|
42
46
|
description: "Environment variables (repeat --env KEY=VALUE)",
|
|
43
47
|
},
|
|
48
|
+
unsetEnv: {
|
|
49
|
+
type: "string",
|
|
50
|
+
description: "Remove environment variables (repeat --unset-env KEY)",
|
|
51
|
+
},
|
|
44
52
|
httpPort: {
|
|
45
53
|
type: "string",
|
|
46
|
-
description: "HTTP port your application listens on",
|
|
54
|
+
description: "HTTP port your application listens on (default: 8080)",
|
|
47
55
|
},
|
|
48
56
|
timeout: {
|
|
49
57
|
type: "string",
|
|
@@ -76,7 +84,7 @@ export const deployCommand = defineCommand({
|
|
|
76
84
|
try {
|
|
77
85
|
const sdk = new ComputeClient(managementClient);
|
|
78
86
|
const appPath = path.resolve(process.cwd(), args.path);
|
|
79
|
-
const envVars =
|
|
87
|
+
const envVars = parseEnvVarsFromArgs(rawArgs);
|
|
80
88
|
const portMapping = parsePortMapping(args.httpPort);
|
|
81
89
|
|
|
82
90
|
const inputServiceId = resolveServiceId(args);
|
package/src/commands/env.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { createUpdateEnvProgress } from "../lib/progress.ts";
|
|
|
6
6
|
import {
|
|
7
7
|
endFlow,
|
|
8
8
|
handleError,
|
|
9
|
-
|
|
9
|
+
parseEnvVarsFromArgs,
|
|
10
10
|
parsePollOptions,
|
|
11
11
|
parsePortMapping,
|
|
12
12
|
printServiceIdHint,
|
|
@@ -26,7 +26,10 @@ const envUpdateCommand = defineCommand({
|
|
|
26
26
|
env: {
|
|
27
27
|
type: "string",
|
|
28
28
|
description: "Environment variables (repeat --env KEY=VALUE)",
|
|
29
|
-
|
|
29
|
+
},
|
|
30
|
+
unsetEnv: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Remove environment variables (repeat --unset-env KEY)",
|
|
30
33
|
},
|
|
31
34
|
httpPort: {
|
|
32
35
|
type: "string",
|
|
@@ -52,9 +55,16 @@ const envUpdateCommand = defineCommand({
|
|
|
52
55
|
|
|
53
56
|
try {
|
|
54
57
|
const sdk = new ComputeClient(managementClient);
|
|
55
|
-
const envVars =
|
|
58
|
+
const envVars = parseEnvVarsFromArgs(rawArgs);
|
|
56
59
|
const portMapping = parsePortMapping(args.httpPort);
|
|
57
60
|
|
|
61
|
+
if (!envVars && !portMapping) {
|
|
62
|
+
console.error(
|
|
63
|
+
"Nothing to update: provide --env, --unset-env, or --http-port",
|
|
64
|
+
);
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
58
68
|
const inputServiceId = resolveServiceId(args);
|
|
59
69
|
|
|
60
70
|
const result = await sdk.updateEnv({
|
package/src/commands/helpers.ts
CHANGED
|
@@ -22,48 +22,86 @@ export function parseEnvAssignments(entries: string[]): Record<string, string> {
|
|
|
22
22
|
return envVars;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
function
|
|
26
|
-
const
|
|
25
|
+
function extractFlagValues(rawArgs: string[], flag: string): string[] {
|
|
26
|
+
const values: string[] = [];
|
|
27
|
+
const prefix = `${flag}=`;
|
|
27
28
|
|
|
28
29
|
for (let i = 0; i < rawArgs.length; i++) {
|
|
29
30
|
const arg = rawArgs[i];
|
|
30
31
|
if (arg === undefined) continue;
|
|
31
32
|
if (arg === "--") break;
|
|
32
33
|
|
|
33
|
-
if (arg ===
|
|
34
|
+
if (arg === flag) {
|
|
34
35
|
const value = rawArgs[i + 1];
|
|
35
36
|
if (value === undefined || value.startsWith("-")) {
|
|
36
|
-
|
|
37
|
+
values.push("");
|
|
37
38
|
} else {
|
|
38
|
-
|
|
39
|
+
values.push(value);
|
|
39
40
|
i++;
|
|
40
41
|
}
|
|
41
42
|
continue;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
if (arg.startsWith(
|
|
45
|
-
|
|
45
|
+
if (arg.startsWith(prefix)) {
|
|
46
|
+
values.push(arg.slice(prefix.length));
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
return
|
|
50
|
+
return values;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
export function parseEnvFromArgs(rawArgs: string[]): Record<string, string> {
|
|
53
|
-
|
|
54
|
-
const batches = extractEnvBatches(rawArgs);
|
|
55
|
-
return parseEnvAssignments(batches);
|
|
54
|
+
return parseEnvAssignments(extractFlagValues(rawArgs, "--env"));
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
export function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
export function parseUnsetEnvKeys(entries: string[]): string[] {
|
|
58
|
+
const keys: string[] = [];
|
|
59
|
+
for (const raw of entries) {
|
|
60
|
+
const key = raw.trim();
|
|
61
|
+
if (key.length === 0) {
|
|
62
|
+
throw new Error("Invalid --unset-env value; expected a variable name");
|
|
63
|
+
}
|
|
64
|
+
if (key.includes("=")) {
|
|
65
|
+
throw new Error(
|
|
66
|
+
`Invalid --unset-env value \`${raw}\`; use --env KEY=VALUE to set a value`,
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
keys.push(key);
|
|
70
|
+
}
|
|
71
|
+
return keys;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function parseUnsetEnvFromArgs(rawArgs: string[]): string[] {
|
|
75
|
+
return parseUnsetEnvKeys(extractFlagValues(rawArgs, "--unset-env"));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function mergeEnvVars(
|
|
79
|
+
setVars: Record<string, string>,
|
|
80
|
+
unsetKeys: string[],
|
|
81
|
+
): Record<string, string | null> {
|
|
82
|
+
const conflicts = unsetKeys.filter((key) => Object.hasOwn(setVars, key));
|
|
83
|
+
if (conflicts.length > 0) {
|
|
84
|
+
throw new Error(
|
|
85
|
+
`Conflicting env flags: ${conflicts.map((k) => `\`${k}\``).join(", ")} appear in both --env and --unset-env`,
|
|
86
|
+
);
|
|
65
87
|
}
|
|
66
|
-
|
|
88
|
+
|
|
89
|
+
const merged: Record<string, string | null> = { ...setVars };
|
|
90
|
+
for (const key of unsetKeys) {
|
|
91
|
+
merged[key] = null;
|
|
92
|
+
}
|
|
93
|
+
return merged;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function parseEnvVarsFromArgs(
|
|
97
|
+
rawArgs: string[],
|
|
98
|
+
): Record<string, string | null> | undefined {
|
|
99
|
+
const setVars = parseEnvFromArgs(rawArgs);
|
|
100
|
+
const unsetKeys = parseUnsetEnvFromArgs(rawArgs);
|
|
101
|
+
if (Object.keys(setVars).length === 0 && unsetKeys.length === 0) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
return mergeEnvVars(setVars, unsetKeys);
|
|
67
105
|
}
|
|
68
106
|
|
|
69
107
|
function parseIntOrThrow(value: string, flag: string): number {
|
|
@@ -74,6 +112,13 @@ function parseIntOrThrow(value: string, flag: string): number {
|
|
|
74
112
|
return n;
|
|
75
113
|
}
|
|
76
114
|
|
|
115
|
+
export function parsePortMapping(
|
|
116
|
+
httpPort: string | undefined,
|
|
117
|
+
): { http: number } | undefined {
|
|
118
|
+
if (!httpPort) return undefined;
|
|
119
|
+
return { http: parseIntOrThrow(httpPort, "--http-port") };
|
|
120
|
+
}
|
|
121
|
+
|
|
77
122
|
export function parsePollOptions(args: {
|
|
78
123
|
timeout: string;
|
|
79
124
|
pollInterval: string;
|
|
@@ -154,5 +199,3 @@ export function startFlow(title: string): boolean {
|
|
|
154
199
|
export function endFlow(started: boolean, message = "Done."): void {
|
|
155
200
|
if (started) outro(message);
|
|
156
201
|
}
|
|
157
|
-
|
|
158
|
-
export { isInteractiveSession };
|