mynode/rootfs/standard/usr/bin/mynode-local-upgrade
2019-11-20 20:02:33 -06:00

67 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# mynode-local-upgrade
# This script needs to be run with sudo
# It reqeusts an IP, downloads the latest rootfs, installs it, and reboots the device
set -e
source /usr/share/mynode/mynode_config.sh
# Prompt for IP
echo "Make sure your PC is running 'make start_file_server'..."
ip_address="error"
if [ "$#" -lt 1 ]; then
echo -n "Dev PC IP Address: "
read ip_address
else
ip_address="$1"
fi
# Delete any existing rootfs tarball and download new one
rm -f mynode_rootfs_${DEVICE_TYPE}.tar.gz
wget http://${ip_address}:8000/mynode_rootfs_${DEVICE_TYPE}.tar.gz -O /tmp/mynode_rootfs_${DEVICE_TYPE}.tar.gz
# Extract on top of mynode fs
rm -rf /tmp/rootfs/
mkdir -p /tmp/rootfs/
tar -xvf /tmp/mynode_rootfs_${DEVICE_TYPE}.tar.gz -C /tmp/rootfs/
# Install files
if [ $IS_X86 = 1 ]; then
rsync -r -K /tmp/rootfs/out/rootfs_${DEVICE_TYPE}/* /
else
cp -rf /tmp/rootfs/out/rootfs_${DEVICE_TYPE}/* /
fi
systemctl daemon-reload
# Sleep and sync FS
echo "Syncing filesystem..."
sleep 1
sync
# Restart or reboot
if [ "$#" -ge 2 ]; then
# Restart service
if [ "$2" = "www" ]; then
echo "Restarting www service..."
systemctl restart www
elif [ "$2" = "files" ]; then
echo "Only updating files... Done."
elif [ "$2" = "reboot" ]; then
echo "Rebooting..."
else
# Service not found, reboot
echo "Unknown service, rebooting"
reboot
fi
else
# Default, full upgrade
echo "Full upgrade, running post upgrade script and rebooting device..."
/bin/bash /usr/bin/mynode_post_upgrade.sh
if [ $? -ne 0 ]; then
echo "ERROR: Post upgrade script failed!"
exit 1
fi
reboot
fi