Add a Debian package and bash completion

make deb builds dist/jarl_<version>_<arch>.deb with dpkg-deb alone (no
root), for the host or another architecture (DEB_ARCH=arm64). The package
creates the jarl user and directories and an example jarl.yaml on the
first install, restarts a running jarld on upgrades, never touches
/etc/jarl/jarl.yaml, stops jarld on removal, and keeps Jarl's data even
on purge.

make install and the package install bash completion for jarl and jarld.
Besides commands and flags it completes server and group names from the
CLI configuration, zone, view, ACL, TSIG key and user names from the
server, and record types. make dist includes the completion scripts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
abrown38andClaude Opus 5.5 committed 2026-10-08 15:10:57 +00:00
1 parent 0f2c318aaf
commit 352c9cb394
13 files changed
+555 -30

No files matched your search

+11
View File
@@ -24,6 +24,17 @@ The first version, to be released as 0.1.0.
the web UI. Networks smaller than a /24 explain that they belong in the
enclosing /24's zone.
- docs/operations.md: setting up a secondary server with its own jarld.
- A Debian package: `make deb` builds `dist/jarl_<version>_<arch>.deb` with
only `dpkg-deb` (no root), for the host or any other architecture
(`DEB_ARCH=arm64`). Installing it creates the `jarl` user and directories
and an example `/etc/jarl/jarl.yaml`; upgrades restart a running jarld and
never touch `/etc/jarl/jarl.yaml`; removing it stops jarld, and even a
purge keeps Jarl's database and the files named uses.
- Bash completion for `jarl` and `jarld`, installed by `make install` and
the Debian package. Besides commands and flags, it completes server and
group names from the CLI configuration, zone, view, ACL, TSIG key and
user names from the server, and record types.
- `make dist` tarballs include the completion scripts (`completion/`).
- Token rotation: `jarl token rotate`, the Rotate button in the web UI and
`POST /api/v1/tokens/{id}/rotate` give a token a new secret while it
keeps its ID, name, user and grants. The old secret stops at once or after