json) print_json "$lights_json" ;;
simple) print_json "$simple_json" ;;
flat) print_json "$flat_json" ;;
- table) print_structured "$simple_json" '@tsv' ;;
- csv) print_structured "$simple_json" '@csv' ;;
- pair) print_structured "$simple_json" 'pairs' ;;
- html) print_html "$simple_json" ;;
+ table) print_structured '@tsv' ;;
+ csv) print_structured '@csv' ;;
+ pair) print_structured 'pairs' ;;
+ html) print_html ;;
-?*) die "Unknown output format (-f/--format): $format" ;;
esac
}
print_json() {
- # TODO: Evaluate adding jq filtering as filter argument
# Manage pretty printing
if [[ $pretty -eq 1 ]]; then
}
print_structured() {
- query="(.[0] | keys_unsorted | map(ascii_upcase)), (.[] | [.[]])|${2-@csv}"
+ pp=${2-$pretty}
+ # Handle csv and table printing
+ query="(.[0] | keys_unsorted | map(ascii_upcase)), (.[] | [.[]])|${1-@csv}"
- if [[ ${2} == 'pairs' ]]; then
+ # Handle printing as key value pairs
+ if [[ ${1} == 'pairs' ]]; then
query='.[] | "--------------",(to_entries[] | [.key, "=", .value] | @tsv)'
fi
+
# Manage pretty printing
- if [[ $pretty -eq 1 ]]; then
- echo "${1-}" | jq --raw-output "$query" | column -t -s$'\t'
+ if [[ $pp -eq 1 ]]; then
+ echo "${simple_json}" | jq --raw-output "$query" | column -t -s$'\t' | sed -e 's/"//g'
else
- echo "${1-}" | jq -r "$query"
+ echo "${simple_json}" | jq -r "$query"
fi
}
+print_html() {
+ data=$(print_structured '@csv' 1)
+
+ html="
+ <table>
+ $(
+ print_header=true
+ while read d; do
+ if $print_header; then
+ echo "<tr><th>${d//,/<\/th><th>}</th></tr>"
+ print_header=false
+ continue
+ fi
+ echo "<tr><td>${d//,/</td><td>}</td></tr>"
+ done <<<"${data}"
+ )
+ </table>"
+ echo "$html"
+}
+
set_state() {
new_state=$1
die "To be implemented"
find_lights
# Fail if we cannot find lights
-[[ ${#lights[@]} -eq 0 ]] && die "No lights found" 2
+[[ ${#lights[@]} -eq 0 ]] && die "No lights found"
produce_json