zwave-js-ui-update.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 msg_error "No Zwave JS UI Install Detected!"; exit; fi
  43. msg_info "Stopping Z-wave JS UI"
  44. systemctl stop zwave-js-ui.service
  45. msg_ok "Stopped Z-wave JS UI"
  46. msg_info "Updating Z-wave JS UI"
  47. wget https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
  48. unzip zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
  49. \cp -R zwave-js-ui-linux /opt/zwave-js-ui
  50. msg_ok "Updated Z-wave JS UI"
  51. msg_info "Updating Z-wave JS UI service file"
  52. cat << EOF > /etc/systemd/system/zwave-js-ui.service
  53. [Unit]
  54. Description=zwave-js-ui
  55. Wants=network-online.target
  56. After=network-online.target
  57. [Service]
  58. User=root
  59. WorkingDirectory=/opt/zwave-js-ui
  60. ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
  61. [Install]
  62. WantedBy=multi-user.target
  63. EOF
  64. systemctl daemon-reload
  65. msg_ok "Updated Z-wave JS UI service file"
  66. msg_info "Cleanup"
  67. rm -rf zwave-js-ui-${RELEASE}-linux.zip zwave-js-ui-linux store
  68. msg_ok "Cleaned"
  69. msg_info "Starting Z-wave JS UI"
  70. systemctl enable --now zwave-js-ui.service
  71. msg_info "Started Z-wave JS UI"
  72. msg_ok "Completed Successfully!\n"