zwave-js-ui-update.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/usr/bin/env bash
  2. RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
  3. set -e
  4. YW=$(echo "\033[33m")
  5. RD=$(echo "\033[01;31m")
  6. BL=$(echo "\033[36m")
  7. GN=$(echo "\033[1;92m")
  8. CL=$(echo "\033[m")
  9. CM="${GN}✓${CL}"
  10. CROSS="${RD}✗${CL}"
  11. BFR="\\r\\033[K"
  12. HOLD="-"
  13. function msg_info() {
  14. local msg="$1"
  15. echo -ne " ${HOLD} ${YW}${msg}..."
  16. }
  17. function msg_ok() {
  18. local msg="$1"
  19. echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
  20. }
  21. function msg_error() {
  22. local msg="$1"
  23. echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
  24. }
  25. clear
  26. cat <<"EOF"
  27. _____ _______ __ ______
  28. /__ /_ ______ __ _____ / / ___/ / / / / _/
  29. / /| | /| / / __ `/ | / / _ \ __ / /\__ \ / / / // /
  30. / /_| |/ |/ / /_/ /| |/ / __/ / /_/ /___/ / / /_/ // /
  31. /____/__/|__/\__,_/ |___/\___/ \____//____/ \____/___/
  32. UPDATE
  33. EOF
  34. while true; do
  35. read -p "This will update ZWave JS UI to $RELEASE. Proceed(y/n)?" yn
  36. case $yn in
  37. [Yy]*) break ;;
  38. [Nn]*) exit ;;
  39. *) echo "Please answer yes or no." ;;
  40. esac
  41. done
  42. if [ ! -d /opt/zwave-js-ui ]; then
  43. msg_error "No Zwave JS UI Install Detected!"
  44. exit
  45. fi
  46. msg_info "Stopping Z-wave JS UI"
  47. systemctl stop zwave-js-ui.service
  48. msg_ok "Stopped Z-wave JS UI"
  49. msg_info "Updating Z-wave JS UI"
  50. wget https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
  51. unzip zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
  52. \cp -R zwave-js-ui-linux /opt/zwave-js-ui
  53. msg_ok "Updated Z-wave JS UI"
  54. msg_info "Updating Z-wave JS UI service file"
  55. cat <<EOF >/etc/systemd/system/zwave-js-ui.service
  56. [Unit]
  57. Description=zwave-js-ui
  58. Wants=network-online.target
  59. After=network-online.target
  60. [Service]
  61. User=root
  62. WorkingDirectory=/opt/zwave-js-ui
  63. ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
  64. [Install]
  65. WantedBy=multi-user.target
  66. EOF
  67. systemctl daemon-reload
  68. msg_ok "Updated Z-wave JS UI service file"
  69. msg_info "Cleanup"
  70. rm -rf zwave-js-ui-${RELEASE}-linux.zip zwave-js-ui-linux store
  71. msg_ok "Cleaned"
  72. msg_info "Starting Z-wave JS UI"
  73. systemctl enable --now zwave-js-ui.service
  74. msg_info "Started Z-wave JS UI"
  75. msg_ok "Completed Successfully!\n"