diff --git a/AGENTS.md b/AGENTS.md index 16abf90..4a2b89a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -54,7 +54,7 @@ users: [] # root only: rootless users scanned by syncup units: - name: nginx - runtime: podman # podman | docker + runtime: podman # podman | docker | script | exec user: "" # empty = system unit; set for rootless user unit command: "" # override ExecStart entirely order: 1 # startup order, lower = earlier; same = parallel @@ -69,6 +69,13 @@ units: working_dir: "" # stack: compose dir (from labels) compose_files: [] # stack: relative to working_dir compose_bin: "" # stack: podman-compose path + script: "" # script: file run via shell (ExecStart) + stop_script: "" # script: optional ExecStop + shell: "" # script: interpreter, default /bin/bash + executable: "" # exec: binary run as ExecStart + args: [] # exec: arguments + stop_executable: "" # exec: optional ExecStop + service_type: "" # script/exec: simple (default) | oneshot ``` Non-root runs use `~/.config/unitdore/units.yaml` and manage only own user units. diff --git a/README.md b/README.md index ae39897..b390c13 100644 --- a/README.md +++ b/README.md @@ -138,8 +138,43 @@ units: compose_bin: /usr/bin/podman-compose order: 3 enabled: true + + - name: backup # shell script unit + runtime: script + script: /opt/scripts/backup.sh # required + stop_script: /opt/scripts/stop.sh # optional → ExecStop + shell: /bin/bash # optional, default /bin/bash + service_type: simple # simple (default) | oneshot + working_dir: /opt/scripts # optional + order: 4 + enabled: true + + - name: agent # executable unit + runtime: exec + executable: /opt/agent/bin/agent # required + args: [--config, /etc/agent.toml] # optional + stop_executable: /opt/agent/bin/stop # optional → ExecStop + order: 5 + enabled: true ``` +### Script / executable units + +Added manually (`unitdore edit`); syncup never creates or disables them. + +| Key | Runtime | Meaning | +|---|---|---| +| `script` | script | Required. `ExecStart=