diff options
| author | danix <danix@danix.xyz> | 2026-06-11 09:50:02 +0200 |
|---|---|---|
| committer | danix <danix@danix.xyz> | 2026-06-11 09:50:02 +0200 |
| commit | 2e047897346ac58fb005711d9648b618a2d77b96 (patch) | |
| tree | 709ab751a257a5ec2584c32fd533bb9501883cd9 | |
| parent | 0f52ddcc2712573687ded1698ba0ac9b26168e00 (diff) | |
| download | wallp-2e047897346ac58fb005711d9648b618a2d77b96.tar.gz wallp-2e047897346ac58fb005711d9648b618a2d77b96.zip | |
feat: parse --set H=/V= arguments
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| -rw-r--r-- | tests/wallp.bats | 27 | ||||
| -rw-r--r-- | wallp | 15 |
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/wallp.bats b/tests/wallp.bats index b5c9ff7..52e6706 100644 --- a/tests/wallp.bats +++ b/tests/wallp.bats @@ -127,3 +127,30 @@ teardown() { run pid_file_for V [ "$output" = "$HOME/.cache/wallp/V.pid" ] } + +@test "parse_set_args captures both" { + SET_H="" SET_V="" + parse_set_args "H=/a.png" "V=/b.png" + [ "$SET_H" = "/a.png" ] + [ "$SET_V" = "/b.png" ] +} + +@test "parse_set_args partial leaves other empty" { + SET_H="" SET_V="" + parse_set_args "V=/only.png" + [ "$SET_H" = "" ] + [ "$SET_V" = "/only.png" ] +} + +@test "parse_set_args expands tilde" { + SET_H="" SET_V="" + parse_set_args "H=~/x.png" + [ "$SET_H" = "$HOME/x.png" ] +} + +@test "parse_set_args rejects unknown token" { + SET_H="" SET_V="" + run parse_set_args "Z=/bad.png" + [ "$status" -eq 1 ] + [[ "$output" == *"Z="* ]] +} @@ -120,6 +120,21 @@ pid_file_for() { esac } +# Parse key=value conf into SET_* globals. Expands ~ in path values. +# Rejects unknown tokens (not H= or V=). +SET_H="" SET_V="" +parse_set_args() { + local tok + for tok in "$@"; do + case "$tok" in + H=*) SET_H="$(expand_tilde "${tok#H=}")" ;; + V=*) SET_V="$(expand_tilde "${tok#V=}")" ;; + *) echo "wallp: unknown --set argument '$tok' (expected H=<file> or V=<file>)" >&2; return 1 ;; + esac + done + return 0 +} + main() { return 0 } |
