aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wallp.bats27
-rw-r--r--wallp15
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="* ]]
+}
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=<file> or V=<file>)" >&2; return 1 ;;
+ esac
+ done
+ return 0
+}
+
main() {
return 0
}