container-superposition 0.1.6 → 0.1.8
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 +24 -15
- package/dist/scripts/init.js +1 -1534
- package/dist/scripts/init.js.map +1 -1
- package/dist/tool/cli/args.d.ts +20 -0
- package/dist/tool/cli/args.d.ts.map +1 -0
- package/dist/tool/cli/args.js +325 -0
- package/dist/tool/cli/args.js.map +1 -0
- package/dist/tool/cli/run.d.ts +2 -0
- package/dist/tool/cli/run.d.ts.map +1 -0
- package/dist/tool/cli/run.js +318 -0
- package/dist/tool/cli/run.js.map +1 -0
- package/dist/tool/commands/adopt.d.ts.map +1 -1
- package/dist/tool/commands/adopt.js +1 -27
- package/dist/tool/commands/adopt.js.map +1 -1
- package/dist/tool/commands/doctor.d.ts +3 -0
- package/dist/tool/commands/doctor.d.ts.map +1 -1
- package/dist/tool/commands/doctor.js +1068 -70
- package/dist/tool/commands/doctor.js.map +1 -1
- package/dist/tool/commands/explain.d.ts.map +1 -1
- package/dist/tool/commands/explain.js +18 -0
- package/dist/tool/commands/explain.js.map +1 -1
- package/dist/tool/commands/migrate.d.ts +7 -0
- package/dist/tool/commands/migrate.d.ts.map +1 -0
- package/dist/tool/commands/migrate.js +52 -0
- package/dist/tool/commands/migrate.js.map +1 -0
- package/dist/tool/questionnaire/answers.d.ts +16 -0
- package/dist/tool/questionnaire/answers.d.ts.map +1 -0
- package/dist/tool/questionnaire/answers.js +102 -0
- package/dist/tool/questionnaire/answers.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +3 -3
- package/dist/tool/questionnaire/composer.d.ts.map +1 -1
- package/dist/tool/questionnaire/composer.js +902 -37
- package/dist/tool/questionnaire/composer.js.map +1 -1
- package/dist/tool/questionnaire/presets.d.ts +60 -0
- package/dist/tool/questionnaire/presets.d.ts.map +1 -0
- package/dist/tool/questionnaire/presets.js +164 -0
- package/dist/tool/questionnaire/presets.js.map +1 -0
- package/dist/tool/questionnaire/questionnaire.d.ts +10 -0
- package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -0
- package/dist/tool/questionnaire/questionnaire.js +580 -0
- package/dist/tool/questionnaire/questionnaire.js.map +1 -0
- package/dist/tool/schema/manifest-migrations.d.ts +5 -0
- package/dist/tool/schema/manifest-migrations.d.ts.map +1 -1
- package/dist/tool/schema/manifest-migrations.js +45 -0
- package/dist/tool/schema/manifest-migrations.js.map +1 -1
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -1
- package/dist/tool/schema/overlay-loader.js +25 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts +14 -2
- package/dist/tool/schema/project-config.d.ts.map +1 -1
- package/dist/tool/schema/project-config.js +277 -34
- package/dist/tool/schema/project-config.js.map +1 -1
- package/dist/tool/schema/target-rules.d.ts +78 -0
- package/dist/tool/schema/target-rules.d.ts.map +1 -0
- package/dist/tool/schema/target-rules.js +367 -0
- package/dist/tool/schema/target-rules.js.map +1 -0
- package/dist/tool/schema/types.d.ts +123 -12
- package/dist/tool/schema/types.d.ts.map +1 -1
- package/dist/tool/utils/merge.d.ts.map +1 -1
- package/dist/tool/utils/merge.js +9 -0
- package/dist/tool/utils/merge.js.map +1 -1
- package/dist/tool/utils/parameters.d.ts +76 -0
- package/dist/tool/utils/parameters.d.ts.map +1 -0
- package/dist/tool/utils/parameters.js +125 -0
- package/dist/tool/utils/parameters.js.map +1 -0
- package/dist/tool/utils/paths.d.ts +2 -0
- package/dist/tool/utils/paths.d.ts.map +1 -0
- package/dist/tool/utils/paths.js +31 -0
- package/dist/tool/utils/paths.js.map +1 -0
- package/docs/creating-overlays.md +151 -2
- package/docs/deployment-targets.md +88 -56
- package/docs/examples.md +20 -17
- package/docs/filesystem-contract.md +5 -0
- package/docs/minimal-and-editor.md +65 -5
- package/docs/overlay-imports.md +202 -101
- package/docs/overlays.md +162 -34
- package/docs/quick-reference.md +99 -0
- package/docs/specs/003-mkdocs2-overlay/spec.md +114 -0
- package/docs/specs/004-doctor-fix/spec.md +70 -0
- package/docs/specs/005-cuda-overlay/spec.md +101 -0
- package/docs/specs/006-rocm-overlay/spec.md +109 -0
- package/docs/specs/007-init-project-file/spec.md +66 -0
- package/docs/specs/007-target-aware-generation/spec.md +126 -0
- package/docs/specs/008-project-file-canonical/spec.md +83 -0
- package/docs/specs/009-project-env/spec.md +147 -0
- package/docs/specs/010-compose-env-materialization/spec.md +130 -0
- package/docs/specs/011-overlay-parameters/spec.md +235 -0
- package/overlays/.shared/README.md +105 -21
- package/overlays/.shared/compose/common-healthchecks.md +60 -0
- package/overlays/.shared/compose/nvidia-gpu-devcontainer.yml +22 -0
- package/overlays/.shared/vscode/recommended-extensions.json +15 -11
- package/overlays/alertmanager/setup.sh +4 -19
- package/overlays/alertmanager/verify.sh +8 -9
- package/overlays/all/README.md +43 -0
- package/overlays/all/devcontainer.patch.json +6 -0
- package/overlays/all/overlay.yml +14 -0
- package/overlays/amp/setup.sh +5 -0
- package/overlays/bun/setup.sh +10 -1
- package/overlays/bun/verify.sh +6 -1
- package/overlays/claude-code/setup.sh +5 -0
- package/overlays/cloudflared/setup.sh +9 -12
- package/overlays/codex/README.md +9 -6
- package/overlays/codex/devcontainer.patch.json +7 -1
- package/overlays/codex/setup.sh +5 -0
- package/overlays/codex/verify.sh +8 -0
- package/overlays/comfyui/.env.example +34 -0
- package/overlays/comfyui/README.md +342 -0
- package/overlays/comfyui/devcontainer.patch.json +15 -0
- package/overlays/comfyui/docker-compose.yml +39 -0
- package/overlays/comfyui/overlay.yml +20 -0
- package/overlays/comfyui/setup.sh +36 -0
- package/overlays/comfyui/verify.sh +103 -0
- package/overlays/commitlint/setup.sh +5 -0
- package/overlays/cuda/README.md +179 -0
- package/overlays/cuda/devcontainer.patch.json +7 -0
- package/overlays/cuda/overlay.yml +17 -0
- package/overlays/cuda/setup.sh +32 -0
- package/overlays/cuda/verify.sh +38 -0
- package/overlays/devcontainer-cli/README.md +50 -0
- package/overlays/devcontainer-cli/devcontainer.patch.json +13 -0
- package/overlays/devcontainer-cli/overlay.yml +16 -0
- package/overlays/devcontainer-cli/setup.sh +14 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/setup.sh +7 -6
- package/overlays/dotnet/setup.sh +14 -7
- package/overlays/duckdb/devcontainer.patch.json +1 -2
- package/overlays/gcloud/devcontainer.patch.json +0 -6
- package/overlays/gcloud/setup.sh +51 -0
- package/overlays/gemini-cli/setup.sh +5 -0
- package/overlays/git-helpers/devcontainer.patch.json +2 -1
- package/overlays/go/setup.sh +15 -14
- package/overlays/jaeger/overlay.yml +2 -0
- package/overlays/just/setup.sh +5 -17
- package/overlays/k3d/README.md +201 -0
- package/overlays/k3d/devcontainer.patch.json +9 -0
- package/overlays/k3d/overlay.yml +19 -0
- package/overlays/k3d/setup.sh +34 -0
- package/overlays/k3d/verify.sh +38 -0
- package/overlays/keycloak/docker-compose.yml +6 -4
- package/overlays/keycloak/verify.sh +4 -3
- package/overlays/kind/devcontainer.patch.json +1 -2
- package/overlays/kind/setup.sh +8 -17
- package/overlays/minio/setup.sh +10 -18
- package/overlays/mkdocs/overlay.yml +2 -1
- package/overlays/mkdocs2/README.md +135 -0
- package/overlays/mkdocs2/devcontainer.patch.json +19 -0
- package/overlays/mkdocs2/overlay.yml +17 -0
- package/overlays/mkdocs2/setup.sh +67 -0
- package/overlays/mkdocs2/verify.sh +35 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +7 -1
- package/overlays/modern-cli-tools/setup.sh +21 -71
- package/overlays/mongodb/devcontainer.patch.json +0 -6
- package/overlays/mongodb/setup.sh +59 -0
- package/overlays/mysql/verify.sh +4 -3
- package/overlays/nats/.env.example +1 -1
- package/overlays/nats/README.md +1 -1
- package/overlays/nats/docker-compose.yml +1 -1
- package/overlays/ngrok/setup.sh +9 -6
- package/overlays/nodejs/setup.sh +5 -0
- package/overlays/ollama/.env.example +14 -0
- package/overlays/ollama/README.md +325 -0
- package/overlays/ollama/devcontainer.patch.json +14 -0
- package/overlays/ollama/docker-compose.yml +24 -0
- package/overlays/ollama/overlay.yml +22 -0
- package/overlays/ollama/setup.sh +106 -0
- package/overlays/ollama/verify.sh +99 -0
- package/overlays/open-webui/.env.example +5 -0
- package/overlays/open-webui/README.md +162 -0
- package/overlays/open-webui/devcontainer.patch.json +14 -0
- package/overlays/open-webui/docker-compose.yml +23 -0
- package/overlays/open-webui/overlay.yml +38 -0
- package/overlays/openapi-tools/devcontainer.patch.json +1 -2
- package/overlays/openapi-tools/setup.sh +9 -8
- package/overlays/opencode/setup.sh +5 -0
- package/overlays/otel-collector/overlay.yml +2 -0
- package/overlays/otel-collector/setup.sh +3 -16
- package/overlays/otel-demo-nodejs/verify.sh +8 -9
- package/overlays/otel-demo-python/verify.sh +16 -10
- package/overlays/pandoc/README.md +22 -15
- package/overlays/pandoc/devcontainer.patch.json +6 -2
- package/overlays/pandoc/setup.sh +217 -18
- package/overlays/pandoc/verify.sh +16 -4
- package/overlays/pgvector/.env.example +6 -0
- package/overlays/pgvector/README.md +215 -0
- package/overlays/pgvector/devcontainer.patch.json +23 -0
- package/overlays/pgvector/docker-compose.yml +32 -0
- package/overlays/pgvector/overlay.yml +44 -0
- package/overlays/playwright/devcontainer.patch.json +3 -1
- package/overlays/playwright/setup.sh +37 -0
- package/overlays/postgres/.env.example +5 -5
- package/overlays/postgres/devcontainer.patch.json +4 -4
- package/overlays/postgres/docker-compose.yml +15 -5
- package/overlays/postgres/overlay.yml +19 -1
- package/overlays/powershell/setup.sh +49 -13
- package/overlays/pre-commit/setup.sh +12 -3
- package/overlays/prometheus/overlay.yml +2 -0
- package/overlays/promtail/verify.sh +16 -10
- package/overlays/pulumi/devcontainer.patch.json +1 -1
- package/overlays/python/setup.sh +28 -9
- package/overlays/python/verify.sh +4 -2
- package/overlays/qdrant/.env.example +4 -0
- package/overlays/qdrant/README.md +216 -0
- package/overlays/qdrant/devcontainer.patch.json +20 -0
- package/overlays/qdrant/docker-compose.yml +25 -0
- package/overlays/qdrant/overlay.yml +40 -0
- package/overlays/redpanda/docker-compose.yml +3 -5
- package/overlays/rocm/README.md +227 -0
- package/overlays/rocm/devcontainer.patch.json +4 -0
- package/overlays/rocm/overlay.yml +17 -0
- package/overlays/rocm/setup.sh +45 -0
- package/overlays/rocm/verify.sh +47 -0
- package/overlays/rust/setup.sh +11 -18
- package/overlays/skaffold/README.md +256 -0
- package/overlays/skaffold/devcontainer.patch.json +9 -0
- package/overlays/skaffold/overlay.yml +20 -0
- package/overlays/skaffold/setup.sh +33 -0
- package/overlays/skaffold/verify.sh +24 -0
- package/overlays/spec-kit/setup.sh +7 -3
- package/overlays/sqlite/setup.sh +14 -14
- package/overlays/sqlserver/docker-compose.yml +3 -3
- package/overlays/sqlserver/verify.sh +22 -5
- package/overlays/tempo/verify.sh +16 -10
- package/overlays/tilt/devcontainer.patch.json +1 -2
- package/overlays/tilt/setup.sh +14 -4
- package/overlays/windsurf-cli/setup.sh +27 -4
- package/overlays/windsurf-cli/verify.sh +13 -3
- package/package.json +4 -2
- package/templates/scripts/setup-utils.sh +228 -0
- package/tool/schema/config.schema.json +141 -9
- package/tool/schema/overlay-manifest.schema.json +38 -0
- package/overlays/.shared/compose/common-healthchecks.yml +0 -38
- /package/overlays/otel-demo-nodejs/{Dockerfile-otel-demo-nodejs → Dockerfile} +0 -0
- /package/overlays/otel-demo-nodejs/{package-otel-demo-nodejs.json → package.json} +0 -0
- /package/overlays/otel-demo-nodejs/{server-otel-demo-nodejs.js → server.js} +0 -0
- /package/overlays/otel-demo-nodejs/{tracing-otel-demo-nodejs.js → tracing.js} +0 -0
- /package/overlays/otel-demo-python/{Dockerfile-otel-demo-python → Dockerfile} +0 -0
- /package/overlays/otel-demo-python/{app-otel-demo-python.py → app.py} +0 -0
- /package/overlays/otel-demo-python/{requirements-otel-demo-python.txt → requirements.txt} +0 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target-aware generation rules.
|
|
3
|
+
*
|
|
4
|
+
* Each non-local deployment target has a TargetRule implementation that:
|
|
5
|
+
* - patches devcontainer.json with target-specific fields
|
|
6
|
+
* - generates target-specific workspace files and user guidance
|
|
7
|
+
* - declares the files it owns (for stale-artifact cleanup on target switch)
|
|
8
|
+
*/
|
|
9
|
+
import * as fs from 'fs';
|
|
10
|
+
import * as path from 'path';
|
|
11
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
12
|
+
/** Collect all exposed ports across selected overlays, applying the offset. */
|
|
13
|
+
function collectPorts(overlays, overlayMetadata, portOffset) {
|
|
14
|
+
const result = [];
|
|
15
|
+
for (const id of overlays) {
|
|
16
|
+
const meta = overlayMetadata.get(id);
|
|
17
|
+
if (!meta?.ports)
|
|
18
|
+
continue;
|
|
19
|
+
for (const p of meta.ports) {
|
|
20
|
+
if (typeof p === 'number') {
|
|
21
|
+
result.push({
|
|
22
|
+
port: p + portOffset,
|
|
23
|
+
service: id,
|
|
24
|
+
description: '',
|
|
25
|
+
protocol: 'tcp',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
result.push({
|
|
30
|
+
port: p.port + portOffset,
|
|
31
|
+
service: p.service ?? id,
|
|
32
|
+
description: p.description ?? '',
|
|
33
|
+
protocol: p.protocol ?? 'tcp',
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
// ─── Local rule (no-op) ───────────────────────────────────────────────────────
|
|
41
|
+
class LocalTargetRule {
|
|
42
|
+
target = 'local';
|
|
43
|
+
devcontainerPatch(_ctx) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
generateFiles(_ctx) {
|
|
47
|
+
return new Map();
|
|
48
|
+
}
|
|
49
|
+
ownedFiles() {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// ─── Codespaces rule ─────────────────────────────────────────────────────────
|
|
54
|
+
class CodespacesTargetRule {
|
|
55
|
+
target = 'codespaces';
|
|
56
|
+
devcontainerPatch(ctx) {
|
|
57
|
+
// Recommend a machine size based on the number of services selected.
|
|
58
|
+
// More services → larger machine recommendation.
|
|
59
|
+
const serviceOverlays = ctx.overlays.filter((id) => {
|
|
60
|
+
const meta = ctx.overlayMetadata.get(id);
|
|
61
|
+
return meta?.category === 'database' || meta?.category === 'observability';
|
|
62
|
+
});
|
|
63
|
+
let cpus = 2;
|
|
64
|
+
let memoryGb = 4;
|
|
65
|
+
if (serviceOverlays.length >= 4) {
|
|
66
|
+
cpus = 8;
|
|
67
|
+
memoryGb = 16;
|
|
68
|
+
}
|
|
69
|
+
else if (serviceOverlays.length >= 2) {
|
|
70
|
+
cpus = 4;
|
|
71
|
+
memoryGb = 8;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
hostRequirements: {
|
|
75
|
+
cpus,
|
|
76
|
+
memory: `${memoryGb}gb`,
|
|
77
|
+
storage: '32gb',
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
generateFiles(ctx) {
|
|
82
|
+
const files = new Map();
|
|
83
|
+
const overlayNames = ctx.overlays
|
|
84
|
+
.map((id) => ctx.overlayMetadata.get(id)?.name ?? id)
|
|
85
|
+
.join(', ');
|
|
86
|
+
const serviceOverlays = ctx.overlays.filter((id) => {
|
|
87
|
+
const meta = ctx.overlayMetadata.get(id);
|
|
88
|
+
return meta?.category === 'database' || meta?.category === 'observability';
|
|
89
|
+
});
|
|
90
|
+
let machineNote = '**2-core** machine (default)';
|
|
91
|
+
if (serviceOverlays.length >= 4) {
|
|
92
|
+
machineNote = '**8-core** machine (recommended — many services selected)';
|
|
93
|
+
}
|
|
94
|
+
else if (serviceOverlays.length >= 2) {
|
|
95
|
+
machineNote = '**4-core** machine (recommended — multiple services selected)';
|
|
96
|
+
}
|
|
97
|
+
const ports = collectPorts(ctx.overlays, ctx.overlayMetadata, ctx.portOffset);
|
|
98
|
+
const portSection = ports.length > 0
|
|
99
|
+
? `\n## Exposed Ports\n\n${ports.map((p) => `- **${p.port}** — ${p.service}${p.description ? ` (${p.description})` : ''}`).join('\n')}\n`
|
|
100
|
+
: '';
|
|
101
|
+
const content = `# GitHub Codespaces Setup
|
|
102
|
+
|
|
103
|
+
This devcontainer was generated with **\`--target codespaces\`** and is optimized for
|
|
104
|
+
[GitHub Codespaces](https://github.com/features/codespaces).
|
|
105
|
+
|
|
106
|
+
## Opening in a Codespace
|
|
107
|
+
|
|
108
|
+
1. Push this repository (including the \`.devcontainer/\` directory) to GitHub.
|
|
109
|
+
2. Click **Code → Codespaces → Create codespace on <branch>**.
|
|
110
|
+
3. GitHub will pick up \`.devcontainer/devcontainer.json\` automatically.
|
|
111
|
+
|
|
112
|
+
## Recommended Machine Type
|
|
113
|
+
|
|
114
|
+
The generated \`devcontainer.json\` includes \`hostRequirements\` recommending a
|
|
115
|
+
${machineNote} for the selected stack.
|
|
116
|
+
|
|
117
|
+
**Selected overlays**: ${overlayNames || '(none)'}
|
|
118
|
+
|
|
119
|
+
## Port Forwarding
|
|
120
|
+
|
|
121
|
+
Codespaces automatically forwards ports declared in \`devcontainer.json\`.
|
|
122
|
+
Forwarded ports appear in the **Ports** panel inside VS Code or the Codespaces UI.
|
|
123
|
+
${portSection}
|
|
124
|
+
## Notes
|
|
125
|
+
|
|
126
|
+
- **docker-sock** is not available in Codespaces — use \`docker-in-docker\` instead.
|
|
127
|
+
- Secrets can be added under *Settings → Codespaces → Secrets*.
|
|
128
|
+
- To set environment variables, copy \`.devcontainer/.env.example\` to \`.devcontainer/.env\`
|
|
129
|
+
and add the file to your Codespaces secrets or repository environment.
|
|
130
|
+
|
|
131
|
+
## References
|
|
132
|
+
|
|
133
|
+
- [GitHub Codespaces documentation](https://docs.github.com/en/codespaces)
|
|
134
|
+
- [devcontainer.json reference — hostRequirements](https://containers.dev/implementors/json_reference/#hostRequirementsProperties)
|
|
135
|
+
`;
|
|
136
|
+
files.set('CODESPACES.md', content);
|
|
137
|
+
return files;
|
|
138
|
+
}
|
|
139
|
+
ownedFiles() {
|
|
140
|
+
return ['CODESPACES.md'];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// ─── Gitpod rule ─────────────────────────────────────────────────────────────
|
|
144
|
+
class GitpodTargetRule {
|
|
145
|
+
target = 'gitpod';
|
|
146
|
+
devcontainerPatch(_ctx) {
|
|
147
|
+
return {};
|
|
148
|
+
}
|
|
149
|
+
generateFiles(ctx) {
|
|
150
|
+
const files = new Map();
|
|
151
|
+
const ports = collectPorts(ctx.overlays, ctx.overlayMetadata, ctx.portOffset);
|
|
152
|
+
const portsSection = ports.length > 0
|
|
153
|
+
? ports
|
|
154
|
+
.map((p) => ` - port: ${p.port}\n onOpen: notify-user\n name: ${p.service}\n description: ${p.description || p.service}`)
|
|
155
|
+
.join('\n')
|
|
156
|
+
: '';
|
|
157
|
+
const devcontainerRef = ctx.stack === 'compose' ? '.devcontainer/devcontainer.json' : '.devcontainer';
|
|
158
|
+
const gitpodYml = [
|
|
159
|
+
'# Gitpod workspace configuration',
|
|
160
|
+
'# Generated by container-superposition with --target gitpod',
|
|
161
|
+
'#',
|
|
162
|
+
'# See: https://www.gitpod.io/docs/references/gitpod-yml',
|
|
163
|
+
'',
|
|
164
|
+
'image:',
|
|
165
|
+
` file: ${devcontainerRef}`,
|
|
166
|
+
'',
|
|
167
|
+
'tasks:',
|
|
168
|
+
' - name: Setup',
|
|
169
|
+
' init: |',
|
|
170
|
+
' echo "Workspace initialized — run your setup commands here"',
|
|
171
|
+
' command: |',
|
|
172
|
+
' echo "Workspace ready"',
|
|
173
|
+
'',
|
|
174
|
+
...(portsSection
|
|
175
|
+
? ['ports:', portsSection, '']
|
|
176
|
+
: ['# ports: [] # No overlay ports declared', '']),
|
|
177
|
+
'vscode:',
|
|
178
|
+
' extensions: []',
|
|
179
|
+
].join('\n');
|
|
180
|
+
// .gitpod.yml must live in the repository root (one level above .devcontainer/)
|
|
181
|
+
files.set('../.gitpod.yml', gitpodYml);
|
|
182
|
+
const overlayNames = ctx.overlays
|
|
183
|
+
.map((id) => ctx.overlayMetadata.get(id)?.name ?? id)
|
|
184
|
+
.join(', ');
|
|
185
|
+
const portSection = ports.length > 0
|
|
186
|
+
? `\n## Exposed Ports\n\n${ports.map((p) => `- **${p.port}** — ${p.service}${p.description ? ` (${p.description})` : ''}`).join('\n')}\n`
|
|
187
|
+
: '';
|
|
188
|
+
const repoUrl = '<!-- Replace with your repository URL -->';
|
|
189
|
+
const gitpodMd = `# Gitpod Setup
|
|
190
|
+
|
|
191
|
+
This devcontainer was generated with **\`--target gitpod\`** and includes a
|
|
192
|
+
\`.gitpod.yml\` at the repository root for use with [Gitpod](https://www.gitpod.io).
|
|
193
|
+
|
|
194
|
+
## Opening in Gitpod
|
|
195
|
+
|
|
196
|
+
1. Push this repository (including \`.devcontainer/\` and \`.gitpod.yml\`) to a
|
|
197
|
+
Git hosting provider supported by Gitpod (GitHub, GitLab, Bitbucket).
|
|
198
|
+
2. Prefix your repository URL with \`https://gitpod.io/#\`:
|
|
199
|
+
|
|
200
|
+
\`\`\`
|
|
201
|
+
https://gitpod.io/#${repoUrl}
|
|
202
|
+
\`\`\`
|
|
203
|
+
|
|
204
|
+
Or add an **Open in Gitpod** badge to your README:
|
|
205
|
+
|
|
206
|
+
\`\`\`markdown
|
|
207
|
+
[](https://gitpod.io/#${repoUrl})
|
|
208
|
+
\`\`\`
|
|
209
|
+
|
|
210
|
+
**Selected overlays**: ${overlayNames || '(none)'}
|
|
211
|
+
${portSection}
|
|
212
|
+
## Notes
|
|
213
|
+
|
|
214
|
+
- **docker-sock** is not available in Gitpod — use \`docker-in-docker\` instead.
|
|
215
|
+
- Environment variables can be set under *Gitpod Settings → Variables*.
|
|
216
|
+
- Copy \`.devcontainer/.env.example\` to \`.devcontainer/.env\` and configure locally.
|
|
217
|
+
- The generated \`.gitpod.yml\` references your devcontainer via its \`image.file\`
|
|
218
|
+
field — Gitpod reads devcontainer.json automatically.
|
|
219
|
+
|
|
220
|
+
## References
|
|
221
|
+
|
|
222
|
+
- [Gitpod documentation](https://www.gitpod.io/docs)
|
|
223
|
+
- [Gitpod .gitpod.yml reference](https://www.gitpod.io/docs/references/gitpod-yml)
|
|
224
|
+
- [Gitpod + devcontainers](https://www.gitpod.io/docs/references/ides-and-editors/vscode)
|
|
225
|
+
`;
|
|
226
|
+
files.set('GITPOD.md', gitpodMd);
|
|
227
|
+
return files;
|
|
228
|
+
}
|
|
229
|
+
ownedFiles() {
|
|
230
|
+
// '../.gitpod.yml' resolves to project root; 'GITPOD.md' is in outputPath.
|
|
231
|
+
return ['../.gitpod.yml', 'GITPOD.md'];
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// ─── DevPod rule ──────────────────────────────────────────────────────────────
|
|
235
|
+
class DevPodTargetRule {
|
|
236
|
+
target = 'devpod';
|
|
237
|
+
devcontainerPatch(_ctx) {
|
|
238
|
+
return {};
|
|
239
|
+
}
|
|
240
|
+
generateFiles(ctx) {
|
|
241
|
+
const files = new Map();
|
|
242
|
+
const devcontainerPath = ctx.stack === 'compose' ? '.devcontainer/devcontainer.json' : '.devcontainer';
|
|
243
|
+
const devpodYaml = [
|
|
244
|
+
'# DevPod workspace configuration',
|
|
245
|
+
'# Generated by container-superposition with --target devpod',
|
|
246
|
+
'#',
|
|
247
|
+
'# See: https://devpod.sh/docs/managing-workspaces/workspace-configuration',
|
|
248
|
+
'',
|
|
249
|
+
`devcontainerPath: ${devcontainerPath}`,
|
|
250
|
+
].join('\n');
|
|
251
|
+
// devpod.yaml lives at the project root
|
|
252
|
+
files.set('../devpod.yaml', devpodYaml);
|
|
253
|
+
const overlayNames = ctx.overlays
|
|
254
|
+
.map((id) => ctx.overlayMetadata.get(id)?.name ?? id)
|
|
255
|
+
.join(', ');
|
|
256
|
+
const ports = collectPorts(ctx.overlays, ctx.overlayMetadata, ctx.portOffset);
|
|
257
|
+
const portSection = ports.length > 0
|
|
258
|
+
? `\n## Exposed Ports\n\n${ports.map((p) => `- **${p.port}** — ${p.service}${p.description ? ` (${p.description})` : ''}`).join('\n')}\n`
|
|
259
|
+
: '';
|
|
260
|
+
const devpodMd = `# DevPod Setup
|
|
261
|
+
|
|
262
|
+
This devcontainer was generated with **\`--target devpod\`** and includes a
|
|
263
|
+
\`devpod.yaml\` at the repository root for use with [DevPod](https://devpod.sh).
|
|
264
|
+
|
|
265
|
+
## Provisioning with DevPod
|
|
266
|
+
|
|
267
|
+
1. [Install DevPod](https://devpod.sh/docs/getting-started/install).
|
|
268
|
+
2. From the repository root run:
|
|
269
|
+
|
|
270
|
+
\`\`\`bash
|
|
271
|
+
devpod up .
|
|
272
|
+
\`\`\`
|
|
273
|
+
|
|
274
|
+
DevPod reads \`devpod.yaml\` and the referenced \`${devcontainerPath}\` automatically.
|
|
275
|
+
|
|
276
|
+
3. To use a specific provider:
|
|
277
|
+
|
|
278
|
+
\`\`\`bash
|
|
279
|
+
devpod up . --provider docker # Local Docker
|
|
280
|
+
devpod up . --provider aws # AWS EC2
|
|
281
|
+
\`\`\`
|
|
282
|
+
|
|
283
|
+
**Selected overlays**: ${overlayNames || '(none)'}
|
|
284
|
+
${portSection}
|
|
285
|
+
## Notes
|
|
286
|
+
|
|
287
|
+
- Copy \`.devcontainer/.env.example\` to \`.devcontainer/.env\` and edit credentials
|
|
288
|
+
before running \`devpod up\`.
|
|
289
|
+
- DevPod respects \`hostRequirements\` in \`devcontainer.json\` for cloud providers.
|
|
290
|
+
- To stop and destroy the workspace: \`devpod delete <workspace-name>\`.
|
|
291
|
+
|
|
292
|
+
## References
|
|
293
|
+
|
|
294
|
+
- [DevPod documentation](https://devpod.sh/docs)
|
|
295
|
+
- [DevPod workspace configuration](https://devpod.sh/docs/managing-workspaces/workspace-configuration)
|
|
296
|
+
- [DevPod providers](https://devpod.sh/docs/managing-providers/add-provider)
|
|
297
|
+
`;
|
|
298
|
+
files.set('DEVPOD.md', devpodMd);
|
|
299
|
+
return files;
|
|
300
|
+
}
|
|
301
|
+
ownedFiles() {
|
|
302
|
+
return ['../devpod.yaml', 'DEVPOD.md'];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// ─── Registry ────────────────────────────────────────────────────────────────
|
|
306
|
+
const TARGET_RULES = {
|
|
307
|
+
local: new LocalTargetRule(),
|
|
308
|
+
codespaces: new CodespacesTargetRule(),
|
|
309
|
+
gitpod: new GitpodTargetRule(),
|
|
310
|
+
devpod: new DevPodTargetRule(),
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* Return the target rule for the given deployment target.
|
|
314
|
+
* Throws a clear error when the target has no defined rule (future-proofing).
|
|
315
|
+
*/
|
|
316
|
+
export function getTargetRule(target) {
|
|
317
|
+
const rule = TARGET_RULES[target];
|
|
318
|
+
if (!rule) {
|
|
319
|
+
const valid = Object.keys(TARGET_RULES).join(', ');
|
|
320
|
+
throw new Error(`No target rule defined for '${target}'. Valid targets are: ${valid}`);
|
|
321
|
+
}
|
|
322
|
+
return rule;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Resolve a path produced by TargetRule.generateFiles() to an absolute
|
|
326
|
+
* filesystem path.
|
|
327
|
+
*
|
|
328
|
+
* Keys starting with '../' are resolved relative to projectRoot (i.e. the
|
|
329
|
+
* repository root, one level above .devcontainer/). All other keys are
|
|
330
|
+
* resolved relative to outputPath (.devcontainer/).
|
|
331
|
+
*/
|
|
332
|
+
export function resolveTargetFilePath(key, outputPath, projectRoot) {
|
|
333
|
+
if (key.startsWith('../')) {
|
|
334
|
+
return path.join(projectRoot, key.slice(3));
|
|
335
|
+
}
|
|
336
|
+
return path.join(outputPath, key);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Remove stale project-root artifacts left by a previous target.
|
|
340
|
+
*
|
|
341
|
+
* Only project-root files (keys starting with '../') are removed here; files
|
|
342
|
+
* inside outputPath are handled automatically by cleanupStaleFiles via the
|
|
343
|
+
* FileRegistry.
|
|
344
|
+
*
|
|
345
|
+
* @param previousTarget Target used in the previous generation run.
|
|
346
|
+
* @param nextTarget Target for the current generation run.
|
|
347
|
+
* @param projectRoot Absolute path to the project root.
|
|
348
|
+
*/
|
|
349
|
+
export function removeStaleTargetArtifacts(previousTarget, nextTarget, projectRoot) {
|
|
350
|
+
if (previousTarget === nextTarget) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const previousRule = TARGET_RULES[previousTarget];
|
|
354
|
+
if (!previousRule) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
for (const ownedKey of previousRule.ownedFiles()) {
|
|
358
|
+
if (!ownedKey.startsWith('../')) {
|
|
359
|
+
continue; // outputPath files handled by FileRegistry
|
|
360
|
+
}
|
|
361
|
+
const absPath = path.join(projectRoot, ownedKey.slice(3));
|
|
362
|
+
if (fs.existsSync(absPath)) {
|
|
363
|
+
fs.unlinkSync(absPath);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=target-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-rules.js","sourceRoot":"","sources":["../../../tool/schema/target-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,16 @@ export type PackageManager = 'apt' | 'apk';
|
|
|
9
9
|
* Determines environment-specific optimizations and compatibility checks
|
|
10
10
|
*/
|
|
11
11
|
export type DeploymentTarget = 'local' | 'codespaces' | 'gitpod' | 'devpod';
|
|
12
|
-
export type LanguageOverlay = 'dotnet' | 'nodejs' | 'python' | 'mkdocs' | 'java' | 'go' | 'rust' | 'bun' | 'powershell';
|
|
13
|
-
export type DatabaseOverlay = 'postgres' | 'redis' | 'mongodb' | 'mysql' | 'sqlserver' | 'sqlite' | 'minio' | 'rabbitmq' | 'redpanda' | 'nats';
|
|
14
|
-
export type CloudTool = 'azure-cli' | 'aws-cli' | 'gcloud' | 'kubectl-helm' | 'terraform' | 'pulumi';
|
|
15
|
-
export type DevTool = 'docker-in-docker' | 'docker-sock' | 'codex' | 'playwright' | 'git-helpers' | 'pre-commit' | 'commitlint' | 'just' | 'direnv' | 'modern-cli-tools' | 'ngrok' | 'spec-kit' | 'claude-code' | 'gemini-cli' | 'amp' | 'windsurf-cli' | 'opencode';
|
|
16
|
-
export type ObservabilityTool = 'otel-collector' | 'jaeger' | 'prometheus' | 'grafana' | 'loki';
|
|
12
|
+
export type LanguageOverlay = 'dotnet' | 'nodejs' | 'python' | 'mkdocs' | 'java' | 'go' | 'rust' | 'bun' | 'jupyter' | 'powershell';
|
|
13
|
+
export type DatabaseOverlay = 'postgres' | 'redis' | 'mongodb' | 'mysql' | 'sqlserver' | 'sqlite' | 'duckdb' | 'minio' | 'rabbitmq' | 'redpanda' | 'nats';
|
|
14
|
+
export type CloudTool = 'azure-cli' | 'aws-cli' | 'gcloud' | 'cloudflared' | 'kubectl-helm' | 'kind' | 'localstack' | 'terraform' | 'pulumi';
|
|
15
|
+
export type DevTool = 'docker-in-docker' | 'docker-sock' | 'codex' | 'playwright' | 'git-helpers' | 'grpc-tools' | 'keycloak' | 'mailpit' | 'pre-commit' | 'commitlint' | 'just' | 'direnv' | 'modern-cli-tools' | 'ngrok' | 'openapi-tools' | 'pandoc' | 'spec-kit' | 'tilt' | 'claude-code' | 'gemini-cli' | 'amp' | 'windsurf-cli' | 'opencode' | 'mkdocs2' | 'devcontainer-cli';
|
|
16
|
+
export type ObservabilityTool = 'alertmanager' | 'otel-collector' | 'otel-demo-nodejs' | 'otel-demo-python' | 'jaeger' | 'prometheus' | 'promtail' | 'grafana' | 'loki' | 'tempo';
|
|
17
|
+
/**
|
|
18
|
+
* Union of all overlay ID types — used for the flat `overlays` field
|
|
19
|
+
* in project config and anywhere an overlay ID is accepted regardless of category.
|
|
20
|
+
*/
|
|
21
|
+
export type OverlayId = LanguageOverlay | DatabaseOverlay | CloudTool | DevTool | ObservabilityTool;
|
|
17
22
|
export type Database = 'none' | 'postgres' | 'redis' | 'postgres+redis';
|
|
18
23
|
export interface DevContainerConfig {
|
|
19
24
|
/**
|
|
@@ -49,6 +54,11 @@ export interface DevContainerConfig {
|
|
|
49
54
|
* Editor profile for customizations
|
|
50
55
|
*/
|
|
51
56
|
export type EditorProfile = 'vscode' | 'jetbrains' | 'none';
|
|
57
|
+
export type ProjectEnvTarget = 'auto' | 'remoteEnv' | 'composeEnv';
|
|
58
|
+
export interface ProjectEnvVar {
|
|
59
|
+
value: string;
|
|
60
|
+
target?: ProjectEnvTarget;
|
|
61
|
+
}
|
|
52
62
|
/**
|
|
53
63
|
* Questionnaire response interface
|
|
54
64
|
*/
|
|
@@ -72,7 +82,9 @@ export interface QuestionnaireAnswers {
|
|
|
72
82
|
target?: DeploymentTarget;
|
|
73
83
|
minimal?: boolean;
|
|
74
84
|
editor?: EditorProfile;
|
|
85
|
+
projectEnv?: Record<string, ProjectEnvVar>;
|
|
75
86
|
customizations?: CustomizationConfig;
|
|
87
|
+
overlayParameters?: Record<string, string>;
|
|
76
88
|
}
|
|
77
89
|
/**
|
|
78
90
|
* Port attributes configuration
|
|
@@ -100,6 +112,9 @@ export interface DevContainer {
|
|
|
100
112
|
extensions?: string[];
|
|
101
113
|
settings?: Record<string, any>;
|
|
102
114
|
};
|
|
115
|
+
jetbrains?: {
|
|
116
|
+
backend: string;
|
|
117
|
+
};
|
|
103
118
|
};
|
|
104
119
|
forwardPorts?: number[];
|
|
105
120
|
portsAttributes?: Record<string, PortAttributes>;
|
|
@@ -133,6 +148,15 @@ export interface PortMetadata {
|
|
|
133
148
|
export interface NormalizedPort extends PortMetadata {
|
|
134
149
|
actualPort: number;
|
|
135
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Declaration of a single configurable parameter for an overlay.
|
|
153
|
+
* Parameters are resolved at generation time using {{cs.PARAM_NAME}} substitution.
|
|
154
|
+
*/
|
|
155
|
+
export interface OverlayParameterDefinition {
|
|
156
|
+
description: string;
|
|
157
|
+
default?: string;
|
|
158
|
+
sensitive?: boolean;
|
|
159
|
+
}
|
|
136
160
|
/**
|
|
137
161
|
* Overlay metadata from overlays.yml
|
|
138
162
|
*/
|
|
@@ -149,7 +173,10 @@ export interface OverlayMetadata {
|
|
|
149
173
|
ports?: (number | PortMetadata)[];
|
|
150
174
|
order?: number;
|
|
151
175
|
imports?: string[];
|
|
176
|
+
compose_imports?: string[];
|
|
152
177
|
minimal?: boolean;
|
|
178
|
+
hidden?: boolean;
|
|
179
|
+
parameters?: Record<string, OverlayParameterDefinition>;
|
|
153
180
|
}
|
|
154
181
|
/**
|
|
155
182
|
* User choice configuration for presets
|
|
@@ -249,6 +276,9 @@ export interface SuperpositionManifest {
|
|
|
249
276
|
reason: string;
|
|
250
277
|
};
|
|
251
278
|
containerName?: string;
|
|
279
|
+
target?: DeploymentTarget;
|
|
280
|
+
minimal?: boolean;
|
|
281
|
+
editor?: EditorProfile;
|
|
252
282
|
customizations?: {
|
|
253
283
|
enabled: boolean;
|
|
254
284
|
location: string;
|
|
@@ -268,6 +298,8 @@ export interface CustomizationConfig {
|
|
|
268
298
|
files?: Array<{
|
|
269
299
|
source: string;
|
|
270
300
|
destination: string;
|
|
301
|
+
/** Pre-loaded file content; avoids re-reading from disk when available (e.g. when materialized from a project config). */
|
|
302
|
+
content?: string;
|
|
271
303
|
}>;
|
|
272
304
|
}
|
|
273
305
|
export interface ProjectConfigFileEntry {
|
|
@@ -277,7 +309,7 @@ export interface ProjectConfigFileEntry {
|
|
|
277
309
|
export interface ProjectConfigCustomizationsInput {
|
|
278
310
|
devcontainerPatch?: DevContainer;
|
|
279
311
|
dockerComposePatch?: Record<string, any>;
|
|
280
|
-
|
|
312
|
+
envTemplate?: Record<string, string>;
|
|
281
313
|
scripts?: {
|
|
282
314
|
postCreate?: string[];
|
|
283
315
|
postStart?: string[];
|
|
@@ -287,6 +319,88 @@ export interface ProjectConfigCustomizationsInput {
|
|
|
287
319
|
content: string;
|
|
288
320
|
}>;
|
|
289
321
|
}
|
|
322
|
+
export type DiagnosticCategory = 'environment' | 'overlay' | 'manifest' | 'merge' | 'ports';
|
|
323
|
+
/**
|
|
324
|
+
* Whether a diagnostic finding can be automatically remediated.
|
|
325
|
+
*/
|
|
326
|
+
export type FixEligibility = 'automatic' | 'manual-only' | 'not-applicable';
|
|
327
|
+
export type RecheckScope = 'environment' | 'manifest' | 'devcontainer' | 'full';
|
|
328
|
+
export type SafetyClass = 'safe-unattended' | 'requires-manual-action';
|
|
329
|
+
export type ExecutionKind = 'shell-command' | 'manifest-migration' | 'regeneration' | 'no-op';
|
|
330
|
+
export type FixOutcome = 'fixed' | 'already-compliant' | 'skipped' | 'requires-manual-action';
|
|
331
|
+
export type ExitDisposition = 'success' | 'repaired-with-warnings' | 'unresolved-failures';
|
|
332
|
+
/**
|
|
333
|
+
* A single diagnostic finding produced by the doctor command.
|
|
334
|
+
* Extends the internal CheckResult with structured fix metadata.
|
|
335
|
+
*/
|
|
336
|
+
export interface DiagnosticFinding {
|
|
337
|
+
id: string;
|
|
338
|
+
category: DiagnosticCategory;
|
|
339
|
+
name: string;
|
|
340
|
+
status: 'pass' | 'warn' | 'fail';
|
|
341
|
+
message: string;
|
|
342
|
+
details?: string[];
|
|
343
|
+
fixEligibility: FixEligibility;
|
|
344
|
+
remediationKey?: string;
|
|
345
|
+
recheckScope: RecheckScope;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* A remediation action registered for a specific finding.
|
|
349
|
+
*/
|
|
350
|
+
export interface RemediationAction {
|
|
351
|
+
key: string;
|
|
352
|
+
findingId: string;
|
|
353
|
+
safetyClass: SafetyClass;
|
|
354
|
+
executionKind: ExecutionKind;
|
|
355
|
+
preconditions: string[];
|
|
356
|
+
plannedChanges: string[];
|
|
357
|
+
manualFallback: string[];
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Result of executing a single remediation action.
|
|
361
|
+
*/
|
|
362
|
+
export interface FixExecution {
|
|
363
|
+
findingId: string;
|
|
364
|
+
remediationKey: string;
|
|
365
|
+
attempted: boolean;
|
|
366
|
+
outcome: FixOutcome;
|
|
367
|
+
reason: string;
|
|
368
|
+
commands?: string[];
|
|
369
|
+
changedFiles?: string[];
|
|
370
|
+
backupPath?: string;
|
|
371
|
+
rechecked: boolean;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Aggregated outcome counts for a fix run.
|
|
375
|
+
*/
|
|
376
|
+
export interface FixOutcomeSummary {
|
|
377
|
+
fixed: number;
|
|
378
|
+
alreadyCompliant: number;
|
|
379
|
+
skipped: number;
|
|
380
|
+
requiresManualAction: number;
|
|
381
|
+
total: number;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Complete record of a doctor --fix execution.
|
|
385
|
+
*/
|
|
386
|
+
export interface FixRun {
|
|
387
|
+
outputPath: string;
|
|
388
|
+
requestedJson: boolean;
|
|
389
|
+
initialFindings: DiagnosticFinding[];
|
|
390
|
+
executions: FixExecution[];
|
|
391
|
+
finalFindings: DiagnosticFinding[];
|
|
392
|
+
summary: FixOutcomeSummary;
|
|
393
|
+
exitDisposition: ExitDisposition;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Resolved composition input — produced by mergeAnswers() after all user input has been
|
|
397
|
+
* collected and defaults applied. Guarantees that array fields which QuestionnaireAnswers
|
|
398
|
+
* leaves optional are present (empty arrays at minimum), making downstream code type-safe.
|
|
399
|
+
*/
|
|
400
|
+
export interface CompositionInput extends QuestionnaireAnswers {
|
|
401
|
+
language: LanguageOverlay[];
|
|
402
|
+
database: DatabaseOverlay[];
|
|
403
|
+
}
|
|
290
404
|
export interface ProjectConfigSelection {
|
|
291
405
|
stack?: Stack;
|
|
292
406
|
baseImage?: BaseImage;
|
|
@@ -294,17 +408,14 @@ export interface ProjectConfigSelection {
|
|
|
294
408
|
containerName?: string;
|
|
295
409
|
preset?: string;
|
|
296
410
|
presetChoices?: Record<string, string>;
|
|
297
|
-
|
|
298
|
-
database?: DatabaseOverlay[];
|
|
299
|
-
observability?: ObservabilityTool[];
|
|
300
|
-
cloudTools?: CloudTool[];
|
|
301
|
-
devTools?: DevTool[];
|
|
302
|
-
playwright?: boolean;
|
|
411
|
+
overlays?: OverlayId[];
|
|
303
412
|
outputPath?: string;
|
|
304
413
|
portOffset?: number;
|
|
305
414
|
target?: DeploymentTarget;
|
|
306
415
|
minimal?: boolean;
|
|
307
416
|
editor?: EditorProfile;
|
|
417
|
+
env?: Record<string, ProjectEnvVar>;
|
|
308
418
|
customizations?: ProjectConfigCustomizationsInput;
|
|
419
|
+
parameters?: Record<string, string>;
|
|
309
420
|
}
|
|
310
421
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../tool/schema/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../tool/schema/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../tool/utils/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../tool/utils/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAuCvD;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS1E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAgB1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAuBtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe/E;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC"}
|
package/dist/tool/utils/merge.js
CHANGED
|
@@ -45,6 +45,15 @@ export function deepMerge(target, source) {
|
|
|
45
45
|
// Special handling for remoteEnv to merge PATH variables intelligently
|
|
46
46
|
output[key] = mergeRemoteEnv(target[key], source[key]);
|
|
47
47
|
}
|
|
48
|
+
else if (key === 'postCreateCommand' ||
|
|
49
|
+
key === 'postStartCommand' ||
|
|
50
|
+
key === 'postAttachCommand') {
|
|
51
|
+
// Normalise string commands to objects before merging so that
|
|
52
|
+
// spreading a string ("npx ...") never produces { 0:'n', 1:'p', ... }
|
|
53
|
+
const t = typeof target[key] === 'string' ? { default: target[key] } : target[key];
|
|
54
|
+
const s = typeof source[key] === 'string' ? { default: source[key] } : source[key];
|
|
55
|
+
output[key] = deepMerge(t, s);
|
|
56
|
+
}
|
|
48
57
|
else {
|
|
49
58
|
// Recursively merge objects
|
|
50
59
|
output[key] = deepMerge(target[key], source[key]);
|