Mark active preset when listing.
This commit is contained in:
parent
6308be7749
commit
80d5972f80
1 changed files with 19 additions and 4 deletions
23
wled
23
wled
|
@ -8,7 +8,7 @@
|
|||
|
||||
NAME="wled.sh"
|
||||
COMMAND="wled"
|
||||
VERSION="0.1.0"
|
||||
VERSION="0.1.1"
|
||||
|
||||
print_usage() {
|
||||
echo "\
|
||||
|
@ -35,6 +35,15 @@ curl_cmd() {
|
|||
curl --silent --show-error --fail --ipv4 --max-filesize 32K "$@"
|
||||
}
|
||||
|
||||
active_preset() {
|
||||
# Find number of active preset. API returns -1 if none is active, we return
|
||||
# an empty string.
|
||||
preset="$(curl_cmd "http://$1/json" | \
|
||||
# -1 will be a no-match.
|
||||
sed -n 's/.*"ps"[[:space:]]*:[[:space:]]*\(1\?[0-9]\).*/\1/p')"
|
||||
printf '%u' "$preset"
|
||||
}
|
||||
|
||||
# Parse host argument.
|
||||
case "$1" in
|
||||
""|-h|--help) # Missing host parameter.
|
||||
|
@ -87,13 +96,19 @@ case "$2" in
|
|||
;;
|
||||
l|list) # List presets.
|
||||
printf "loading ...\r"
|
||||
active_ps=$(active_preset "$wled_host")
|
||||
curl_cmd "http://$wled_host/presets.json" | \
|
||||
# Split into lines - one line per preset. Append final newline.
|
||||
sed --sandbox 's/"\(1\?[0-9]\)"[[:space:]]*:/\n&/g; $a\ ' | \
|
||||
# Extract number and name of every preset. Prepend description.
|
||||
# Prepend description, extract number and name of every preset,
|
||||
# match active preset, right-align numbers and finally select
|
||||
# lines to print.
|
||||
sed --sandbox -n \
|
||||
-e 's/^"\(1\?[0-9]\)"[[:space:]]*:.*"n"[[:space:]]*:[[:space:]]*"\([[:print:]]*\)".*$/\1: \2/p' \
|
||||
-e "1i\\Presets on $wled_host:"
|
||||
-e "1i\\Presets on $wled_host:" \
|
||||
-e 's/^"\(1\?[0-9]\)"[[:space:]]*:.*"n"[[:space:]]*:[[:space:]]*"\([[:print:]]*\)".*$/\1: \2/' \
|
||||
-e "s/^$active_ps:.*/& */" \
|
||||
-e 's/^[0-9]:/ &/' \
|
||||
-e '/^[1 ]\?[0-9]: [[:print:]]\+/p'
|
||||
exit $?
|
||||
;;
|
||||
dump) # Dump JSON response from API.
|
||||
|
|
Loading…
Reference in a new issue