Script-friendly CLI output, and keep record list rows on one line
-o id and -o field=NAME,... print just the IDs or chosen fields; -q on show and list prints the IDs. jarl record list shortens data too long for the terminal (--wide shows it in full). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
113a6913a2
commit
f716fb8dd1
7 files changed
+224
-11
No files matched your search
+20
-3
@@ -139,10 +139,11 @@ to stderr with `-o json` or `-o yaml`, so stdout holds just the documents.
|
||||
| Flag | Meaning |
|
||||
|------|---------|
|
||||
| `-o table\|json\|yaml` | Output format. JSON and YAML have the API's full objects, for scripts. |
|
||||
| `-o id`, `-o field=NAME[,NAME...]` | Just the IDs, or just those fields, one line per object (fields separated by tabs). See [Scripting tips](#scripting-tips). |
|
||||
| `-n, --dry-run` | Validate and show the diff without changing anything. |
|
||||
| `-C, --changeset ID` | Stage the change into an open changeset instead of applying it. |
|
||||
| `--force` | Overwrite BIND files that were changed outside Jarl (drift). |
|
||||
| `-q, --quiet` | Print only errors, or just the ID where a command creates something. |
|
||||
| `-q, --quiet` | Print only errors, or just the IDs: of what a command creates, or what `show` and `list` find (like `-o id`). |
|
||||
|
||||
## Exit codes
|
||||
|
||||
@@ -440,8 +441,24 @@ See [acme.md](acme.md) for certbot, acme.sh and a dedicated ACME zone.
|
||||
|
||||
## Scripting tips
|
||||
|
||||
* `-o json` gives full API objects. Pipe them to `jq`.
|
||||
* `-q` with `create` commands prints just the ID or token.
|
||||
* `-o id` prints just the IDs of what a `show` or `list` command finds, one
|
||||
per line, and `-o field=...` picks fields (their names are those of
|
||||
`-o json`; a dot reaches inside, as in `soa.serial`; a field an object
|
||||
doesn't have prints as empty). For changes, they apply to the changed
|
||||
object:
|
||||
|
||||
```sh
|
||||
ZONE=$(jarl zone show adbraun.lol --view external -o id)
|
||||
jarl record list adbraun.lol --name www -t A -o id | xargs -n1 jarl record disable --id
|
||||
jarl zone show adbraun.lol -o field=view,soa.serial # external 2026100901
|
||||
jarl zone list -o field=id,name,view
|
||||
ID=$(jarl record add adbraun.lol www A 192.0.2.10 -o id) # the new record's ID
|
||||
```
|
||||
* `-q` with `create` commands prints just the ID or token, and with `show`
|
||||
and `list` just the IDs. Commands without IDs (status, checks) print
|
||||
nothing but errors.
|
||||
* `jarl record list` on a terminal shortens data too long for a line
|
||||
(`…`); `--wide` shows it in full, and so does output to a pipe or file.
|
||||
* Check `$?` against the exit code table.
|
||||
* `jarl record delete ... --missing-ok` succeeds when nothing matches, which
|
||||
keeps cleanup scripts idempotent. So does `record disable|enable
|
||||
|
||||
Reference in new issue
Block a user