From 2e047897346ac58fb005711d9648b618a2d77b96 Mon Sep 17 00:00:00 2001 From: danix Date: Thu, 11 Jun 2026 09:50:02 +0200 Subject: feat: parse --set H=/V= arguments Co-Authored-By: Claude Opus 4.8 --- tests/wallp.bats | 27 +++++++++++++++++++++++++++ wallp | 15 +++++++++++++++ 2 files changed, 42 insertions(+) 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="* ]] +} diff --git a/wallp b/wallp index 0827fa4..128a155 100644 --- a/wallp +++ b/wallp @@ -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= or V=)" >&2; return 1 ;; + esac + done + return 0 +} + main() { return 0 } -- cgit v1.2.3