100 lines
1.9 KiB
Bash
Executable File
100 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env zsh
|
|
# Build a full list of known esphome devices and
|
|
# - reflash them
|
|
# - reflash those that match $1
|
|
# - do $1 to those that match $2
|
|
#
|
|
# Ex.: ./reflash.sh logs car
|
|
|
|
set -e
|
|
|
|
# Make $variable expand into multiple argv when unquoted.
|
|
set -o shwordsplit
|
|
|
|
if [ $# -gt 1 ]; then
|
|
command=$1
|
|
shift
|
|
else
|
|
command="run --no-logs"
|
|
fi
|
|
|
|
declare -a flash
|
|
|
|
for config in \
|
|
bathroomheater.yaml \
|
|
blinds.yaml \
|
|
heating.yaml \
|
|
loud-siren.yaml \
|
|
watermeter.yaml \
|
|
heating-eg.yaml \
|
|
heating-og.yaml \
|
|
car-charger.yaml \
|
|
freezer.yaml \
|
|
living-room-entertainment.yaml \
|
|
living-room-infra.yaml \
|
|
outdoor-equipment.yaml \
|
|
storage-heater.yaml \
|
|
basement-dehum.yaml \
|
|
zigbee-coordinator-ch24.yaml \
|
|
zigbee-coordinator-ch25.yaml \
|
|
child-west-ac.yaml \
|
|
child-east-ac.yaml \
|
|
spare-power-meter.yaml \
|
|
office-desk-north.yaml \
|
|
office-desk-south.yaml \
|
|
attic-central.yaml \
|
|
office-rack.yaml \
|
|
radiation.yaml \
|
|
tools-power.yaml; do
|
|
flash+=("${command?} ${config?}")
|
|
done
|
|
|
|
for btproxy_replica in \
|
|
c257a8 \
|
|
c25bac \
|
|
c25b74
|
|
do
|
|
flash+=("${command?} btproxy.yaml --device btproxy-${btproxy_replica?}")
|
|
done
|
|
|
|
declare -A flash_result
|
|
|
|
print_results_table() {
|
|
printf -- "-%.0s" {1..80}
|
|
printf "\n%-70sSTATUS\n\n" "COMMAND"
|
|
for result_cmdline in "${flash[@]}"; do
|
|
printf "%-70s" "$result_cmdline "
|
|
if [ "${flash_result["$result_cmdline"]+placeholder}" ]; then
|
|
echo "${flash_result["$result_cmdline"]}"
|
|
else
|
|
echo "N/A"
|
|
fi
|
|
done
|
|
printf "\n%-70s%d\n" "TOTAL" "${#flash[@]}"
|
|
printf -- "-%.0s" {1..80}
|
|
echo
|
|
echo
|
|
}
|
|
|
|
for cmdline in "${flash[@]}"; do
|
|
if [ $# -gt 0 ]; then
|
|
if [[ "$cmdline" =~ "$1" ]]; then
|
|
:;
|
|
else
|
|
flash_result["$cmdline"]=SKIPPED
|
|
continue
|
|
fi
|
|
fi
|
|
flash_result["$cmdline"]=CURRENT
|
|
|
|
print_results_table
|
|
echo "Launching esphome: $cmdline"
|
|
if echo 1 | esphome $cmdline; then
|
|
flash_result["$cmdline"]=OK
|
|
else
|
|
flash_result["$cmdline"]=FAIL
|
|
fi
|
|
done
|
|
|
|
print_results_table
|