瀏覽代碼

Update zigbee2mqtt-v5.sh

- Revise the update process so that if the `git pull` fails, it will execute `git stash` followed by `git pull`.
- Keep the update process verbose.
tteckster 2 年之前
父節點
當前提交
b2da4b0cd2
共有 1 個文件被更改,包括 43 次插入26 次删除
  1. 43 26
      ct/zigbee2mqtt-v5.sh

+ 43 - 26
ct/zigbee2mqtt-v5.sh

@@ -335,40 +335,57 @@ function update_script() {
 clear
 header_info
 cd /opt/zigbee2mqtt
-msg_info "Checking for Backup Directory"
+#!/bin/bash
+
+stop_zigbee2mqtt() {
+  if which systemctl 2> /dev/null > /dev/null; then
+    echo "Shutting down Zigbee2MQTT..."
+    sudo systemctl stop zigbee2mqtt
+  else
+    echo "Skipped stopping Zigbee2MQTT, no systemctl found"
+  fi
+}
+
+start_zigbee2mqtt() {
+  if which systemctl 2> /dev/null > /dev/null; then
+    echo "Starting Zigbee2MQTT..."
+    sudo systemctl start zigbee2mqtt
+  else
+    echo "Skipped starting Zigbee2MQTT, no systemctl found"
+  fi
+}
+
+set -e
+
 if [ -d data-backup ]; then
-   echo "ERROR: Backup directory exists. May be previous restoring was failed?"
-   echo "1. Save 'data-backup' and 'data' dirs to safe location to make possibility to restore config later."
-   echo "2. Manually delete 'data-backup' dir and try again."
-   exit 1
+  echo "ERROR: Backup directory exists. May be previous restoring was failed?"
+  echo "1. Save 'data-backup' and 'data' dirs to safe location to make possibility to restore config later."
+  echo "2. Manually delete 'data-backup' dir and try again."
+  exit 1
 fi
-msg_ok "No Backup Directory Exists"
 
-msg_info "Stopping Zigbee2MQTT"
-systemctl stop zigbee2mqtt
-msg_ok "Stopped Zigbee2MQTT"
+stop_zigbee2mqtt
+
+echo "Creating backup of configuration..."
+cp -R data data-backup || { echo "Failed to create backup."; exit 1; }
+
+echo "Initiating update"
+if ! git pull; then
+  echo "Update failed, temporarily storing changes and trying again."
+  git stash && git pull || (echo "Update failed even after storing changes. Aborting."; exit 1)
+fi
 
-msg_info "Creating Backup of Configuration"
-cp -R data data-backup
-msg_ok "Created Backup of Configuration"
+echo "Acquiring necessary components..."
+npm ci || { echo "Failed to install necessary components."; exit 1; }
 
-msg_info "Updating Zigbee2MQTT"
-git pull &>/dev/null
-msg_ok "Updated Zigbee2MQTT"
+echo "Restoring configuration..."
+cp -R data-backup/* data || { echo "Failed to restore configuration."; exit 1; }
 
-msg_info "Installing Dependencies"
-npm ci &>/dev/null
-msg_ok "Installed Dependencies"
+rm -rf data-backup || { echo "Failed to remove backup directory."; exit 1; }
 
-msg_info "Restoring Configuration"
-cp -R data-backup/* data
-rm -rf data-backup
-msg_ok "Restored Configuration"
+start_zigbee2mqtt
 
-msg_info "Starting Zigbee2MQTT"
-systemctl start zigbee2mqtt
-msg_ok "Started Zigbee2MQTT"
-msg_ok "Update Successful"
+echo "Done!"
 exit
 }
 clear