@eudiplo/cli 7.1.0 → 7.1.1-main.383f744

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 (171) hide show
  1. package/README.md +194 -67
  2. package/dist/commands/config/index.d.ts +5 -0
  3. package/dist/commands/config/index.d.ts.map +1 -0
  4. package/dist/commands/config/index.js +15 -0
  5. package/dist/commands/config/index.js.map +1 -0
  6. package/dist/commands/config/tenant/action.d.ts +3 -0
  7. package/dist/commands/config/tenant/action.d.ts.map +1 -0
  8. package/dist/commands/config/tenant/action.js +298 -0
  9. package/dist/commands/config/tenant/action.js.map +1 -0
  10. package/dist/commands/config/tenant/index.d.ts +5 -0
  11. package/dist/commands/config/tenant/index.d.ts.map +1 -0
  12. package/dist/commands/config/tenant/index.js +61 -0
  13. package/dist/commands/config/tenant/index.js.map +1 -0
  14. package/dist/commands/config/validate/action.d.ts +4 -0
  15. package/dist/commands/config/validate/action.d.ts.map +1 -0
  16. package/dist/commands/config/validate/action.js +45 -0
  17. package/dist/commands/config/validate/action.js.map +1 -0
  18. package/dist/commands/config/validate/index.d.ts +5 -0
  19. package/dist/commands/config/validate/index.d.ts.map +1 -0
  20. package/dist/commands/config/validate/index.js +18 -0
  21. package/dist/commands/config/validate/index.js.map +1 -0
  22. package/dist/{config-validate → commands/config/validate}/registry.d.ts +1 -1
  23. package/dist/commands/config/validate/registry.d.ts.map +1 -0
  24. package/dist/{config-validate → commands/config/validate}/registry.js +1 -1
  25. package/dist/commands/config/validate/registry.js.map +1 -0
  26. package/dist/commands/config/validate/report.d.ts.map +1 -0
  27. package/dist/commands/config/validate/report.js.map +1 -0
  28. package/dist/commands/config/validate/schemas.d.ts.map +1 -0
  29. package/dist/{config-validate → commands/config/validate}/schemas.js +3 -3
  30. package/dist/commands/config/validate/schemas.js.map +1 -0
  31. package/dist/{config-validate → commands/config/validate}/types.d.ts +1 -1
  32. package/dist/commands/config/validate/types.d.ts.map +1 -0
  33. package/dist/commands/config/validate/types.js.map +1 -0
  34. package/dist/commands/config/validate/validator.d.ts.map +1 -0
  35. package/dist/{config-validate → commands/config/validate}/validator.js +6 -4
  36. package/dist/commands/config/validate/validator.js.map +1 -0
  37. package/dist/commands/demo/action.d.ts +3 -0
  38. package/dist/commands/demo/action.d.ts.map +1 -0
  39. package/dist/commands/demo/action.js +72 -0
  40. package/dist/commands/demo/action.js.map +1 -0
  41. package/dist/commands/demo/index.d.ts +5 -0
  42. package/dist/commands/demo/index.d.ts.map +1 -0
  43. package/dist/commands/demo/index.js +19 -0
  44. package/dist/commands/demo/index.js.map +1 -0
  45. package/dist/commands/deployment/action.d.ts +3 -0
  46. package/dist/commands/deployment/action.d.ts.map +1 -0
  47. package/dist/commands/deployment/action.js +16 -0
  48. package/dist/commands/deployment/action.js.map +1 -0
  49. package/dist/commands/deployment/index.d.ts +5 -0
  50. package/dist/commands/deployment/index.d.ts.map +1 -0
  51. package/dist/commands/deployment/index.js +19 -0
  52. package/dist/commands/deployment/index.js.map +1 -0
  53. package/dist/commands/doctor/action.d.ts +3 -0
  54. package/dist/commands/doctor/action.d.ts.map +1 -0
  55. package/dist/commands/doctor/action.js +12 -0
  56. package/dist/commands/doctor/action.js.map +1 -0
  57. package/dist/commands/doctor/index.d.ts +5 -0
  58. package/dist/commands/doctor/index.d.ts.map +1 -0
  59. package/dist/commands/doctor/index.js +13 -0
  60. package/dist/commands/doctor/index.js.map +1 -0
  61. package/dist/commands/init/action.d.ts +3 -0
  62. package/dist/commands/init/action.d.ts.map +1 -0
  63. package/dist/commands/init/action.js +242 -0
  64. package/dist/commands/init/action.js.map +1 -0
  65. package/dist/commands/init/index.d.ts +5 -0
  66. package/dist/commands/init/index.d.ts.map +1 -0
  67. package/dist/commands/init/index.js +35 -0
  68. package/dist/commands/init/index.js.map +1 -0
  69. package/dist/commands/instance/action.d.ts +3 -0
  70. package/dist/commands/instance/action.d.ts.map +1 -0
  71. package/dist/commands/instance/action.js +20 -0
  72. package/dist/commands/instance/action.js.map +1 -0
  73. package/dist/commands/instance/index.d.ts +5 -0
  74. package/dist/commands/instance/index.d.ts.map +1 -0
  75. package/dist/commands/instance/index.js +23 -0
  76. package/dist/commands/instance/index.js.map +1 -0
  77. package/dist/commands/shared.d.ts +14 -0
  78. package/dist/commands/shared.d.ts.map +1 -0
  79. package/dist/commands/shared.js +36 -0
  80. package/dist/commands/shared.js.map +1 -0
  81. package/dist/commands/status/action.d.ts +3 -0
  82. package/dist/commands/status/action.d.ts.map +1 -0
  83. package/dist/commands/status/action.js +13 -0
  84. package/dist/commands/status/action.js.map +1 -0
  85. package/dist/commands/status/index.d.ts +5 -0
  86. package/dist/commands/status/index.d.ts.map +1 -0
  87. package/dist/commands/status/index.js +13 -0
  88. package/dist/commands/status/index.js.map +1 -0
  89. package/dist/commands/version/action.d.ts +4 -0
  90. package/dist/commands/version/action.d.ts.map +1 -0
  91. package/dist/commands/version/action.js +68 -0
  92. package/dist/commands/version/action.js.map +1 -0
  93. package/dist/commands/version/index.d.ts +6 -0
  94. package/dist/commands/version/index.d.ts.map +1 -0
  95. package/dist/commands/version/index.js +12 -0
  96. package/dist/commands/version/index.js.map +1 -0
  97. package/dist/options.d.ts +2 -0
  98. package/dist/options.d.ts.map +1 -0
  99. package/dist/options.js +5 -0
  100. package/dist/options.js.map +1 -0
  101. package/dist/runtime.d.ts.map +1 -1
  102. package/dist/runtime.js +56 -459
  103. package/dist/runtime.js.map +1 -1
  104. package/dist/{config.d.ts → services/cli-config.d.ts} +2 -2
  105. package/dist/services/cli-config.d.ts.map +1 -0
  106. package/dist/{config.js → services/cli-config.js} +9 -4
  107. package/dist/services/cli-config.js.map +1 -0
  108. package/dist/{compose-template.d.ts → services/compose-project.d.ts} +14 -4
  109. package/dist/services/compose-project.d.ts.map +1 -0
  110. package/dist/services/compose-project.js +181 -0
  111. package/dist/services/compose-project.js.map +1 -0
  112. package/dist/{drivers.d.ts → services/deployment-drivers.d.ts} +9 -3
  113. package/dist/services/deployment-drivers.d.ts.map +1 -0
  114. package/dist/{drivers.js → services/deployment-drivers.js} +66 -11
  115. package/dist/services/deployment-drivers.js.map +1 -0
  116. package/dist/services/deployment-target.d.ts +3 -0
  117. package/dist/services/deployment-target.d.ts.map +1 -0
  118. package/dist/services/deployment-target.js +7 -0
  119. package/dist/services/deployment-target.js.map +1 -0
  120. package/dist/{doctor.d.ts → services/diagnostics.d.ts} +2 -2
  121. package/dist/services/diagnostics.d.ts.map +1 -0
  122. package/dist/{doctor.js → services/diagnostics.js} +1 -1
  123. package/dist/services/diagnostics.js.map +1 -0
  124. package/dist/services/instance-selection.d.ts +3 -0
  125. package/dist/services/instance-selection.d.ts.map +1 -0
  126. package/dist/services/instance-selection.js +13 -0
  127. package/dist/services/instance-selection.js.map +1 -0
  128. package/dist/services/project-directory.d.ts +3 -0
  129. package/dist/services/project-directory.d.ts.map +1 -0
  130. package/dist/services/project-directory.js +14 -0
  131. package/dist/services/project-directory.js.map +1 -0
  132. package/dist/types.d.ts +7 -0
  133. package/dist/types.d.ts.map +1 -1
  134. package/package.json +6 -4
  135. package/templates/docker-compose.yml +5 -4
  136. package/templates/schemas/CreateClientDto.schema.json +1 -0
  137. package/templates/schemas/CredentialConfigCreate.schema.json +55 -0
  138. package/templates/schemas/IssuanceConfig.schema.json +25 -0
  139. package/dist/args.d.ts +0 -4
  140. package/dist/args.d.ts.map +0 -1
  141. package/dist/args.js +0 -46
  142. package/dist/args.js.map +0 -1
  143. package/dist/compose-template.d.ts.map +0 -1
  144. package/dist/compose-template.js +0 -105
  145. package/dist/compose-template.js.map +0 -1
  146. package/dist/config-validate/index.d.ts +0 -4
  147. package/dist/config-validate/index.d.ts.map +0 -1
  148. package/dist/config-validate/index.js +0 -4
  149. package/dist/config-validate/index.js.map +0 -1
  150. package/dist/config-validate/registry.d.ts.map +0 -1
  151. package/dist/config-validate/registry.js.map +0 -1
  152. package/dist/config-validate/report.d.ts.map +0 -1
  153. package/dist/config-validate/report.js.map +0 -1
  154. package/dist/config-validate/schemas.d.ts.map +0 -1
  155. package/dist/config-validate/schemas.js.map +0 -1
  156. package/dist/config-validate/types.d.ts.map +0 -1
  157. package/dist/config-validate/types.js.map +0 -1
  158. package/dist/config-validate/validator.d.ts.map +0 -1
  159. package/dist/config-validate/validator.js.map +0 -1
  160. package/dist/config.d.ts.map +0 -1
  161. package/dist/config.js.map +0 -1
  162. package/dist/doctor.d.ts.map +0 -1
  163. package/dist/doctor.js.map +0 -1
  164. package/dist/drivers.d.ts.map +0 -1
  165. package/dist/drivers.js.map +0 -1
  166. /package/dist/{config-validate → commands/config/validate}/registry.json +0 -0
  167. /package/dist/{config-validate → commands/config/validate}/report.d.ts +0 -0
  168. /package/dist/{config-validate → commands/config/validate}/report.js +0 -0
  169. /package/dist/{config-validate → commands/config/validate}/schemas.d.ts +0 -0
  170. /package/dist/{config-validate → commands/config/validate}/types.js +0 -0
  171. /package/dist/{config-validate → commands/config/validate}/validator.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { mkdir, readFile, writeFile } from "node:fs/promises";
2
- import { dirname, join, resolve } from "node:path";
2
+ import { dirname, isAbsolute, join, resolve } from "node:path";
3
3
  import { homedir } from "node:os";
4
4
  const emptyConfig = () => ({ instances: {} });
5
5
  export function resolveConfigPath(env) {
@@ -82,25 +82,30 @@ function validateInstanceConfig(name, value) {
82
82
  }
83
83
  validateHttpUrl(value.url, `Instance ${name} url`);
84
84
  validateOptionalHttpUrl(value.clientUrl, `Instance ${name} clientUrl`);
85
+ if (typeof value.projectDirectory === "string" && !isAbsolute(value.projectDirectory)) {
86
+ throw new Error(`Instance ${name} projectDirectory must be absolute.`);
87
+ }
85
88
  return {
86
89
  target: value.target,
87
90
  url: value.url,
88
91
  clientUrl: optionalString(value.clientUrl),
89
92
  composeFile: optionalString(value.composeFile),
90
93
  composeFiles: optionalStringArray(value.composeFiles),
94
+ composeProfiles: optionalStringArray(value.composeProfiles, "composeProfiles"),
91
95
  envFile: optionalString(value.envFile),
92
96
  projectName: optionalString(value.projectName),
97
+ projectDirectory: optionalString(value.projectDirectory),
93
98
  };
94
99
  }
95
100
  function optionalString(value) {
96
101
  return typeof value === "string" ? value : undefined;
97
102
  }
98
- function optionalStringArray(value) {
103
+ function optionalStringArray(value, label = "composeFiles") {
99
104
  if (!Array.isArray(value)) {
100
105
  return undefined;
101
106
  }
102
107
  if (value.some((item) => typeof item !== "string")) {
103
- throw new Error("composeFiles must contain only strings.");
108
+ throw new Error(`${label} must contain only strings.`);
104
109
  }
105
110
  return value;
106
111
  }
@@ -120,4 +125,4 @@ function validateHttpUrl(value, label) {
120
125
  throw new Error(`${label} must be an absolute HTTP(S) URL.`);
121
126
  }
122
127
  }
123
- //# sourceMappingURL=config.js.map
128
+ //# sourceMappingURL=cli-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-config.js","sourceRoot":"","sources":["../../src/services/cli-config.ts"],"names":[],"mappings":"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"}
@@ -3,18 +3,28 @@ export declare const defaultComposeOverrideFileName = "eudiplo.compose.override.
3
3
  export declare const defaultEnvFileName = ".eudiplo.env";
4
4
  export declare const demoComposeFileName = "eudiplo.demo.compose.yaml";
5
5
  export declare const demoEnvFileName = ".eudiplo.demo.env";
6
- export declare const demoConfigDirectory = ".eudiplo/demo-config";
6
+ export declare const configDirectoryName = "config";
7
+ export declare const demoConfigDirectory = "config/demo";
7
8
  type ComposeMode = "standard" | "demo";
9
+ export type ComposeDatabase = "sqlite" | "postgres";
10
+ export type ComposeStorage = "local" | "s3";
11
+ export type ComposeKms = "db" | "vault";
8
12
  interface ComposeEnvOptions {
9
13
  mode: ComposeMode;
10
- cliVersion: string;
11
14
  imageTagOverride?: string;
15
+ database?: ComposeDatabase;
16
+ storage?: ComposeStorage;
17
+ kms?: ComposeKms;
18
+ publicUrl?: string;
19
+ authClientId?: string;
20
+ authClientSecret?: string;
12
21
  }
13
22
  export declare function createComposeEnv(options: ComposeEnvOptions): string;
14
- export declare function resolveImageTag(cliVersion: string, imageTagOverride?: string): string;
23
+ export declare function createGlobalKmsConfig(kms: ComposeKms): string;
24
+ export declare function resolveImageTag(imageTagOverride?: string): string;
15
25
  export declare function createComposeFile(): Promise<string>;
16
26
  export declare function createNoClientComposeOverride(): string;
17
27
  export declare function copyBundledDemoConfig(targetDirectory: string, force: boolean): Promise<void>;
18
28
  export declare function hasFiles(directory: string): Promise<boolean>;
19
29
  export {};
20
- //# sourceMappingURL=compose-template.d.ts.map
30
+ //# sourceMappingURL=compose-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-project.d.ts","sourceRoot":"","sources":["../../src/services/compose-project.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,8BAA8B,kCAAkC,CAAC;AAC9E,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAC/D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,eAAO,MAAM,mBAAmB,gBAA2C,CAAC;AAG5E,KAAK,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AACvC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC;AAExC,UAAU,iBAAiB;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA2BnE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CA2B7D;AAuDD,wBAAgB,eAAe,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKzD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAOtD;AAED,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BlG;AAED,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE"}
@@ -0,0 +1,181 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { cp, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { dirname, join } from "node:path";
4
+ import { readCliBinaryAsset, readCliTextAsset } from "../sea-assets.js";
5
+ export const defaultComposeFileName = "eudiplo.compose.yaml";
6
+ export const defaultComposeOverrideFileName = "eudiplo.compose.override.yaml";
7
+ export const defaultEnvFileName = ".eudiplo.env";
8
+ export const demoComposeFileName = "eudiplo.demo.compose.yaml";
9
+ export const demoEnvFileName = ".eudiplo.demo.env";
10
+ export const configDirectoryName = "config";
11
+ const demoTenantId = "demo";
12
+ export const demoConfigDirectory = `${configDirectoryName}/${demoTenantId}`;
13
+ const demoConfigManifestAssetKey = "templates/demo-config.manifest.json";
14
+ export function createComposeEnv(options) {
15
+ const imageTag = resolveImageTag(options.imageTagOverride);
16
+ const envFileName = options.mode === "demo" ? demoEnvFileName : defaultEnvFileName;
17
+ const database = options.mode === "demo" ? "sqlite" : (options.database ?? "sqlite");
18
+ const storage = options.mode === "demo" ? "local" : (options.storage ?? "local");
19
+ const kms = options.mode === "demo" ? "db" : (options.kms ?? "db");
20
+ const publicUrl = options.publicUrl ?? "http://localhost:3000";
21
+ const authClientId = options.authClientId ?? "root";
22
+ const authClientSecret = options.authClientSecret ?? "root";
23
+ const lines = [
24
+ `EUDIPLO_ENV_FILE=${envFileName}`,
25
+ `EUDIPLO_IMAGE=ghcr.io/openwallet-foundation/eudiplo:${imageTag}`,
26
+ `EUDIPLO_CLIENT_IMAGE=ghcr.io/openwallet-foundation/eudiplo-client:${imageTag}`,
27
+ ...(options.mode === "demo" ? ["EUDIPLO_BIND_ADDRESS=127.0.0.1"] : []),
28
+ `EUDIPLO_CONFIG_MOUNT=./${configDirectoryName}:/app/config`,
29
+ "CONFIG_FOLDER=/app/config",
30
+ "CONFIG_IMPORT=true",
31
+ "CONFIG_IMPORT_FORCE=false",
32
+ `PUBLIC_URL=${escapeEnvValue(publicUrl)}`,
33
+ `MASTER_SECRET=${randomBytes(32).toString("base64")}`,
34
+ `AUTH_CLIENT_ID=${escapeEnvValue(authClientId)}`,
35
+ `AUTH_CLIENT_SECRET=${escapeEnvValue(authClientSecret)}`,
36
+ ];
37
+ lines.push("", ...databaseEnv(database), "", ...storageEnv(storage), "", ...kmsEnv(kms));
38
+ return `${lines.join("\n")}\n`;
39
+ }
40
+ export function createGlobalKmsConfig(kms) {
41
+ const providers = [
42
+ {
43
+ id: "db",
44
+ type: "db",
45
+ description: "Database-backed key provider",
46
+ },
47
+ ];
48
+ if (kms === "vault") {
49
+ providers.push({
50
+ id: "vault",
51
+ type: "vault",
52
+ description: "Local HashiCorp Vault",
53
+ vaultUrl: "${VAULT_ADDR}",
54
+ vaultToken: "${VAULT_TOKEN}",
55
+ });
56
+ }
57
+ return `${JSON.stringify({
58
+ defaultProvider: kms,
59
+ providers,
60
+ }, null, 4)}\n`;
61
+ }
62
+ function databaseEnv(database) {
63
+ if (database === "sqlite") {
64
+ return ["DB_TYPE=sqlite"];
65
+ }
66
+ return [
67
+ "DB_TYPE=postgres",
68
+ "DB_HOST=postgres",
69
+ "DB_PORT=5432",
70
+ "DB_USERNAME=eudiplo",
71
+ `DB_PASSWORD=${randomSecret()}`,
72
+ "DB_DATABASE=eudiplo",
73
+ ];
74
+ }
75
+ function storageEnv(storage) {
76
+ if (storage === "local") {
77
+ return ["STORAGE_DRIVER=local", "LOCAL_STORAGE_DIR=/app/uploads"];
78
+ }
79
+ const minioPassword = randomSecret();
80
+ return [
81
+ "STORAGE_DRIVER=s3",
82
+ "S3_ENDPOINT=http://minio:9000",
83
+ "S3_REGION=us-east-1",
84
+ "S3_ACCESS_KEY_ID=minioadmin",
85
+ `S3_SECRET_ACCESS_KEY=${minioPassword}`,
86
+ "S3_BUCKET=uploads",
87
+ "S3_FORCE_PATH_STYLE=true",
88
+ "MINIO_ROOT_USER=minioadmin",
89
+ `MINIO_ROOT_PASSWORD=${minioPassword}`,
90
+ ];
91
+ }
92
+ function kmsEnv(kms) {
93
+ if (kms === "db") {
94
+ return ["KM_TYPE=db"];
95
+ }
96
+ return ["KM_TYPE=vault", "VAULT_ADDR=http://vault:8200", "VAULT_TOKEN=root"];
97
+ }
98
+ function randomSecret() {
99
+ return randomBytes(24).toString("base64url");
100
+ }
101
+ function escapeEnvValue(value) {
102
+ if (!/[\s#$'"\\]/.test(value)) {
103
+ return value;
104
+ }
105
+ return `'${value.replaceAll("\\", "\\\\").replaceAll("'", "\\'")}'`;
106
+ }
107
+ export function resolveImageTag(imageTagOverride) {
108
+ if (imageTagOverride && imageTagOverride.length > 0) {
109
+ return imageTagOverride;
110
+ }
111
+ return "latest";
112
+ }
113
+ export async function createComposeFile() {
114
+ return readCliTextAsset("templates/docker-compose.yml", new URL("../../templates/docker-compose.yml", import.meta.url));
115
+ }
116
+ export function createNoClientComposeOverride() {
117
+ return [
118
+ "services:",
119
+ " eudiplo-client:",
120
+ ' profiles: ["disabled"]',
121
+ "",
122
+ ].join("\n");
123
+ }
124
+ export async function copyBundledDemoConfig(targetDirectory, force) {
125
+ if (force) {
126
+ await rm(targetDirectory, { recursive: true, force: true });
127
+ }
128
+ const manifest = await readDemoConfigManifest();
129
+ if (manifest) {
130
+ await mkdir(targetDirectory, { recursive: true, mode: 0o700 });
131
+ for (const relativePath of manifest) {
132
+ const normalized = normalizeRelativePath(relativePath);
133
+ const destinationPath = join(targetDirectory, normalized);
134
+ await mkdir(dirname(destinationPath), { recursive: true, mode: 0o700 });
135
+ const contents = await readCliBinaryAsset(`templates/demo-config/${normalized}`, new URL(`../../templates/demo-config/${normalized}`, import.meta.url));
136
+ await writeFile(destinationPath, contents, { mode: 0o600 });
137
+ }
138
+ return;
139
+ }
140
+ const fallbackDirectory = new URL("../../../../assets/config/demo/", import.meta.url);
141
+ await cp(fallbackDirectory, targetDirectory, {
142
+ recursive: true,
143
+ force,
144
+ errorOnExist: !force,
145
+ });
146
+ }
147
+ export async function hasFiles(directory) {
148
+ try {
149
+ const entries = await readdir(directory);
150
+ return entries.length > 0;
151
+ }
152
+ catch {
153
+ return false;
154
+ }
155
+ }
156
+ async function readDemoConfigManifest() {
157
+ try {
158
+ const manifestText = await readCliTextAsset(demoConfigManifestAssetKey, new URL("../../templates/demo-config.manifest.json", import.meta.url));
159
+ const parsed = JSON.parse(manifestText);
160
+ if (Array.isArray(parsed) && parsed.every((item) => typeof item === "string")) {
161
+ return parsed;
162
+ }
163
+ }
164
+ catch {
165
+ try {
166
+ const localManifest = await readFile(new URL("../../templates/demo-config.manifest.json", import.meta.url), "utf8");
167
+ const parsed = JSON.parse(localManifest);
168
+ if (Array.isArray(parsed) && parsed.every((item) => typeof item === "string")) {
169
+ return parsed;
170
+ }
171
+ }
172
+ catch {
173
+ return undefined;
174
+ }
175
+ }
176
+ return undefined;
177
+ }
178
+ function normalizeRelativePath(pathValue) {
179
+ return pathValue.replaceAll("\\", "/").replace(/^\/+/, "");
180
+ }
181
+ //# sourceMappingURL=compose-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-project.js","sourceRoot":"","sources":["../../src/services/compose-project.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
- import type { DeploymentDriver, DeploymentTarget, InstanceConfig } from "./types.js";
1
+ import type { DeploymentDriver, DeploymentTarget, InstanceConfig } from "../types.js";
2
2
  export declare const drivers: Record<DeploymentTarget, DeploymentDriver>;
3
3
  export declare function ensureComposeProject(cwd: string, options: {
4
4
  mode?: "standard" | "demo";
5
+ database?: "sqlite" | "postgres";
6
+ storage?: "local" | "s3";
7
+ kms?: "db" | "vault";
8
+ publicUrl?: string;
9
+ authClientId?: string;
10
+ authClientSecret?: string;
11
+ demoTenant?: boolean;
5
12
  noClient?: boolean;
6
13
  force?: boolean;
7
14
  reset?: boolean;
8
- cliVersion: string;
9
15
  imageTagOverride?: string;
10
16
  }): Promise<InstanceConfig>;
11
17
  export declare function demoProjectExists(cwd: string): Promise<boolean>;
12
18
  export declare function unsupportedCommand(command: string, target: DeploymentTarget): string;
13
- //# sourceMappingURL=drivers.d.ts.map
19
+ //# sourceMappingURL=deployment-drivers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-drivers.d.ts","sourceRoot":"","sources":["../../src/services/deployment-drivers.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACR,gBAAgB,EAChB,gBAAgB,EAEhB,cAAc,EACjB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAkC9D,CAAC;AAEF,wBAAsB,oBAAoB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IACL,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACF,OAAO,CAAC,cAAc,CAAC,CA+EzB;AAwCD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAUD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAKpF"}
@@ -1,18 +1,19 @@
1
- import { access, rm, unlink, writeFile } from "node:fs/promises";
1
+ import { access, mkdir, rm, stat, unlink, writeFile } from "node:fs/promises";
2
2
  import { join, resolve } from "node:path";
3
3
  import { spawn } from "node:child_process";
4
- import { copyBundledDemoConfig, createComposeFile, createComposeEnv, createNoClientComposeOverride, demoComposeFileName, demoConfigDirectory, demoEnvFileName, defaultComposeFileName, defaultComposeOverrideFileName, defaultEnvFileName, hasFiles, } from "./compose-template.js";
4
+ import { copyBundledDemoConfig, createComposeFile, createComposeEnv, createGlobalKmsConfig, createNoClientComposeOverride, configDirectoryName, demoComposeFileName, demoConfigDirectory, demoEnvFileName, defaultComposeFileName, defaultComposeOverrideFileName, defaultEnvFileName, hasFiles, } from "./compose-project.js";
5
5
  export const drivers = {
6
6
  compose: {
7
7
  target: "compose",
8
8
  async diagnostics(instance, context) {
9
9
  const messages = [];
10
+ const projectDirectory = instance.projectDirectory ?? context.cwd;
10
11
  if (!(await resolveDockerExecutable())) {
11
12
  messages.push("Docker was not found in a supported install location.");
12
13
  }
13
14
  for (const composeFile of getComposeFiles(instance)) {
14
15
  try {
15
- await access(resolve(context.cwd, composeFile));
16
+ await access(resolve(projectDirectory, composeFile));
16
17
  }
17
18
  catch {
18
19
  messages.push(`Compose file not found: ${composeFile}`);
@@ -38,12 +39,16 @@ export const drivers = {
38
39
  },
39
40
  };
40
41
  export async function ensureComposeProject(cwd, options) {
42
+ await ensureProjectDirectory(cwd);
41
43
  const mode = options.mode ?? "standard";
42
44
  const composeFileName = mode === "demo" ? demoComposeFileName : defaultComposeFileName;
43
45
  const envFileName = mode === "demo" ? demoEnvFileName : defaultEnvFileName;
44
46
  const composePath = join(cwd, composeFileName);
45
47
  const overridePath = join(cwd, defaultComposeOverrideFileName);
46
48
  const envPath = join(cwd, envFileName);
49
+ const configPath = join(cwd, configDirectoryName);
50
+ const globalKmsPath = join(configPath, "kms.json");
51
+ await mkdir(configPath, { recursive: true, mode: 0o700 });
47
52
  if (mode === "demo" && options.reset === true) {
48
53
  await removeDemoProjectAssets(cwd);
49
54
  }
@@ -53,14 +58,22 @@ export async function ensureComposeProject(cwd, options) {
53
58
  if (!(await exists(envPath)) || options.force === true) {
54
59
  await writeFile(envPath, createComposeEnv({
55
60
  mode,
56
- cliVersion: options.cliVersion,
57
61
  imageTagOverride: options.imageTagOverride,
62
+ database: options.database,
63
+ storage: options.storage,
64
+ kms: options.kms,
65
+ publicUrl: options.publicUrl,
66
+ authClientId: options.authClientId,
67
+ authClientSecret: options.authClientSecret,
58
68
  }), {
59
69
  encoding: "utf8",
60
70
  mode: 0o600,
61
71
  });
62
72
  }
63
- if (mode === "demo") {
73
+ if (!(await exists(globalKmsPath)) || options.force === true) {
74
+ await writeFile(globalKmsPath, createGlobalKmsConfig(options.kms ?? "db"), { encoding: "utf8", mode: 0o600 });
75
+ }
76
+ if (mode === "demo" || options.demoTenant === true) {
64
77
  const demoConfigPath = join(cwd, demoConfigDirectory);
65
78
  const hasExistingConfig = await hasFiles(demoConfigPath);
66
79
  if (!hasExistingConfig || options.force === true || options.reset === true) {
@@ -83,20 +96,55 @@ export async function ensureComposeProject(cwd, options) {
83
96
  clientUrl: options.noClient === true ? undefined : "http://localhost:4200",
84
97
  composeFile: defaultComposeFileName,
85
98
  composeFiles,
99
+ composeProfiles: composeProfiles(options),
86
100
  envFile: envFileName,
87
- projectName: "eudiplo-demo",
101
+ projectName: mode === "demo" ? "eudiplo-demo" : "eudiplo",
102
+ projectDirectory: resolve(cwd),
88
103
  };
89
104
  }
105
+ async function ensureProjectDirectory(directory) {
106
+ try {
107
+ const entry = await stat(directory);
108
+ if (!entry.isDirectory()) {
109
+ throw new Error(`Project directory points to a file: ${directory}`);
110
+ }
111
+ }
112
+ catch (error) {
113
+ if (isNodeError(error) && error.code === "ENOENT") {
114
+ await mkdir(directory, { recursive: true, mode: 0o700 });
115
+ return;
116
+ }
117
+ throw error;
118
+ }
119
+ }
120
+ function composeProfiles(options) {
121
+ if (options.mode === "demo") {
122
+ return undefined;
123
+ }
124
+ const profiles = [];
125
+ if (options.database === "postgres") {
126
+ profiles.push("postgres");
127
+ }
128
+ if (options.storage === "s3") {
129
+ profiles.push("s3");
130
+ }
131
+ if (options.kms === "vault") {
132
+ profiles.push("vault");
133
+ }
134
+ return profiles.length > 0 ? profiles : undefined;
135
+ }
90
136
  export async function demoProjectExists(cwd) {
91
137
  return ((await exists(join(cwd, demoComposeFileName))) ||
92
138
  (await exists(join(cwd, demoEnvFileName))) ||
93
- (await exists(join(cwd, demoConfigDirectory))));
139
+ (await exists(join(cwd, demoConfigDirectory))) ||
140
+ (await exists(join(cwd, ".eudiplo/demo-config"))));
94
141
  }
95
142
  async function removeDemoProjectAssets(cwd) {
96
143
  await rm(join(cwd, demoComposeFileName), { force: true });
97
144
  await rm(join(cwd, demoEnvFileName), { force: true });
98
145
  await rm(join(cwd, defaultComposeOverrideFileName), { force: true });
99
146
  await rm(join(cwd, demoConfigDirectory), { recursive: true, force: true });
147
+ await rm(join(cwd, ".eudiplo/demo-config"), { recursive: true, force: true });
100
148
  }
101
149
  export function unsupportedCommand(command, target) {
102
150
  if (target === "external") {
@@ -105,12 +153,16 @@ export function unsupportedCommand(command, target) {
105
153
  return `${command} is not available for ${target} deployments`;
106
154
  }
107
155
  async function runCompose(args, { instance, context }) {
156
+ const projectDirectory = instance.projectDirectory ?? context.cwd;
108
157
  const composeArgs = ["compose"];
109
158
  if (instance.envFile) {
110
- composeArgs.push("--env-file", resolve(context.cwd, instance.envFile));
159
+ composeArgs.push("--env-file", resolve(projectDirectory, instance.envFile));
111
160
  }
112
161
  for (const composeFile of getComposeFiles(instance)) {
113
- composeArgs.push("-f", resolve(context.cwd, composeFile));
162
+ composeArgs.push("-f", resolve(projectDirectory, composeFile));
163
+ }
164
+ for (const profile of instance.composeProfiles ?? []) {
165
+ composeArgs.push("--profile", profile);
114
166
  }
115
167
  if (instance.projectName) {
116
168
  composeArgs.push("--project-name", instance.projectName);
@@ -123,7 +175,7 @@ async function runCompose(args, { instance, context }) {
123
175
  }
124
176
  return new Promise((resolveProcess) => {
125
177
  const child = spawn(dockerExecutable, composeArgs, {
126
- cwd: context.cwd,
178
+ cwd: projectDirectory,
127
179
  env: context.env,
128
180
  stdio: "inherit",
129
181
  });
@@ -154,6 +206,9 @@ async function exists(path) {
154
206
  return false;
155
207
  }
156
208
  }
209
+ function isNodeError(error) {
210
+ return error instanceof Error && "code" in error;
211
+ }
157
212
  function getComposeFiles(instance) {
158
213
  return instance.composeFiles ?? (instance.composeFile ? [instance.composeFile] : []);
159
214
  }
@@ -167,4 +222,4 @@ async function removeIfExists(path) {
167
222
  }
168
223
  }
169
224
  }
170
- //# sourceMappingURL=drivers.js.map
225
+ //# sourceMappingURL=deployment-drivers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-drivers.js","sourceRoot":"","sources":["../../src/services/deployment-drivers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentTarget } from "../types.js";
2
+ export declare function parseTarget(value: string): DeploymentTarget;
3
+ //# sourceMappingURL=deployment-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-target.d.ts","sourceRoot":"","sources":["../../src/services/deployment-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAK3D"}
@@ -0,0 +1,7 @@
1
+ export function parseTarget(value) {
2
+ if (value === "compose" || value === "external") {
3
+ return value;
4
+ }
5
+ throw new Error(`Unsupported target: ${value}`);
6
+ }
7
+ //# sourceMappingURL=deployment-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-target.js","sourceRoot":"","sources":["../../src/services/deployment-target.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,KAAa;IACrC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CommandContext, InstanceConfig } from "./types.js";
1
+ import type { CommandContext, InstanceConfig } from "../types.js";
2
2
  type CheckStatus = "pass" | "warn" | "fail";
3
3
  export interface DoctorCheck {
4
4
  name: string;
@@ -9,4 +9,4 @@ export declare function runDoctor(instance: InstanceConfig, context: CommandCont
9
9
  export declare function hasFailedChecks(checks: DoctorCheck[]): boolean;
10
10
  export declare function formatChecks(checks: DoctorCheck[]): string;
11
11
  export {};
12
- //# sourceMappingURL=doctor.d.ts.map
12
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/services/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,SAAS,CAC3B,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,EACvB,iBAAiB,EAAE,MAAM,EAAE,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAuDxB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAE9D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAI1D"}
@@ -113,4 +113,4 @@ function formatStatus(status) {
113
113
  }
114
114
  return "FAIL";
115
115
  }
116
- //# sourceMappingURL=doctor.js.map
116
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/services/diagnostics.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,QAAwB,EACxB,OAAuB,EACvB,iBAA2B;IAE3B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO;YACH;gBACI,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,8BAA8B;aACzD;SACJ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACvD,OAAO,EACH,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACzB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,aAAa;YAC9B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,qBAAqB;KACjD,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CACP,SAAS;YACL,CAAC,CAAC,MAAM,aAAa,CAAC,qBAAqB,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;YACrE,CAAC,CAAC;gBACI,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,8BAA8B;aAC/D,CACV,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6CAA6C;SACzD,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU;SACtB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAqB;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAqB;IAC9C,OAAO,MAAM;SACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;SAC/E,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,aAAa,CACxB,IAAY,EACZ,OAAY,EACZ,IAAY,EACZ,OAAuB;IAEvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YACd,OAAO;gBACH,IAAI;gBACJ,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,kBAAkB,QAAQ,CAAC,MAAM,EAAE;aAC1D,CAAC;QACN,CAAC;QACD,OAAO;YACH,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,kBAAkB,QAAQ,CAAC,MAAM,EAAE;SAC1D,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,0BAA0B,MAAM,CAAC,KAAK,CAAC,EAAE;SAChE,CAAC;IACN,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAuB;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnE,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;QACjC,OAAO;YACH,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,4DAA4D;SACxE,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,MAAM;QACd,OAAO,EACH,8FAA8F;KACrG,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB;IACrC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliConfig, ParsedArgs } from "../types.js";
2
+ export declare function resolveInstance(config: CliConfig, parsed: ParsedArgs): [string, CliConfig["instances"][string]];
3
+ //# sourceMappingURL=instance-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-selection.d.ts","sourceRoot":"","sources":["../../src/services/instance-selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzD,wBAAgB,eAAe,CAC3B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,GACnB,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAU1C"}
@@ -0,0 +1,13 @@
1
+ import { readStringFlag } from "../options.js";
2
+ export function resolveInstance(config, parsed) {
3
+ const name = readStringFlag(parsed.flags, "instance") ?? config.defaultInstance;
4
+ if (!name) {
5
+ throw new Error("No instance selected. Use --instance or add an instance first.");
6
+ }
7
+ const instance = config.instances[name];
8
+ if (!instance) {
9
+ throw new Error(`Unknown instance: ${name}`);
10
+ }
11
+ return [name, instance];
12
+ }
13
+ //# sourceMappingURL=instance-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-selection.js","sourceRoot":"","sources":["../../src/services/instance-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,eAAe,CAC3B,MAAiB,EACjB,MAAkB;IAElB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC;IAChF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CommandContext, ParsedArgs } from "../types.js";
2
+ export declare function resolveProjectDirectory(parsed: ParsedArgs, context: CommandContext, promptedDirectory?: string): string;
3
+ //# sourceMappingURL=project-directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-directory.d.ts","sourceRoot":"","sources":["../../src/services/project-directory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,EACvB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,MAAM,CAYR"}
@@ -0,0 +1,14 @@
1
+ import { resolve } from "node:path";
2
+ import { readStringFlag } from "../options.js";
3
+ export function resolveProjectDirectory(parsed, context, promptedDirectory) {
4
+ const positionalDirectory = parsed.subject;
5
+ const flagDirectory = readStringFlag(parsed.flags, "directory");
6
+ if (parsed.positionals.length > 0) {
7
+ throw new Error(`Unexpected argument: ${parsed.positionals[0]}`);
8
+ }
9
+ if (positionalDirectory && flagDirectory) {
10
+ throw new Error("Specify the project directory either positionally or with --directory.");
11
+ }
12
+ return resolve(context.cwd, positionalDirectory ?? flagDirectory ?? promptedDirectory ?? ".");
13
+ }
14
+ //# sourceMappingURL=project-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-directory.js","sourceRoot":"","sources":["../../src/services/project-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,uBAAuB,CACnC,MAAkB,EAClB,OAAuB,EACvB,iBAA0B;IAE1B,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3C,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,mBAAmB,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,IAAI,aAAa,IAAI,iBAAiB,IAAI,GAAG,CAAC,CAAC;AAClG,CAAC"}