diff --git a/wled b/wled index 411fef7..dd31534 100755 --- a/wled +++ b/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.