@eudiplo/cli 7.2.0-main.5fdd9ce → 7.2.0-main.74ba1fb
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 +45 -1
- package/dist/commands/commands/index.d.ts +4 -0
- package/dist/commands/commands/index.d.ts.map +1 -0
- package/dist/commands/commands/index.js +13 -0
- package/dist/commands/commands/index.js.map +1 -0
- package/dist/commands/commands/render.d.ts +4 -0
- package/dist/commands/commands/render.d.ts.map +1 -0
- package/dist/commands/commands/render.js +52 -0
- package/dist/commands/commands/render.js.map +1 -0
- package/dist/commands/completion/action.d.ts +6 -0
- package/dist/commands/completion/action.d.ts.map +1 -0
- package/dist/commands/completion/action.js +133 -0
- package/dist/commands/completion/action.js.map +1 -0
- package/dist/commands/completion/index.d.ts +6 -0
- package/dist/commands/completion/index.d.ts.map +1 -0
- package/dist/commands/completion/index.js +23 -0
- package/dist/commands/completion/index.js.map +1 -0
- package/dist/commands/config/action.d.ts +4 -0
- package/dist/commands/config/action.d.ts.map +1 -0
- package/dist/commands/config/action.js +33 -0
- package/dist/commands/config/action.js.map +1 -0
- package/dist/commands/config/editor/action.d.ts +3 -0
- package/dist/commands/config/editor/action.d.ts.map +1 -0
- package/dist/commands/config/editor/action.js +112 -0
- package/dist/commands/config/editor/action.js.map +1 -0
- package/dist/commands/config/editor/index.d.ts +5 -0
- package/dist/commands/config/editor/index.d.ts.map +1 -0
- package/dist/commands/config/editor/index.js +20 -0
- package/dist/commands/config/editor/index.js.map +1 -0
- package/dist/commands/config/index.d.ts +1 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +22 -0
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/portability/action.d.ts +5 -0
- package/dist/commands/config/portability/action.d.ts.map +1 -0
- package/dist/commands/config/portability/action.js +164 -0
- package/dist/commands/config/portability/action.js.map +1 -0
- package/dist/commands/config/portability/index.d.ts +5 -0
- package/dist/commands/config/portability/index.d.ts.map +1 -0
- package/dist/commands/config/portability/index.js +44 -0
- package/dist/commands/config/portability/index.js.map +1 -0
- package/dist/commands/config/portability/migrations.d.ts +24 -0
- package/dist/commands/config/portability/migrations.d.ts.map +1 -0
- package/dist/commands/config/portability/migrations.js +95 -0
- package/dist/commands/config/portability/migrations.js.map +1 -0
- package/dist/commands/config/portability/migrations.spec.d.ts +2 -0
- package/dist/commands/config/portability/migrations.spec.d.ts.map +1 -0
- package/dist/commands/config/portability/migrations.spec.js +32 -0
- package/dist/commands/config/portability/migrations.spec.js.map +1 -0
- package/dist/commands/config/tenant/action.d.ts.map +1 -1
- package/dist/commands/config/tenant/action.js +16 -6
- package/dist/commands/config/tenant/action.js.map +1 -1
- package/dist/commands/config/tenant/index.d.ts.map +1 -1
- package/dist/commands/config/tenant/index.js.map +1 -1
- package/dist/commands/config/validate/action.d.ts.map +1 -1
- package/dist/commands/config/validate/action.js +3 -1
- package/dist/commands/config/validate/action.js.map +1 -1
- package/dist/commands/config/validate/registry.d.ts +1 -0
- package/dist/commands/config/validate/registry.d.ts.map +1 -1
- package/dist/commands/config/validate/registry.js +1 -1
- package/dist/commands/config/validate/registry.js.map +1 -1
- package/dist/commands/config/validate/registry.json +12 -23
- package/dist/commands/config/validate/report.d.ts.map +1 -1
- package/dist/commands/config/validate/report.js +6 -1
- package/dist/commands/config/validate/report.js.map +1 -1
- package/dist/commands/config/validate/schemas.d.ts +1 -0
- package/dist/commands/config/validate/schemas.d.ts.map +1 -1
- package/dist/commands/config/validate/schemas.js +16 -5
- package/dist/commands/config/validate/schemas.js.map +1 -1
- package/dist/commands/config/validate/types.d.ts.map +1 -1
- package/dist/commands/config/validate/validator.d.ts.map +1 -1
- package/dist/commands/config/validate/validator.js +13 -5
- package/dist/commands/config/validate/validator.js.map +1 -1
- package/dist/commands/demo/action.d.ts.map +1 -1
- package/dist/commands/demo/action.js +2 -1
- package/dist/commands/demo/action.js.map +1 -1
- package/dist/commands/demo/index.d.ts.map +1 -1
- package/dist/commands/demo/index.js.map +1 -1
- package/dist/commands/deployment/action.d.ts.map +1 -1
- package/dist/commands/deployment/action.js +10 -3
- package/dist/commands/deployment/action.js.map +1 -1
- package/dist/commands/deployment/index.d.ts.map +1 -1
- package/dist/commands/deployment/index.js.map +1 -1
- package/dist/commands/doctor/action.d.ts.map +1 -1
- package/dist/commands/doctor/action.js +1 -1
- package/dist/commands/doctor/action.js.map +1 -1
- package/dist/commands/init/action.d.ts.map +1 -1
- package/dist/commands/init/action.js +19 -6
- package/dist/commands/init/action.js.map +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js.map +1 -1
- package/dist/commands/instance/action.d.ts +4 -0
- package/dist/commands/instance/action.d.ts.map +1 -1
- package/dist/commands/instance/action.js +66 -1
- package/dist/commands/instance/action.js.map +1 -1
- package/dist/commands/instance/index.d.ts.map +1 -1
- package/dist/commands/instance/index.js +31 -1
- package/dist/commands/instance/index.js.map +1 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +4 -1
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/status/action.d.ts.map +1 -1
- package/dist/commands/status/action.js.map +1 -1
- package/dist/commands/version/action.d.ts.map +1 -1
- package/dist/commands/version/action.js +3 -1
- package/dist/commands/version/action.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/runtime.d.ts +2 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +8 -1
- package/dist/runtime.js.map +1 -1
- package/dist/sea-assets.d.ts +4 -2
- package/dist/sea-assets.d.ts.map +1 -1
- package/dist/sea-assets.js +6 -3
- package/dist/sea-assets.js.map +1 -1
- package/dist/services/cli-config.d.ts +2 -0
- package/dist/services/cli-config.d.ts.map +1 -1
- package/dist/services/cli-config.js +22 -1
- package/dist/services/cli-config.js.map +1 -1
- package/dist/services/compose-project.d.ts.map +1 -1
- package/dist/services/compose-project.js +14 -6
- package/dist/services/compose-project.js.map +1 -1
- package/dist/services/deployment-drivers.d.ts.map +1 -1
- package/dist/services/deployment-drivers.js +20 -6
- package/dist/services/deployment-drivers.js.map +1 -1
- package/dist/services/diagnostics.d.ts.map +1 -1
- package/dist/services/diagnostics.js +3 -1
- package/dist/services/diagnostics.js.map +1 -1
- package/dist/services/instance-selection.d.ts.map +1 -1
- package/dist/services/instance-selection.js.map +1 -1
- package/dist/services/project-directory.d.ts.map +1 -1
- package/dist/services/project-directory.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/templates/demo-config/issuance/issuance.json +20 -12
- package/templates/demo-config/key-chains/access.json +13 -2
- package/templates/demo-config/key-chains/attestation.json +14 -3
- package/templates/demo-config/key-chains/status-list.json +15 -4
- package/templates/demo-config/key-chains/trust-list.json +13 -2
- package/templates/demo-config/presentation/age-over-18.json +46 -53
- package/templates/demo-config/presentation/pid.json +44 -0
- package/templates/demo-config.manifest.json +1 -0
- package/templates/schemas/AttributeProviderAuth.schema.json +60 -0
- package/templates/schemas/AttributeProviderConfigFile.schema.json +37 -0
- package/templates/schemas/CertImportDto.schema.json +35 -0
- package/templates/schemas/ClientConfigFile.schema.json +37 -0
- package/templates/schemas/ConfigDocumentMetadata.schema.json +25 -0
- package/templates/schemas/CreateClientDto.schema.json +1 -0
- package/templates/schemas/CreateStatusListDto.schema.json +46 -0
- package/templates/schemas/CreateTenantDto.schema.json +117 -0
- package/templates/schemas/CredentialConfigFile.schema.json +37 -0
- package/templates/schemas/DCQL.schema.json +401 -0
- package/templates/schemas/EmbeddedDisclosurePolicy.schema.json +106 -0
- package/templates/schemas/ImportTenantDto.schema.json +69 -0
- package/templates/schemas/IssuanceConfigFile.schema.json +32 -0
- package/templates/schemas/KeyChainConfigFile.schema.json +476 -0
- package/templates/schemas/KeyChainCreateDto.schema.json +66 -0
- package/templates/schemas/KeyChainUpdateDto.schema.json +40 -0
- package/templates/schemas/KmsConfigFile.schema.json +37 -0
- package/templates/schemas/PresentationConfigFile.schema.json +32 -0
- package/templates/schemas/RegistrarConfigFile.schema.json +37 -0
- package/templates/schemas/RotationPolicyCreateDto.schema.json +28 -0
- package/templates/schemas/RotationPolicyUpdateDto.schema.json +25 -0
- package/templates/schemas/SessionStorageConfig.schema.json +24 -0
- package/templates/schemas/StatusListConfig.schema.json +51 -0
- package/templates/schemas/StatusListConfigFile.schema.json +37 -0
- package/templates/schemas/TenantConfigFile.schema.json +230 -0
- package/templates/schemas/TransactionData.schema.json +24 -0
- package/templates/schemas/TrustListConfigFile.schema.json +37 -0
- package/templates/schemas/UpdateAttributeProviderDto.schema.json +93 -0
- package/templates/schemas/UpdateClientDto.schema.json +63 -0
- package/templates/schemas/UpdateStatusListConfigDto.schema.json +85 -0
- package/templates/schemas/UpdateStatusListDto.schema.json +33 -0
- package/templates/schemas/UpdateTenantDto.schema.json +96 -0
- package/templates/schemas/UpdateWebhookEndpointDto.schema.json +93 -0
- package/templates/schemas/VCT.schema.json +37 -0
- package/templates/schemas/WebhookConfig.schema.json +80 -0
- package/templates/schemas/WebhookEndpointConfigFile.schema.json +37 -0
- package/templates/schemas.manifest.json +35 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ The EUDIPLO CLI provides deployment-neutral commands for inspecting an EUDIPLO
|
|
|
4
4
|
instance and deployment-driver commands for local Compose demos.
|
|
5
5
|
|
|
6
6
|
For installation, command reference, configuration validation, standalone
|
|
7
|
-
releases, and local development, see the [CLI documentation](
|
|
7
|
+
releases, and local development, see the [CLI documentation](../docs/docs/deployment/cli.md).
|
|
8
8
|
|
|
9
9
|
## Quick Start
|
|
10
10
|
|
|
@@ -17,6 +17,9 @@ installer instead: `curl -fsSL https://eudiplo.dev/install.sh | bash`
|
|
|
17
17
|
```bash
|
|
18
18
|
npx @eudiplo/cli demo ./eudiplo-demo
|
|
19
19
|
npx @eudiplo/cli instance add production --url https://eudiplo.example.com
|
|
20
|
+
npx @eudiplo/cli instance ls
|
|
21
|
+
npx @eudiplo/cli instance show production
|
|
22
|
+
npx @eudiplo/cli instance use production
|
|
20
23
|
npx @eudiplo/cli doctor --instance production
|
|
21
24
|
```
|
|
22
25
|
|
|
@@ -151,10 +154,30 @@ EUDIPLO_CLI_HOME=/tmp/eudiplo-cli eudiplo config validate
|
|
|
151
154
|
EUDIPLO_CLI_CONFIG=/tmp/eudiplo-cli/config.json eudiplo config validate
|
|
152
155
|
```
|
|
153
156
|
|
|
157
|
+
Print the resolved file path or inspect the validated configuration with:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
eudiplo config path
|
|
161
|
+
eudiplo config show
|
|
162
|
+
eudiplo config show --json
|
|
163
|
+
```
|
|
164
|
+
|
|
154
165
|
Do not store secrets in the CLI config. Commands that need authenticated API
|
|
155
166
|
access read credentials from environment variables such as `EUDIPLO_CLIENT_ID`
|
|
156
167
|
and `EUDIPLO_CLIENT_SECRET`.
|
|
157
168
|
|
|
169
|
+
## Shell Completion
|
|
170
|
+
|
|
171
|
+
The CLI generates completion scripts for Bash, Zsh, Fish, and PowerShell. For
|
|
172
|
+
the current shell session, use one of:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
source <(eudiplo completion bash)
|
|
176
|
+
source <(eudiplo completion zsh)
|
|
177
|
+
eudiplo completion fish | source
|
|
178
|
+
eudiplo completion powershell | Out-String | Invoke-Expression
|
|
179
|
+
```
|
|
180
|
+
|
|
158
181
|
## Single Executable Application
|
|
159
182
|
|
|
160
183
|
To produce a standalone CLI binary with Node.js SEA support, run:
|
|
@@ -229,6 +252,26 @@ when testing changes that require a different backend or client build:
|
|
|
229
252
|
pnpm --filter @eudiplo/cli dev demo ./eudiplo-demo --image-tag main
|
|
230
253
|
```
|
|
231
254
|
|
|
255
|
+
Install the JSON Schemas bundled with the CLI into a VS Code workspace and
|
|
256
|
+
associate them with the local tenant configuration tree:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
eudiplo config editor setup . --config-directory ./config
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
The command merges `.vscode/settings.json` without removing unrelated settings
|
|
263
|
+
or JSONC comments and can safely be rerun after a CLI upgrade.
|
|
264
|
+
|
|
265
|
+
List the complete command tree or render the same reference as Markdown:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
eudiplo commands
|
|
269
|
+
eudiplo commands --format markdown
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
The documentation prebuild uses the Markdown renderer directly, keeping the
|
|
273
|
+
published command reference synchronized with Commander definitions.
|
|
274
|
+
|
|
232
275
|
Use a new project directory or add `--force` when regenerating an existing
|
|
233
276
|
project, because the CLI preserves managed environment files by default. The
|
|
234
277
|
`version` command still reports the CLI package version, but that value is not
|
|
@@ -249,6 +292,7 @@ src/
|
|
|
249
292
|
│ │ └── action.ts # instance persistence
|
|
250
293
|
│ └── config/
|
|
251
294
|
│ ├── index.ts # config group
|
|
295
|
+
│ ├── editor/ # VS Code schema setup command module
|
|
252
296
|
│ ├── validate/ # validation command module
|
|
253
297
|
│ └── tenant/ # tenant-config command module
|
|
254
298
|
├── services/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMrD,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,OAAO,GAC1B,OAAO,CAaT"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command, Option } from "commander";
|
|
2
|
+
import { renderCommandReference, } from "./render.js";
|
|
3
|
+
export function createCommandsCommand(context, getProgram) {
|
|
4
|
+
return new Command("commands")
|
|
5
|
+
.description("List every available CLI command")
|
|
6
|
+
.addOption(new Option("--format <text|markdown>", "output format")
|
|
7
|
+
.choices(["text", "markdown"])
|
|
8
|
+
.default("text"))
|
|
9
|
+
.action((options) => {
|
|
10
|
+
context.stdout.write(renderCommandReference(getProgram(), options.format));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAEH,sBAAsB,GACzB,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,qBAAqB,CACjC,OAAuB,EACvB,UAAyB;IAEzB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SACzB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,SAAS,CACN,IAAI,MAAM,CAAC,0BAA0B,EAAE,eAAe,CAAC;SAClD,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;SAC7B,OAAO,CAAC,MAAM,CAAC,CACvB;SACA,MAAM,CAAC,CAAC,OAA2C,EAAE,EAAE;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,sBAAsB,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CACvD,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/commands/commands/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEzD,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,sBAAsB,GAC/B,MAAM,CAIR"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function renderCommandReference(program, format) {
|
|
2
|
+
return format === "markdown"
|
|
3
|
+
? renderMarkdownReference(program)
|
|
4
|
+
: renderTextReference(program);
|
|
5
|
+
}
|
|
6
|
+
function renderTextReference(program) {
|
|
7
|
+
const commands = collectCommands(program).slice(1);
|
|
8
|
+
const rows = commands.map((command) => ({
|
|
9
|
+
invocation: usageLine(command),
|
|
10
|
+
description: command.description(),
|
|
11
|
+
}));
|
|
12
|
+
const invocationWidth = Math.max(...rows.map((row) => row.invocation.length));
|
|
13
|
+
const lines = rows.map((row) => ` ${row.invocation.padEnd(invocationWidth)} ${row.description}`.trimEnd());
|
|
14
|
+
return `Available commands:\n\n${lines.join("\n")}\n`;
|
|
15
|
+
}
|
|
16
|
+
function renderMarkdownReference(program) {
|
|
17
|
+
const sections = collectCommands(program).map((command, index) => {
|
|
18
|
+
const heading = index === 0
|
|
19
|
+
? "# EUDIPLO CLI command reference"
|
|
20
|
+
: `## \`${commandPath(command)}\``;
|
|
21
|
+
const description = index === 0
|
|
22
|
+
? "Generated from the CLI command definitions. Do not edit this page manually."
|
|
23
|
+
: command.description();
|
|
24
|
+
return `${heading}\n\n${description}\n\n\`\`\`text\n${command.helpInformation().trim()}\n\`\`\``;
|
|
25
|
+
});
|
|
26
|
+
return `${sections.join("\n\n")}\n`;
|
|
27
|
+
}
|
|
28
|
+
function collectCommands(program) {
|
|
29
|
+
const commands = [program];
|
|
30
|
+
for (const child of program.commands) {
|
|
31
|
+
if (child.name() === "help" ||
|
|
32
|
+
child._hidden === true) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
commands.push(...collectCommands(child));
|
|
36
|
+
}
|
|
37
|
+
return commands;
|
|
38
|
+
}
|
|
39
|
+
function usageLine(command) {
|
|
40
|
+
const firstLine = command.helpInformation().split("\n", 1)[0];
|
|
41
|
+
return firstLine.replace(/^Usage:\s*/, "");
|
|
42
|
+
}
|
|
43
|
+
function commandPath(command) {
|
|
44
|
+
const names = [];
|
|
45
|
+
let current = command;
|
|
46
|
+
while (current) {
|
|
47
|
+
names.unshift(current.name());
|
|
48
|
+
current = current.parent;
|
|
49
|
+
}
|
|
50
|
+
return names.join(" ");
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/commands/commands/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CommandContext } from "../../types.js";
|
|
3
|
+
export type CompletionShell = "bash" | "zsh" | "fish" | "powershell";
|
|
4
|
+
export declare function runCompletion(shell: CompletionShell, context: CommandContext): number;
|
|
5
|
+
export declare function runCompletionCandidates(root: Command, words: string[], context: CommandContext): number;
|
|
6
|
+
//# sourceMappingURL=action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;AAErE,wBAAgB,aAAa,CACzB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,cAAc,GACxB,MAAM,CAGR;AAED,wBAAgB,uBAAuB,CACnC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,cAAc,GACxB,MAAM,CAKR"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
export function runCompletion(shell, context) {
|
|
2
|
+
context.stdout.write(`${completionScript(shell)}\n`);
|
|
3
|
+
return 0;
|
|
4
|
+
}
|
|
5
|
+
export function runCompletionCandidates(root, words, context) {
|
|
6
|
+
for (const candidate of completionCandidates(root, words)) {
|
|
7
|
+
context.stdout.write(`${candidate}\n`);
|
|
8
|
+
}
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
11
|
+
function completionScript(shell) {
|
|
12
|
+
switch (shell) {
|
|
13
|
+
case "bash":
|
|
14
|
+
return bashCompletion();
|
|
15
|
+
case "zsh":
|
|
16
|
+
return zshCompletion();
|
|
17
|
+
case "fish":
|
|
18
|
+
return fishCompletion();
|
|
19
|
+
case "powershell":
|
|
20
|
+
return powershellCompletion();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function completionCandidates(root, words) {
|
|
24
|
+
let current = root;
|
|
25
|
+
let skipOptionValue = false;
|
|
26
|
+
for (const word of words) {
|
|
27
|
+
if (skipOptionValue) {
|
|
28
|
+
skipOptionValue = false;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const option = findOption(current, word);
|
|
32
|
+
if (option) {
|
|
33
|
+
skipOptionValue = option.required || option.optional;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (word.startsWith("-")) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const child = current.commands.find((command) => command.name() === word || command.aliases().includes(word));
|
|
40
|
+
if (child) {
|
|
41
|
+
current = child;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const lastOption = findOption(current, words.at(-1));
|
|
45
|
+
if (lastOption) {
|
|
46
|
+
const choices = optionChoices(lastOption);
|
|
47
|
+
if (choices.length > 0) {
|
|
48
|
+
return choices;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const candidates = ["-h", "--help"];
|
|
52
|
+
for (const command of current.commands) {
|
|
53
|
+
if (command.name() !== "_complete") {
|
|
54
|
+
candidates.push(command.name(), ...command.aliases());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
for (const option of current.options) {
|
|
58
|
+
if (option.short) {
|
|
59
|
+
candidates.push(option.short);
|
|
60
|
+
}
|
|
61
|
+
if (option.long) {
|
|
62
|
+
candidates.push(option.long);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (current.commands.length === 0 && words.at(-1) === current.name()) {
|
|
66
|
+
candidates.push(...(current.registeredArguments[0]?.argChoices ?? []));
|
|
67
|
+
}
|
|
68
|
+
return [...new Set(candidates)];
|
|
69
|
+
}
|
|
70
|
+
function findOption(command, word) {
|
|
71
|
+
if (!word) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const flag = word.includes("=") ? word.slice(0, word.indexOf("=")) : word;
|
|
75
|
+
return command.options.find((option) => option.short === flag || option.long === flag);
|
|
76
|
+
}
|
|
77
|
+
function optionChoices(option) {
|
|
78
|
+
if (option.argChoices) {
|
|
79
|
+
return option.argChoices;
|
|
80
|
+
}
|
|
81
|
+
const placeholder = option.flags.match(/[<[]([^>\]]+)[>\]]/u)?.[1];
|
|
82
|
+
return placeholder?.includes("|") ? placeholder.split("|") : [];
|
|
83
|
+
}
|
|
84
|
+
function bashCompletion() {
|
|
85
|
+
return [
|
|
86
|
+
"_eudiplo_completion() {",
|
|
87
|
+
" local current candidates",
|
|
88
|
+
" local -a args",
|
|
89
|
+
' current="${COMP_WORDS[COMP_CWORD]}"',
|
|
90
|
+
' args=("${COMP_WORDS[@]:1:$((COMP_CWORD - 1))}")',
|
|
91
|
+
' candidates="$(eudiplo _complete "${args[@]}" 2>/dev/null)"',
|
|
92
|
+
' COMPREPLY=($(compgen -W "$candidates" -- "$current"))',
|
|
93
|
+
"}",
|
|
94
|
+
"complete -F _eudiplo_completion eudiplo",
|
|
95
|
+
].join("\n");
|
|
96
|
+
}
|
|
97
|
+
function zshCompletion() {
|
|
98
|
+
return [
|
|
99
|
+
"#compdef eudiplo",
|
|
100
|
+
"_eudiplo() {",
|
|
101
|
+
" local -a args candidates",
|
|
102
|
+
' args=("${words[@]:2:$((CURRENT - 2))}")',
|
|
103
|
+
' candidates=("${(@f)$(eudiplo _complete "${args[@]}" 2>/dev/null)}")',
|
|
104
|
+
" compadd -- $candidates",
|
|
105
|
+
"}",
|
|
106
|
+
"compdef _eudiplo eudiplo",
|
|
107
|
+
].join("\n");
|
|
108
|
+
}
|
|
109
|
+
function fishCompletion() {
|
|
110
|
+
return [
|
|
111
|
+
"function __eudiplo_candidates",
|
|
112
|
+
" set -l tokens (commandline -opc)",
|
|
113
|
+
" set -e tokens[1]",
|
|
114
|
+
" eudiplo _complete $tokens 2>/dev/null",
|
|
115
|
+
"end",
|
|
116
|
+
"complete -c eudiplo -f -a '(__eudiplo_candidates)'",
|
|
117
|
+
].join("\n");
|
|
118
|
+
}
|
|
119
|
+
function powershellCompletion() {
|
|
120
|
+
return [
|
|
121
|
+
"Register-ArgumentCompleter -Native -CommandName eudiplo -ScriptBlock {",
|
|
122
|
+
" param($wordToComplete, $commandAst, $cursorPosition)",
|
|
123
|
+
" $arguments = @($commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $_.ToString() })",
|
|
124
|
+
" if ($wordToComplete -and $arguments.Count -gt 0) {",
|
|
125
|
+
" $arguments = @($arguments | Select-Object -First ($arguments.Count - 1))",
|
|
126
|
+
" }",
|
|
127
|
+
" eudiplo _complete @arguments 2>$null | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {",
|
|
128
|
+
" [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)",
|
|
129
|
+
" }",
|
|
130
|
+
"}",
|
|
131
|
+
].join("\n");
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/completion/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { CommandContext } from "../../types.js";
|
|
3
|
+
import type { SetExitCode } from "../shared.js";
|
|
4
|
+
export declare function createCompletionCommand(context: CommandContext, setExitCode: SetExitCode): Command;
|
|
5
|
+
export declare function createCompletionCandidatesCommand(context: CommandContext, setExitCode: SetExitCode): Command;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAqB,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAShD,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CAWT;AAED,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CAUT"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Argument, Command } from "commander";
|
|
2
|
+
import { runCompletion, runCompletionCandidates, } from "./action.js";
|
|
3
|
+
const supportedShells = ["bash", "zsh", "fish", "powershell"];
|
|
4
|
+
export function createCompletionCommand(context, setExitCode) {
|
|
5
|
+
return new Command("completion")
|
|
6
|
+
.description("Generate shell completion scripts")
|
|
7
|
+
.addArgument(new Argument("<shell>", "shell to generate completion for").choices(supportedShells))
|
|
8
|
+
.action((shell) => {
|
|
9
|
+
setExitCode(runCompletion(shell, context));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export function createCompletionCandidatesCommand(context, setExitCode) {
|
|
13
|
+
return new Command("_complete")
|
|
14
|
+
.argument("[words...]")
|
|
15
|
+
.allowUnknownOption(true)
|
|
16
|
+
.action((words, _options, command) => {
|
|
17
|
+
if (!command.parent) {
|
|
18
|
+
throw new Error("Completion command is not attached to the CLI root.");
|
|
19
|
+
}
|
|
20
|
+
setExitCode(runCompletionCandidates(command.parent, words, context));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/completion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAC;AAGjE,OAAO,EACH,aAAa,EACb,uBAAuB,GAE1B,MAAM,aAAa,CAAC;AAErB,MAAM,eAAe,GAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAEjF,MAAM,UAAU,uBAAuB,CACnC,OAAuB,EACvB,WAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;SAC3B,WAAW,CAAC,mCAAmC,CAAC;SAChD,WAAW,CACR,IAAI,QAAQ,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC,OAAO,CAC/D,eAAe,CAClB,CACJ;SACA,MAAM,CAAC,CAAC,KAAsB,EAAE,EAAE;QAC/B,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC7C,OAAuB,EACvB,WAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;SAC1B,QAAQ,CAAC,YAAY,CAAC;SACtB,kBAAkB,CAAC,IAAI,CAAC;SACxB,MAAM,CAAC,CAAC,KAAe,EAAE,QAAsB,EAAE,OAAgB,EAAE,EAAE;QAClE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;QACD,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CliConfig, CommandContext } from "../../types.js";
|
|
2
|
+
export declare function runConfigPath(context: CommandContext): number;
|
|
3
|
+
export declare function runConfigShow(configPath: string, config: CliConfig, json: boolean, context: CommandContext): number;
|
|
4
|
+
//# sourceMappingURL=action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/config/action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAEhF,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAG7D;AAED,wBAAgB,aAAa,CACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,cAAc,GACxB,MAAM,CAuBR"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { resolveConfigPath } from "../../services/cli-config.js";
|
|
2
|
+
export function runConfigPath(context) {
|
|
3
|
+
context.stdout.write(`${resolveConfigPath(context.env)}\n`);
|
|
4
|
+
return 0;
|
|
5
|
+
}
|
|
6
|
+
export function runConfigShow(configPath, config, json, context) {
|
|
7
|
+
if (json) {
|
|
8
|
+
context.stdout.write(`${JSON.stringify(config, null, 2)}\n`);
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
11
|
+
context.stdout.write(`Config: ${configPath}\n`);
|
|
12
|
+
context.stdout.write(`Default instance: ${config.defaultInstance ?? "none"}\n`);
|
|
13
|
+
const instances = Object.entries(config.instances).sort(([left], [right]) => left.localeCompare(right));
|
|
14
|
+
if (instances.length === 0) {
|
|
15
|
+
context.stdout.write("Instances: none\n");
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
context.stdout.write("Instances:\n");
|
|
19
|
+
for (const [name, instance] of instances) {
|
|
20
|
+
const defaultLabel = name === config.defaultInstance ? " (default)" : "";
|
|
21
|
+
context.stdout.write(`- ${name}${defaultLabel}\n`);
|
|
22
|
+
writeInstance(instance, context);
|
|
23
|
+
}
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
function writeInstance(instance, context) {
|
|
27
|
+
for (const [key, value] of Object.entries(instance)) {
|
|
28
|
+
if (value !== undefined) {
|
|
29
|
+
context.stdout.write(` ${key}: ${Array.isArray(value) ? value.join(", ") : value}\n`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/commands/config/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,MAAM,UAAU,aAAa,CAAC,OAAuB;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CACzB,UAAkB,EAClB,MAAiB,EACjB,IAAa,EACb,OAAuB;IAEvB,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,UAAU,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,eAAe,IAAI,MAAM,IAAI,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CACxE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAC5B,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,YAAY,IAAI,CAAC,CAAC;QACnD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,QAAwB,EAAE,OAAuB;IACpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,KAAK,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CACnE,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../src/commands/config/editor/action.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAapE,wBAAsB,wBAAwB,CAC1C,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { applyEdits, modify, parse, printParseErrorCode, } from "jsonc-parser";
|
|
4
|
+
import { readStringFlag } from "../../../options.js";
|
|
5
|
+
import { TENANT_RESOURCE_REGISTRY } from "../validate/registry.js";
|
|
6
|
+
import { loadBundledConfigSchemaTexts } from "../validate/schemas.js";
|
|
7
|
+
const vscodeDirectoryName = ".vscode";
|
|
8
|
+
const managedSchemaDirectoryName = "eudiplo-schemas";
|
|
9
|
+
const managedSchemaUrlPrefix = `./${vscodeDirectoryName}/${managedSchemaDirectoryName}/`;
|
|
10
|
+
export async function setupVSCodeSchemaSupport(parsed, context) {
|
|
11
|
+
if (parsed.positionals.length > 1) {
|
|
12
|
+
throw new Error(`Unexpected argument: ${parsed.positionals[1]}`);
|
|
13
|
+
}
|
|
14
|
+
const workspacePath = resolve(context.cwd, parsed.positionals[0] ?? ".");
|
|
15
|
+
const configDirectoryFlag = readStringFlag(parsed.flags, "config-directory") ?? "config";
|
|
16
|
+
const configPath = isAbsolute(configDirectoryFlag)
|
|
17
|
+
? resolve(configDirectoryFlag)
|
|
18
|
+
: resolve(workspacePath, configDirectoryFlag);
|
|
19
|
+
const configRelativePath = relative(workspacePath, configPath);
|
|
20
|
+
if (isOutsideWorkspace(configRelativePath)) {
|
|
21
|
+
throw new Error(`Config directory must be inside the VS Code workspace: ${configPath}`);
|
|
22
|
+
}
|
|
23
|
+
const vscodePath = join(workspacePath, vscodeDirectoryName);
|
|
24
|
+
const schemaDirectory = join(vscodePath, managedSchemaDirectoryName);
|
|
25
|
+
const settingsPath = join(vscodePath, "settings.json");
|
|
26
|
+
await mkdir(schemaDirectory, { recursive: true });
|
|
27
|
+
const schemaTexts = await loadBundledConfigSchemaTexts();
|
|
28
|
+
for (const [schemaFile, contents] of schemaTexts) {
|
|
29
|
+
await writeFile(join(schemaDirectory, schemaFile), contents, "utf8");
|
|
30
|
+
}
|
|
31
|
+
const associations = createSchemaAssociations(configRelativePath);
|
|
32
|
+
const settingsText = await readSettings(settingsPath);
|
|
33
|
+
const updatedSettings = mergeSchemaAssociations(settingsText, associations, settingsPath);
|
|
34
|
+
await writeFile(settingsPath, updatedSettings, "utf8");
|
|
35
|
+
context.stdout.write(`Configured VS Code JSON Schema support in ${settingsPath}.\n`);
|
|
36
|
+
context.stdout.write(`Installed ${schemaTexts.size} schemas in ${schemaDirectory}.\n`);
|
|
37
|
+
context.stdout.write(`Associated ${associations.length} config resource patterns under ${configPath}.\n`);
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
function createSchemaAssociations(configRelativePath) {
|
|
41
|
+
const normalizedConfigPath = configRelativePath
|
|
42
|
+
.split(sep)
|
|
43
|
+
.join("/")
|
|
44
|
+
.replace(/^\/+|\/+$/g, "");
|
|
45
|
+
const workspacePrefix = normalizedConfigPath
|
|
46
|
+
? `/${normalizedConfigPath}`
|
|
47
|
+
: "";
|
|
48
|
+
return TENANT_RESOURCE_REGISTRY.map((entry) => ({
|
|
49
|
+
fileMatch: Array.from(new Set(entry.fileMatch
|
|
50
|
+
.filter((pattern) => pattern.startsWith("/assets/config/"))
|
|
51
|
+
.map((pattern) => `${workspacePrefix}${pattern.slice("/assets/config".length)}`))),
|
|
52
|
+
url: `${managedSchemaUrlPrefix}${entry.schemaFile}`,
|
|
53
|
+
})).filter((entry) => entry.fileMatch.length > 0);
|
|
54
|
+
}
|
|
55
|
+
async function readSettings(settingsPath) {
|
|
56
|
+
try {
|
|
57
|
+
return await readFile(settingsPath, "utf8");
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
61
|
+
return "{}\n";
|
|
62
|
+
}
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function mergeSchemaAssociations(settingsText, managedAssociations, settingsPath) {
|
|
67
|
+
const errors = [];
|
|
68
|
+
const settings = parse(settingsText, errors, {
|
|
69
|
+
allowTrailingComma: true,
|
|
70
|
+
disallowComments: false,
|
|
71
|
+
});
|
|
72
|
+
if (errors.length > 0) {
|
|
73
|
+
const first = errors[0];
|
|
74
|
+
throw new Error(`Cannot update ${settingsPath}: ${printParseErrorCode(first.error)} at offset ${first.offset}.`);
|
|
75
|
+
}
|
|
76
|
+
if (!isRecord(settings)) {
|
|
77
|
+
throw new Error(`Cannot update ${settingsPath}: the settings root must be an object.`);
|
|
78
|
+
}
|
|
79
|
+
const existingValue = settings["json.schemas"];
|
|
80
|
+
if (existingValue !== undefined && !Array.isArray(existingValue)) {
|
|
81
|
+
throw new Error(`Cannot update ${settingsPath}: "json.schemas" must be an array.`);
|
|
82
|
+
}
|
|
83
|
+
const unmanagedAssociations = (existingValue ?? []).filter((entry) => !isRecord(entry) ||
|
|
84
|
+
typeof entry.url !== "string" ||
|
|
85
|
+
!entry.url.startsWith(managedSchemaUrlPrefix));
|
|
86
|
+
const mergedAssociations = [
|
|
87
|
+
...unmanagedAssociations,
|
|
88
|
+
...managedAssociations,
|
|
89
|
+
];
|
|
90
|
+
const eol = settingsText.includes("\r\n") ? "\r\n" : "\n";
|
|
91
|
+
const edits = modify(settingsText, ["json.schemas"], mergedAssociations, {
|
|
92
|
+
formattingOptions: {
|
|
93
|
+
insertSpaces: true,
|
|
94
|
+
tabSize: 2,
|
|
95
|
+
eol,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
const updated = applyEdits(settingsText, edits);
|
|
99
|
+
return updated.endsWith(eol) ? updated : `${updated}${eol}`;
|
|
100
|
+
}
|
|
101
|
+
function isOutsideWorkspace(relativePath) {
|
|
102
|
+
return (relativePath === ".." ||
|
|
103
|
+
relativePath.startsWith(`..${sep}`) ||
|
|
104
|
+
isAbsolute(relativePath));
|
|
105
|
+
}
|
|
106
|
+
function isRecord(value) {
|
|
107
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
108
|
+
}
|
|
109
|
+
function isNodeError(error) {
|
|
110
|
+
return error instanceof Error && "code" in error;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../src/commands/config/editor/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EACH,UAAU,EACV,MAAM,EAEN,KAAK,EACL,mBAAmB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AACrD,MAAM,sBAAsB,GAAG,KAAK,mBAAmB,IAAI,0BAA0B,GAAG,CAAC;AAOzF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,MAAkB,EAClB,OAAuB;IAEvB,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;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACzE,MAAM,mBAAmB,GACrB,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,QAAQ,CAAC;IACjE,MAAM,UAAU,GAAG,UAAU,CAAC,mBAAmB,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC9B,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC/D,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACX,0DAA0D,UAAU,EAAE,CACzE,CAAC;IACN,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,MAAM,4BAA4B,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC;QAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,YAAY,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,uBAAuB,CAC3C,YAAY,EACZ,YAAY,EACZ,YAAY,CACf,CAAC;IACF,MAAM,SAAS,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,6CAA6C,YAAY,KAAK,CACjE,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,aAAa,WAAW,CAAC,IAAI,eAAe,eAAe,KAAK,CACnE,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,cAAc,YAAY,CAAC,MAAM,mCAAmC,UAAU,KAAK,CACtF,CAAC;IACF,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,wBAAwB,CAC7B,kBAA0B;IAE1B,MAAM,oBAAoB,GAAG,kBAAkB;SAC1C,KAAK,CAAC,GAAG,CAAC;SACV,IAAI,CAAC,GAAG,CAAC;SACT,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,eAAe,GAAG,oBAAoB;QACxC,CAAC,CAAC,IAAI,oBAAoB,EAAE;QAC5B,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,SAAS,EAAE,KAAK,CAAC,IAAI,CACjB,IAAI,GAAG,CACH,KAAK,CAAC,SAAS;aACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;aAC1D,GAAG,CACA,CAAC,OAAO,EAAE,EAAE,CACR,GAAG,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CACpE,CACR,CACJ;QACD,GAAG,EAAE,GAAG,sBAAsB,GAAG,KAAK,CAAC,UAAU,EAAE;KACtD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,YAAoB;IAC5C,IAAI,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC5B,YAAoB,EACpB,mBAA4C,EAC5C,YAAoB;IAEpB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE;QACzC,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,KAAK;KAC1B,CAAY,CAAC;IACd,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,iBAAiB,YAAY,KAAK,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,MAAM,GAAG,CAClG,CAAC;IACN,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,iBAAiB,YAAY,wCAAwC,CACxE,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACX,iBAAiB,YAAY,oCAAoC,CACpE,CAAC;IACN,CAAC;IACD,MAAM,qBAAqB,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,KAAK,EAAE,EAAE,CACN,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,CACpD,CAAC;IACF,MAAM,kBAAkB,GAAG;QACvB,GAAG,qBAAqB;QACxB,GAAG,mBAAmB;KACzB,CAAC;IACF,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,EAAE,kBAAkB,EAAE;QACrE,iBAAiB,EAAE;YACf,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,CAAC;YACV,GAAG;SACN;KACJ,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC5C,OAAO,CACH,YAAY,KAAK,IAAI;QACrB,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;QACnC,UAAU,CAAC,YAAY,CAAC,CAC3B,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { CommandContext } from "../../../types.js";
|
|
3
|
+
import { type SetExitCode } from "../../shared.js";
|
|
4
|
+
export declare function createEditorCommand(context: CommandContext, setExitCode: SetExitCode): Command;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/config/editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG/D,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CA+BT"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { parsedArgs } from "../../shared.js";
|
|
3
|
+
import { setupVSCodeSchemaSupport } from "./action.js";
|
|
4
|
+
export function createEditorCommand(context, setExitCode) {
|
|
5
|
+
const editor = new Command("editor")
|
|
6
|
+
.description("Configure editor support for local configuration files")
|
|
7
|
+
.helpCommand(true);
|
|
8
|
+
editor
|
|
9
|
+
.command("setup [workspace]")
|
|
10
|
+
.description("Install bundled JSON Schemas and configure VS Code")
|
|
11
|
+
.option("--config-directory <path>", "tenant config root relative to the workspace", "config")
|
|
12
|
+
.action(async (workspace, options) => {
|
|
13
|
+
setExitCode(await setupVSCodeSchemaSupport(parsedArgs("config", "editor-setup", workspace ? [workspace] : [], options), context));
|
|
14
|
+
});
|
|
15
|
+
editor.action(function showEditorHelp() {
|
|
16
|
+
this.outputHelp();
|
|
17
|
+
});
|
|
18
|
+
return editor;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/config/editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAoB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,mBAAmB,CAC/B,OAAuB,EACvB,WAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;SAC/B,WAAW,CAAC,wDAAwD,CAAC;SACrE,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,MAAM;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CACH,2BAA2B,EAC3B,8CAA8C,EAC9C,QAAQ,CACX;SACA,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACjC,WAAW,CACP,MAAM,wBAAwB,CAC1B,UAAU,CACN,QAAQ,EACR,cAAc,EACd,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5B,OAAO,CACV,EACD,OAAO,CACV,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,MAAM,CAAC,MAAM,CAAC,SAAS,cAAc;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import type { CommandContext } from "../../types.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type SetExitCode } from "../shared.js";
|
|
4
4
|
export declare function createConfigCommand(context: CommandContext, setExitCode: SetExitCode): Command;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAM9D,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,WAAW,GACzB,OAAO,CAmCT"}
|