container-superposition 0.1.7 → 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 -1537
- 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/doctor.d.ts.map +1 -1
- package/dist/tool/commands/doctor.js +141 -6
- 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 +9 -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 +691 -27
- 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 +24 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts +13 -1
- package/dist/tool/schema/project-config.d.ts.map +1 -1
- package/dist/tool/schema/project-config.js +183 -9
- 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 +38 -1
- package/dist/tool/schema/types.d.ts.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/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 +92 -14
- package/docs/overlays.md +113 -28
- 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 +27 -2
- package/overlays/.shared/compose/nvidia-gpu-devcontainer.yml +22 -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/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/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/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/postgres/.env.example +5 -5
- package/overlays/postgres/devcontainer.patch.json +4 -4
- package/overlays/postgres/docker-compose.yml +10 -6
- package/overlays/postgres/overlay.yml +19 -1
- 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/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/package.json +3 -2
- package/tool/schema/config.schema.json +31 -1
- package/tool/schema/overlay-manifest.schema.json +33 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: qdrant
|
|
2
|
+
name: Qdrant
|
|
3
|
+
description: High-performance vector database for similarity search and embeddings
|
|
4
|
+
category: database
|
|
5
|
+
supports:
|
|
6
|
+
- compose
|
|
7
|
+
requires: []
|
|
8
|
+
suggests:
|
|
9
|
+
- ollama
|
|
10
|
+
- python
|
|
11
|
+
- nodejs
|
|
12
|
+
conflicts: []
|
|
13
|
+
tags:
|
|
14
|
+
- database
|
|
15
|
+
- vector
|
|
16
|
+
- embeddings
|
|
17
|
+
- search
|
|
18
|
+
- qdrant
|
|
19
|
+
ports:
|
|
20
|
+
- port: 6333
|
|
21
|
+
service: qdrant
|
|
22
|
+
protocol: http
|
|
23
|
+
description: Qdrant REST API
|
|
24
|
+
onAutoForward: notify
|
|
25
|
+
connectionStringTemplate: 'http://{host}:{port}'
|
|
26
|
+
- port: 6334
|
|
27
|
+
service: qdrant
|
|
28
|
+
protocol: grpc
|
|
29
|
+
description: Qdrant gRPC API
|
|
30
|
+
onAutoForward: ignore
|
|
31
|
+
parameters:
|
|
32
|
+
QDRANT_VERSION:
|
|
33
|
+
description: Qdrant Docker image tag
|
|
34
|
+
default: latest
|
|
35
|
+
QDRANT_PORT:
|
|
36
|
+
description: Host port mapped to Qdrant REST API (6333 inside container)
|
|
37
|
+
default: '6333'
|
|
38
|
+
QDRANT_GRPC_PORT:
|
|
39
|
+
description: Host port mapped to Qdrant gRPC API (6334 inside container)
|
|
40
|
+
default: '6334'
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Skaffold Overlay
|
|
2
|
+
|
|
3
|
+
Installs [Skaffold](https://skaffold.dev), Google's command-line tool for continuous development on Kubernetes — handling the build, push, and deploy lifecycle automatically as source files change.
|
|
4
|
+
|
|
5
|
+
> **Note:** This overlay conflicts with `tilt` because both tools serve the same "continuous Kubernetes development" role. Choose `skaffold` for a configuration-file-driven, CI-friendly pipeline, or `tilt` for a more interactive, UI-driven workflow.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **`skaffold dev`** — Watch source files and automatically rebuild, push, and redeploy on changes
|
|
10
|
+
- **`skaffold run`** — One-shot build and deploy pipeline for CI/CD integration
|
|
11
|
+
- **Declarative config** — `skaffold.yaml` defines the entire build-test-deploy pipeline as code
|
|
12
|
+
- **Multiple builders** — Docker, Buildpacks, Bazel, Jib (Maven/Gradle), and more
|
|
13
|
+
- **Multiple deployers** — `kubectl`, Helm, Kustomize, and Cloud Run
|
|
14
|
+
- **Test integration** — Container Structure Tests and custom test steps built in
|
|
15
|
+
- **Profile support** — Swap out configs per environment (dev, staging, prod)
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
Skaffold is installed as a static binary in the devcontainer during `setup.sh`. It orchestrates the build-push-deploy cycle against whichever Kubernetes cluster is active in your `kubeconfig` (e.g. a k3d or kind cluster).
|
|
20
|
+
|
|
21
|
+
**Suggested overlays:**
|
|
22
|
+
|
|
23
|
+
- `kubectl-helm` — Kubernetes CLI and Helm used as Skaffold deployers
|
|
24
|
+
- `kind` — Full-conformance local Kubernetes cluster
|
|
25
|
+
- `k3d` — Lightweight local Kubernetes cluster
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
Skaffold is installed automatically during devcontainer creation via `setup.sh`:
|
|
30
|
+
|
|
31
|
+
- Downloads the Skaffold binary for your architecture (amd64/arm64)
|
|
32
|
+
- Installs to `/usr/local/bin/skaffold`
|
|
33
|
+
- Verifies the installation
|
|
34
|
+
|
|
35
|
+
## Common Commands
|
|
36
|
+
|
|
37
|
+
### Development Workflow
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Continuous development — rebuild and redeploy on file changes
|
|
41
|
+
skaffold dev
|
|
42
|
+
|
|
43
|
+
# One-shot build + deploy
|
|
44
|
+
skaffold run
|
|
45
|
+
|
|
46
|
+
# Delete all resources deployed by Skaffold
|
|
47
|
+
skaffold delete
|
|
48
|
+
|
|
49
|
+
# Preview what Skaffold would deploy (dry run)
|
|
50
|
+
skaffold render
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Build and Test
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Build images only (no deploy)
|
|
57
|
+
skaffold build
|
|
58
|
+
|
|
59
|
+
# Run tests only
|
|
60
|
+
skaffold test
|
|
61
|
+
|
|
62
|
+
# Build and push to a registry
|
|
63
|
+
skaffold build --push
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Profiles
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Use a specific profile
|
|
70
|
+
skaffold dev --profile staging
|
|
71
|
+
|
|
72
|
+
# Combine multiple profiles
|
|
73
|
+
skaffold run --profile prod --profile feature-flag
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Debugging
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Enable port-forwarding for services
|
|
80
|
+
skaffold dev --port-forward
|
|
81
|
+
|
|
82
|
+
# Verbose output
|
|
83
|
+
skaffold dev -v debug
|
|
84
|
+
|
|
85
|
+
# Show rendered manifests
|
|
86
|
+
skaffold render --output manifests.yaml
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
### skaffold.yaml
|
|
92
|
+
|
|
93
|
+
Create a `skaffold.yaml` in your project root:
|
|
94
|
+
|
|
95
|
+
```yaml
|
|
96
|
+
apiVersion: skaffold/v4beta11
|
|
97
|
+
kind: Config
|
|
98
|
+
metadata:
|
|
99
|
+
name: my-app
|
|
100
|
+
build:
|
|
101
|
+
artifacts:
|
|
102
|
+
- image: my-app
|
|
103
|
+
docker:
|
|
104
|
+
dockerfile: Dockerfile
|
|
105
|
+
deploy:
|
|
106
|
+
kubectl:
|
|
107
|
+
manifests:
|
|
108
|
+
- k8s/*.yaml
|
|
109
|
+
test:
|
|
110
|
+
- image: my-app
|
|
111
|
+
structureTests:
|
|
112
|
+
- ./structure-test.yaml
|
|
113
|
+
profiles:
|
|
114
|
+
- name: prod
|
|
115
|
+
deploy:
|
|
116
|
+
helm:
|
|
117
|
+
releases:
|
|
118
|
+
- name: my-app
|
|
119
|
+
chartPath: helm/my-app
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Common Builders
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
# Docker (default)
|
|
126
|
+
build:
|
|
127
|
+
artifacts:
|
|
128
|
+
- image: my-app
|
|
129
|
+
docker:
|
|
130
|
+
dockerfile: Dockerfile
|
|
131
|
+
|
|
132
|
+
# Buildpacks (no Dockerfile needed)
|
|
133
|
+
build:
|
|
134
|
+
artifacts:
|
|
135
|
+
- image: my-app
|
|
136
|
+
buildpacks:
|
|
137
|
+
builder: gcr.io/buildpacks/builder:v1
|
|
138
|
+
|
|
139
|
+
# Jib (Java/Maven)
|
|
140
|
+
build:
|
|
141
|
+
artifacts:
|
|
142
|
+
- image: my-app
|
|
143
|
+
jib:
|
|
144
|
+
project: my-module
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Common Deployers
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
# kubectl (plain manifests)
|
|
151
|
+
deploy:
|
|
152
|
+
kubectl:
|
|
153
|
+
manifests:
|
|
154
|
+
- k8s/**/*.yaml
|
|
155
|
+
|
|
156
|
+
# Helm
|
|
157
|
+
deploy:
|
|
158
|
+
helm:
|
|
159
|
+
releases:
|
|
160
|
+
- name: my-app
|
|
161
|
+
chartPath: helm/my-app
|
|
162
|
+
valuesFiles:
|
|
163
|
+
- helm/values.yaml
|
|
164
|
+
|
|
165
|
+
# Kustomize
|
|
166
|
+
deploy:
|
|
167
|
+
kustomize:
|
|
168
|
+
paths:
|
|
169
|
+
- k8s/overlays/dev
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Benefits vs Tilt
|
|
173
|
+
|
|
174
|
+
| Feature | Skaffold (this overlay) | Tilt |
|
|
175
|
+
| --------------------- | --------------------------------- | -------------------------------- |
|
|
176
|
+
| **Primary interface** | ✅ CLI + skaffold.yaml config | Interactive UI (port 10350) |
|
|
177
|
+
| **CI/CD suitability** | ✅ First-class CI support | ⚠️ UI-oriented, less CI-friendly |
|
|
178
|
+
| **Config format** | ✅ Declarative YAML | Starlark/Python (Tiltfile) |
|
|
179
|
+
| **Build systems** | ✅ Docker, Buildpacks, Jib, Bazel | Docker, Buildpacks |
|
|
180
|
+
| **Deploy targets** | ✅ kubectl, Helm, Kustomize, Run | kubectl, Helm |
|
|
181
|
+
| **Learning curve** | Lower (declarative YAML) | Programmable (more flexible) |
|
|
182
|
+
| **Debugging support** | ✅ Built-in debug mode | ✅ Built-in live updates |
|
|
183
|
+
|
|
184
|
+
**Choose Skaffold when:**
|
|
185
|
+
|
|
186
|
+
- You want a declarative, portable, config-file-driven pipeline
|
|
187
|
+
- CI/CD integration is a priority
|
|
188
|
+
- You need support for multiple build systems (Jib, Buildpacks, Bazel)
|
|
189
|
+
|
|
190
|
+
**Choose Tilt when:**
|
|
191
|
+
|
|
192
|
+
- You prefer an interactive browser UI for development
|
|
193
|
+
- You want fine-grained control over the update pipeline via a Tiltfile
|
|
194
|
+
|
|
195
|
+
## Use Cases
|
|
196
|
+
|
|
197
|
+
- **Inner loop acceleration** — Rebuild and redeploy Kubernetes workloads on save, without manual `docker build && kubectl apply`
|
|
198
|
+
- **Multi-service applications** — Manage build and deploy of multiple microservices from a single `skaffold.yaml`
|
|
199
|
+
- **CI/CD integration** — Use `skaffold run` in pipelines for consistent build-test-deploy flows
|
|
200
|
+
- **Helm chart development** — Iterate on Helm charts with live cluster feedback
|
|
201
|
+
- **GitOps preview environments** — Render manifests for inspection or PR previews
|
|
202
|
+
|
|
203
|
+
**Integrates well with:**
|
|
204
|
+
|
|
205
|
+
- `kubectl-helm` — Used by Skaffold's deploy pipeline
|
|
206
|
+
- `k3d` — Lightweight local cluster for development
|
|
207
|
+
- `kind` — Full-conformance local cluster for testing
|
|
208
|
+
|
|
209
|
+
## Troubleshooting
|
|
210
|
+
|
|
211
|
+
### No kubeconfig Found
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Ensure kubectl is configured (kubectl-helm overlay must be selected)
|
|
215
|
+
kubectl cluster-info
|
|
216
|
+
|
|
217
|
+
# If using k3d, merge cluster config
|
|
218
|
+
k3d kubeconfig merge dev --kubeconfig-merge-default
|
|
219
|
+
|
|
220
|
+
# If using kind, kubeconfig is set automatically on cluster creation
|
|
221
|
+
kind create cluster --name dev
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Build Failures
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# Check Docker is accessible
|
|
228
|
+
docker info
|
|
229
|
+
|
|
230
|
+
# Run with verbose logging
|
|
231
|
+
skaffold dev -v debug
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Deploy Failures
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# View Kubernetes events
|
|
238
|
+
kubectl get events --sort-by='.lastTimestamp'
|
|
239
|
+
|
|
240
|
+
# Tail pod logs
|
|
241
|
+
kubectl logs -f deployment/my-app
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## References
|
|
245
|
+
|
|
246
|
+
- [Skaffold Documentation](https://skaffold.dev/docs/)
|
|
247
|
+
- [Skaffold GitHub](https://github.com/GoogleContainerTools/skaffold)
|
|
248
|
+
- [skaffold.yaml Reference](https://skaffold.dev/docs/references/yaml/)
|
|
249
|
+
- [Kubernetes Documentation](https://kubernetes.io/docs/)
|
|
250
|
+
|
|
251
|
+
**Related Overlays:**
|
|
252
|
+
|
|
253
|
+
- [`kubectl-helm`](../kubectl-helm/README.md) — Kubernetes CLI and Helm (recommended with Skaffold)
|
|
254
|
+
- [`kind`](../kind/README.md) — Full-conformance local Kubernetes cluster
|
|
255
|
+
- [`k3d`](../k3d/README.md) — Lightweight local Kubernetes cluster
|
|
256
|
+
- [`tilt`](../tilt/README.md) — Alternative interactive Kubernetes development tool (conflicts)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
id: skaffold
|
|
2
|
+
name: Skaffold
|
|
3
|
+
description: Continuous development and deployment pipeline for Kubernetes applications
|
|
4
|
+
category: dev
|
|
5
|
+
supports: []
|
|
6
|
+
requires: []
|
|
7
|
+
suggests:
|
|
8
|
+
- kubectl-helm
|
|
9
|
+
- kind
|
|
10
|
+
- k3d
|
|
11
|
+
conflicts:
|
|
12
|
+
- tilt
|
|
13
|
+
tags:
|
|
14
|
+
- dev
|
|
15
|
+
- kubernetes
|
|
16
|
+
- k8s
|
|
17
|
+
- cicd
|
|
18
|
+
- deployment
|
|
19
|
+
- skaffold
|
|
20
|
+
ports: []
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Setup script for Skaffold
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔧 Setting up Skaffold..."
|
|
7
|
+
|
|
8
|
+
# Source shared setup utilities
|
|
9
|
+
# shellcheck source=setup-utils.sh
|
|
10
|
+
source "$(dirname "${BASH_SOURCE[0]}")/setup-utils.sh"
|
|
11
|
+
|
|
12
|
+
detect_arch
|
|
13
|
+
|
|
14
|
+
SKAFFOLD_VERSION="${SKAFFOLD_VERSION:-v2.13.2}"
|
|
15
|
+
echo "📦 Installing Skaffold ${SKAFFOLD_VERSION}..."
|
|
16
|
+
|
|
17
|
+
install_binary \
|
|
18
|
+
"https://storage.googleapis.com/skaffold/releases/${SKAFFOLD_VERSION}/skaffold-linux-${CS_ARCH}" \
|
|
19
|
+
"skaffold"
|
|
20
|
+
|
|
21
|
+
# Verify installation
|
|
22
|
+
if command -v skaffold &>/dev/null; then
|
|
23
|
+
echo "✅ Skaffold installed successfully"
|
|
24
|
+
skaffold version
|
|
25
|
+
else
|
|
26
|
+
echo "❌ Skaffold installation failed"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
echo "✅ Skaffold setup complete"
|
|
31
|
+
echo ""
|
|
32
|
+
echo "ℹ️ To start continuous development, run:"
|
|
33
|
+
echo " skaffold dev"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Verification script for Skaffold overlay
|
|
3
|
+
# Confirms Skaffold is installed
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
echo "🔍 Verifying Skaffold overlay..."
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
# Check Skaffold is installed
|
|
11
|
+
echo "1️⃣ Checking Skaffold installation..."
|
|
12
|
+
if command -v skaffold &>/dev/null; then
|
|
13
|
+
skaffold version
|
|
14
|
+
echo " ✅ Skaffold is installed"
|
|
15
|
+
else
|
|
16
|
+
echo " ❌ Skaffold is not installed"
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
echo ""
|
|
21
|
+
echo "✅ Skaffold overlay verification complete"
|
|
22
|
+
echo ""
|
|
23
|
+
echo "ℹ️ To start continuous development, run:"
|
|
24
|
+
echo " skaffold dev"
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "container-superposition",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Solution-ready devcontainer templates and features with guided initialization",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/scripts/init.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"container-superposition": "./dist/scripts/init.js"
|
|
8
|
+
"container-superposition": "./dist/scripts/init.js",
|
|
9
|
+
"cs": "./dist/scripts/init.js"
|
|
9
10
|
},
|
|
10
11
|
"scripts": {
|
|
11
12
|
"build": "tsc",
|
|
@@ -249,6 +249,29 @@
|
|
|
249
249
|
"enum": ["vscode", "jetbrains", "none"],
|
|
250
250
|
"description": "Editor customization profile"
|
|
251
251
|
},
|
|
252
|
+
"env": {
|
|
253
|
+
"type": "object",
|
|
254
|
+
"description": "Project-level environment variables routed to remoteEnv or docker-compose based on stack/target",
|
|
255
|
+
"additionalProperties": {
|
|
256
|
+
"oneOf": [
|
|
257
|
+
{
|
|
258
|
+
"type": "string"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"type": "object",
|
|
262
|
+
"properties": {
|
|
263
|
+
"value": { "type": "string" },
|
|
264
|
+
"target": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"enum": ["auto", "remoteEnv", "composeEnv"]
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"required": ["value"],
|
|
270
|
+
"additionalProperties": false
|
|
271
|
+
}
|
|
272
|
+
]
|
|
273
|
+
}
|
|
274
|
+
},
|
|
252
275
|
"customizations": {
|
|
253
276
|
"type": "object",
|
|
254
277
|
"properties": {
|
|
@@ -260,12 +283,19 @@
|
|
|
260
283
|
"type": "object",
|
|
261
284
|
"description": "Additional docker-compose content merged during generation"
|
|
262
285
|
},
|
|
286
|
+
"envTemplate": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"additionalProperties": {
|
|
289
|
+
"type": "string"
|
|
290
|
+
},
|
|
291
|
+
"description": "Variables written to .env.example; use env for runtime container environment"
|
|
292
|
+
},
|
|
263
293
|
"environment": {
|
|
264
294
|
"type": "object",
|
|
265
295
|
"additionalProperties": {
|
|
266
296
|
"type": "string"
|
|
267
297
|
},
|
|
268
|
-
"description": "
|
|
298
|
+
"description": "Deprecated alias for envTemplate; variables written to .env.example"
|
|
269
299
|
},
|
|
270
300
|
"scripts": {
|
|
271
301
|
"type": "object",
|
|
@@ -136,6 +136,14 @@
|
|
|
136
136
|
},
|
|
137
137
|
"default": []
|
|
138
138
|
},
|
|
139
|
+
"compose_imports": {
|
|
140
|
+
"type": "array",
|
|
141
|
+
"description": "Shared docker-compose fragments to import from overlays/.shared/compose/ (merged before the overlay's own docker-compose.yml)",
|
|
142
|
+
"items": {
|
|
143
|
+
"type": "string"
|
|
144
|
+
},
|
|
145
|
+
"default": []
|
|
146
|
+
},
|
|
139
147
|
"minimal": {
|
|
140
148
|
"type": "boolean",
|
|
141
149
|
"description": "Whether this overlay is excluded in minimal mode (true = extra/optional)",
|
|
@@ -145,6 +153,31 @@
|
|
|
145
153
|
"type": "boolean",
|
|
146
154
|
"description": "Whether this overlay is hidden from the interactive questionnaire (code-only use)",
|
|
147
155
|
"default": false
|
|
156
|
+
},
|
|
157
|
+
"parameters": {
|
|
158
|
+
"type": "object",
|
|
159
|
+
"description": "Configurable parameters declared by this overlay. Users supply values in superposition.yml or via CLI. Substituted at generation time using {{cs.PARAM_NAME}} syntax.",
|
|
160
|
+
"additionalProperties": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"description": "Definition of a single overlay parameter",
|
|
163
|
+
"required": ["description"],
|
|
164
|
+
"properties": {
|
|
165
|
+
"description": {
|
|
166
|
+
"type": "string",
|
|
167
|
+
"description": "Human-readable explanation of the parameter, shown in interactive prompts"
|
|
168
|
+
},
|
|
169
|
+
"default": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"description": "Default value used when no value is supplied. Absence makes the parameter required."
|
|
172
|
+
},
|
|
173
|
+
"sensitive": {
|
|
174
|
+
"type": "boolean",
|
|
175
|
+
"description": "When true, the parameter value is treated as a secret — masked in interactive prompts and redacted in plan output",
|
|
176
|
+
"default": false
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"additionalProperties": false
|
|
180
|
+
}
|
|
148
181
|
}
|
|
149
182
|
},
|
|
150
183
|
"additionalProperties": false
|