@wyrd-company/dcb-darwin-arm64 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +94 -13
  2. package/bin/dcb +0 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,13 +1,24 @@
1
1
  # dcb
2
2
 
3
+ ![dcb logo](docs/user/assets/logo.svg#gh-light-mode-only)
4
+ ![dcb logo](docs/user/assets/logo-dark.svg#gh-dark-mode-only)
5
+
3
6
  `dcb` builds and runs [development containers](https://containers.dev/) from a
4
7
  `devcontainer.json`. It builds images on the Docker daemon's built-in BuildKit,
5
- and creates, starts, and runs lifecycle commands in containers through the
6
- Docker Engine API. Every command writes one JSON result line to stdout, except
7
- help and a valid `exec` invocation.
8
+ and runs host initialization on up. It creates, starts, and runs lifecycle
9
+ commands in containers through the
10
+ Docker Engine API. Commands other than `outdated`, `features info`, and
11
+ `features resolve-dependencies`, and `upgrade` write one JSON result line to
12
+ stdout, except
13
+ help, a valid `exec` invocation, and archive exports to stdout.
14
+
15
+ Dockerfile build network and extra host options map to native BuildKit controls.
8
16
 
9
17
  Documentation is at [wyrd.foo/docs/dcb](https://wyrd.foo/docs/dcb), published
10
- from [`docs/`](docs).
18
+ from [`docs/user/`](docs/user).
19
+
20
+ Build inputs support local environment and workspace variable substitution.
21
+ Library callers select the environment with `builder.Options.LocalEnv`.
11
22
 
12
23
  ## Install
13
24
 
@@ -24,9 +35,10 @@ APT and RPM need the [repo.wyrd.foo](https://repo.wyrd.foo) package
24
35
  repository. [Installation](https://wyrd.foo/docs/dcb/install) gives the setup
25
36
  commands and the release archives.
26
37
 
27
- `dcb` runs on Linux and macOS, on `amd64` and `arm64`. It needs a Docker Engine
28
- that it can reach through the standard `DOCKER_HOST` environment; the `docker`
29
- command is not needed. Podman is not supported.
38
+ `dcb` runs on Linux and macOS, on `amd64` and `arm64`. Container operations need
39
+ a Docker Engine reachable through the standard `DOCKER_HOST` environment; the
40
+ `docker` command is not needed. Local Feature packaging does not need Docker.
41
+ Podman is not supported.
30
42
 
31
43
  ## Use
32
44
 
@@ -34,6 +46,10 @@ command is not needed. Podman is not supported.
34
46
  dcb up --workspace-folder .
35
47
  dcb exec --workspace-folder . -- sh -c 'id && pwd'
36
48
  dcb down --workspace-folder .
49
+ dcb features package ./src --output-folder ./packaged
50
+ dcb features generate-docs -p ./src -n example/collection
51
+ dcb features info verbose ghcr.io/example/collection/sample:1
52
+ dcb templates generate-docs -p ./templates
37
53
  ```
38
54
 
39
55
  ```json
@@ -76,18 +92,27 @@ matched. [Overview](https://wyrd.foo/docs/dcb/overview) lists the differences.
76
92
 
77
93
  These upstream command families are not yet supported:
78
94
 
79
- - [`outdated`](https://github.com/wyrd-company/devcontainer-builder/issues/20)
80
- - [`upgrade`](https://github.com/wyrd-company/devcontainer-builder/issues/21)
81
- - [Feature authoring commands under `features`](https://github.com/wyrd-company/devcontainer-builder/issues/22)
82
- - [`templates`](https://github.com/wyrd-company/devcontainer-builder/issues/23)
95
+ - [Feature authoring commands other than `features package`, `features generate-docs`, and `features info`](https://github.com/wyrd-company/devcontainer-builder/issues/22)
96
+ - [Template commands other than `templates metadata` and `templates generate-docs`](https://github.com/wyrd-company/devcontainer-builder/issues/23)
83
97
 
84
- ## Go libraries
98
+ `dcb outdated` reports current, wanted, and latest OCI Feature versions as a text
99
+ table or with `--output-format json`. It does not need Docker or change lockfiles.
100
+
101
+ ## Developers
85
102
 
86
103
  The packages under [`pkg/`](pkg) build images, run containers on Docker or
87
104
  Kubernetes, and convert configurations into Kubernetes Pods. They can be
88
- embedded in a service or an operator. See
105
+ embedded in a service or an operator. Image-source Kubernetes projection supports
106
+ command overrides and configuration-over-Feature environment precedence. See
89
107
  [Go libraries](https://wyrd.foo/docs/dcb/library).
90
108
 
109
+ Dockerfile `build.options` supports native BuildKit cache bypass, image pulling,
110
+ networking, image labels,
111
+ build arguments, generated Dockerfile target selection, cache imports/exports,
112
+ build secrets, SSH session forwarding, shared memory size and build resource limits.
113
+ Other build option mappings remain explicit limitations; see
114
+ [configuration conformance](docs/audits/schema-conformance.md).
115
+
91
116
  ## Development
92
117
 
93
118
  See [CONTRIBUTING.md](CONTRIBUTING.md). `task check` runs the checks that a
@@ -98,3 +123,59 @@ change must pass; `task parity` runs the parity harness.
98
123
  [MIT](LICENSE). The npm launcher and some release scripts are adapted from
99
124
  other Wyrd Company projects under the Apache License 2.0; see
100
125
  [`npm/NOTICE`](npm/NOTICE).
126
+
127
+ Kubernetes image-source `runArgs` maps native boolean assignments, combined and
128
+ attached short forms, stdin and TTY. Bare environment keys use `LocalEnv` (nil
129
+ uses the process environment); explicit empty maps disable inheritance. Final unset
130
+ keys require `ImageConfig`; removing an image-owned variable returns an error.
131
+ Merged security flags follow `runArgs`; merged security options use first-seen
132
+ union order. Detach conflicts with inherited output
133
+ attachment, and enabled init has no PodSpec equivalent. Other Docker flag and
134
+ remaining Compose translations remain separate coverage.
135
+
136
+ Kubernetes `ProjectCompose` primary command projection defaults `overrideCommand`
137
+ to false. Its shell wrapper runs Feature entrypoints in order, then the service
138
+ entrypoint and command. Absent service values fall back to the image; an explicit
139
+ empty entrypoint suppresses both image Entrypoint and Cmd, and an explicit empty
140
+ command suppresses image Cmd. Configuration `containerEnv` overrides ordered
141
+ Features, then service environment, above inherited image environment. Dollars
142
+ remain literal. Full Compose `runArgs` needs separate checks.
143
+
144
+ Kubernetes Compose sidecars preserve service command and entrypoint defaults,
145
+ including explicit empty overrides and the `[""]` entrypoint reset.
146
+ `ComposeProjectRequest.SidecarImageConfigs`
147
+ supplies native OCI image configuration by service name when an empty command
148
+ needs image entrypoint fallback or an unset environment key needs checking.
149
+ An explicit empty entrypoint suppresses image Entrypoint and Cmd; a service with
150
+ no executable returns a contextual error. Unset image-owned environment values
151
+ return an error because Pod environment omission inherits image values. Explicit
152
+ empty environment values remain empty. Authored command and environment dollars
153
+ remain literal. Sidecars receive no primary configuration or Feature overlays.
154
+
155
+ Native Docker Compose defaults `overrideCommand` to false. The primary shell
156
+ wrapper always runs ordered Feature entrypoints, then the preserved service or
157
+ image command. True uses the wrapper with no original command. The wrapper does
158
+ not enable stdin or TTY. Empty service entrypoints suppress image Entrypoint and
159
+ Cmd; empty commands suppress image Cmd. Sidecars use Engine's native entrypoint
160
+ reset, including `[""]`; the primary preserves that argument inside the pinned
161
+ upstream wrapper. Image inspection for command fallback is needed only when the
162
+ service entrypoint is absent.
163
+
164
+ Configuration `containerEnv` wins over ordered Features, then service values,
165
+ above image inheritance. Unset service environment keys remove image variables;
166
+ empty values stay empty. Generated override YAML escapes dollars for Compose
167
+ interpolation; direct runtime values retain literal dollars. `remoteEnv` applies
168
+ to exec and lifecycle commands. These checks cover native host command and
169
+ environment handling; full Compose and schema conformance remain separate work.
170
+
171
+ Image-source Docker containers always run the pinned shell wrapper, including
172
+ `overrideCommand: false` without Features. That mode appends the inspected image
173
+ Entrypoint and Cmd. The image stop signal remains inherited unless `runArgs`
174
+ overrides it. Authored `--entrypoint` values are parsed and replaced by the
175
+ wrapper on Docker and Kubernetes. Docker `--rm` uses native Engine automatic
176
+ deletion. Kubernetes reports enabled `--rm` as unsupported because a standalone
177
+ Pod has no equivalent deletion behavior; a final `--rm=false` is accepted.
178
+
179
+ Create containers before their first start with `dcb up --no-start`, then bind
180
+ external resources and run ordinary `dcb up`. The Go hosts expose the same mode
181
+ through `UpRequest.NoStart`. See [usage](docs/user/usage.md#create-before-first-start).
package/bin/dcb CHANGED
Binary file
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  ]
17
17
  },
18
18
  "name": "@wyrd-company/dcb-darwin-arm64",
19
- "version": "0.2.0",
19
+ "version": "0.3.0",
20
20
  "os": [
21
21
  "darwin"
22
22
  ],