mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-24 14:59:22 +00:00
feat: complete structured CLI output
- unify human, plain, and JSON CLI output modes - standardize diagnostics, lifecycle events, colors, quiet, and verbose handling - preserve argument forwarding and improve CLI help and summaries - document and release version 0.9.5
This commit is contained in:
34
docs/reference/cli-output.mdx
Normal file
34
docs/reference/cli-output.mdx
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
sidebar_label: CLI output
|
||||
---
|
||||
|
||||
# CLI output (experimental)
|
||||
|
||||
The structured output implementation is being developed incrementally.
|
||||
Currently these global options apply to diagnostics emitted through the logger:
|
||||
|
||||
```sh
|
||||
dcr --output plain build
|
||||
dcr --output json build
|
||||
dcr --color never build
|
||||
dcr --quiet build
|
||||
dcr --verbose build
|
||||
```
|
||||
|
||||
`--output` accepts `human` (default), `plain`, or `json`.
|
||||
Diagnostics are written to stderr. JSON diagnostics are newline-delimited objects
|
||||
with `schema_version: 1`, `event`, and `message` fields. Command statuses use the
|
||||
shared output helpers, build reporting emits structured lifecycle events, and
|
||||
compiler output is represented as JSON events with its original stream and text.
|
||||
The protocol is still experimental: some raw command data and subprocess stdout
|
||||
remain unstructured.
|
||||
|
||||
`--color` accepts `auto`, `always`, or `never`. Automatic coloring requires a
|
||||
terminal and respects `NO_COLOR`. Plain and JSON diagnostics never add colors.
|
||||
Quiet mode preserves warnings, errors, and compiler diagnostics; verbose mode
|
||||
enables debug and trace logging. Arguments following `--` are passed through
|
||||
unchanged.
|
||||
|
||||
Remaining work includes migrating the remaining raw command data and subprocess
|
||||
stdout, improving progress rendering and contextual errors, and expanding
|
||||
integration coverage for stdout/stderr and closed pipes.
|
||||
@@ -111,7 +111,11 @@ Never fails the command — warnings only. Pre-release suffixes (`1.0.0-dev`) ar
|
||||
| `qt` | `false` | Enable automatic Qt meta-object handling (MOC, UIC, RCC) |
|
||||
|
||||
Settings from raw config (not in typed struct):
|
||||
- `pkg_config` — list of pkg-config packages
|
||||
- `pkg_config` — list of packages queried for build-wide compiler/linker flags
|
||||
|
||||
Dependencies can also declare a system package directly, for example
|
||||
`fmt = { pkg-config = "fmt" }`. This records the package in `dcr.lock` and applies
|
||||
the flags returned by `pkg-config --cflags` and `pkg-config --libs`.
|
||||
- `ldscript` — linker script path
|
||||
- `build.steps` / `build.post_steps` — codegen steps
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ sidebar_label: Dependencies
|
||||
|
||||
## Formats
|
||||
|
||||
The `[dependencies]` section supports three formats:
|
||||
The `[dependencies]` section supports registry, path, Git, and `pkg-config` dependencies:
|
||||
|
||||
### String (registry)
|
||||
|
||||
@@ -44,6 +44,23 @@ names (`libs`):
|
||||
dcr-math = { path = "../deps/dcr-math", include = ["include"], lib = ["lib"], libs = ["dcr-math"] }
|
||||
```
|
||||
|
||||
### Table (`pkg-config`)
|
||||
|
||||
Use an installed `.pc` package when the library is provided by the operating system
|
||||
or another system package manager. DCR invokes `pkg-config --cflags` and
|
||||
`pkg-config --libs`, preserving include, library, linker, and other flags:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
fmt = { pkg-config = "fmt" }
|
||||
openssl = { pkg-config = ["openssl", "libcrypto"] }
|
||||
```
|
||||
|
||||
The `pkg-config` executable must be available in `PATH`. The named `.pc` files must
|
||||
be available through pkg-config's standard search paths or via `PKG_CONFIG_PATH`.
|
||||
These dependencies are not downloaded or built by DCR; they are recorded in
|
||||
`dcr.lock` with a `pkg-config+...` source.
|
||||
|
||||
## Registry
|
||||
|
||||
DCR uses a package registry for dependency lookup by name.
|
||||
|
||||
Reference in New Issue
Block a user