From cd5be9c4cdd6a7bd0f236707a6b5b20352fd98cc Mon Sep 17 00:00:00 2001
From: Justin-p <justin-p@users.noreply.github.com>
Date: Wed, 2 Oct 2019 10:14:26 +0200
Subject: [PATCH] Add /boot. Redo help. Replaced --commit/--branch with
 --version. Added --url to easly switch to other fork for testing

---
 scripts/update_pwnagotchi.sh | 93 +++++++++++++++++++-----------------
 1 file changed, 49 insertions(+), 44 deletions(-)

diff --git a/scripts/update_pwnagotchi.sh b/scripts/update_pwnagotchi.sh
index c5cb757..6010721 100644
--- a/scripts/update_pwnagotchi.sh
+++ b/scripts/update_pwnagotchi.sh
@@ -1,77 +1,82 @@
 #!/bin/bash
 # Default variables
-folder="/tmp/pwnagotchi"
+git_folder="/tmp/pwnagotchi"
+git_url="https://github.com/evilsocket/pwnagotchi/"
 version="master"
-commit=0
 backupconfig=0
 restoreconfig=0
 
-# functions
-function display_help {
-        echo "Usage: $0 [-m | --master] [-c | --commit | --branch] [-bc | --backupconfig] [-rc | --restoreconfig] [-h | --help]" >&2
-        echo
-        echo "   -m, --master               Update to the master branch. Used by default."
-        echo "   -c, --commit, --branch     Update to the specific commit/branch."
-        echo "   -bc, --backupconfig        Backup the current pwnagotchi config."
-        echo "   -rc, --restoreconfig       Restore the current pwnagotchi config. -bc will be enabled."
-        echo "   -h, --help                 Shows this help."
-        echo ""
-        echo
-        exit 1
+# Functions
+function usage() {
+        cat <<EOF
+
+ usage: $0 [OPTIONS]
+
+   Options:
+      -v, --version              # Version to update to, can be a branch or commit. (default: master)
+      -u, --url                  # Url to clone from. (default: https://github.com/evilsocket/pwnagotchi)
+      -bc, --backupconfig        # Backup the current pwnagotchi config.
+      -rc, --restoreconfig       # Restore the current pwnagotchi config. -bc will be enabled.
+      -h, --help                 # Shows this help.
+
+EOF
+        exit 0
 }
-function test_root {
-# Check if we are running as root.
+
+function test_root() {
     if ! [ $(id -u) = 0 ]; then
-            echo " [!] This script must be run as root."
-            exit 3
+            echo "[!] This script must be run as root."
+            exit 1
     fi
 }
-function test_github {
-    wget -q  --spider https://github.com/evilsocket/pwnagotchi/
+
+function test_github() {
+    wget -q  --spider $git_url
     if [ $? -ne 0 ]; then
-            echo " [!] Cannot reach github. This script requires internet access, ensure connection sharing is working."
-            exit 4
+            echo "[!] Cannot reach github. This script requires internet access, ensure connection sharing is working."
+            exit 2
     fi
 }
 
 # Commandline arguments
 while [[ "$#" -gt 0 ]]; do case $1 in
-        -m|--master) version="master"; shift;;
-        -c|--commit|---branch) commit="$2" version="other"; shift;;
+        -v|--version) version="$2"; shift;;
+        -u|--url) git_url="$2"; shift;;
         -bc|--backupconfig) backupconfig=1; shift;;
         -rc|--restoreconfig) backupconfig=1 restoreconfig=1; shift;;
-        -h|--help) display_help;;
-        *) echo "Unknown parameter passed: $1"; exit 2;;
+        -h|--help) usage;;
+        *) echo "Unknown parameter passed: $1"; exit 3;;
 esac; shift; done
 
-echo " [+] Checking prerequisites."
+echo "[+] Checking prerequisites."
 test_root
 test_github
 
 # clean up old files, clone master, set checkout to commit if needed.
-echo " [+] Cloning to $folder..."
-rm $folder -rf
-git clone https://github.com/evilsocket/pwnagotchi $folder -q
-cd $folder
-if [ $version == "other" ]; then
-        git checkout $commit -q
+echo "[+] Cloning to $git_folder..."
+rm $git_folder -rf
+git clone $git_url $git_folder -q
+cd $git_folder
+if [ $version != "master" ]; then
+        git checkout $version -q
 fi
-echo " [+] Installing $(git log -1 --format="%h")"
+echo "[+] Installing $(git log -1 --format="%h")"
 
-echo " [+] Updating..."
+echo "[+] Updating..."
 if [ $backupconfig -eq 1 ]; then
-        echo " [+] Creating backup of config.yml"
-        mv /root/pwnagotchi/config.yml ~/config.yml.bak -f
+        echo "[+] Creating backup of config.yml"
+        mv /root/pwnagotchi/config.yml /root/config.yml.bak -f
 fi
-rm /root/pwnagotchi -rf
-rsync -aPq $folder/sdcard/rootfs/* /
+rm /root/pwnagotchi -rf # ensures old files are removed
+rsync -aPq $git_folder/sdcard/boot/*   /boot/
+rsync -aPq $git_folder/sdcard/rootfs/* /
 cd /tmp
-rm $folder -rf
+rm $git_folder -rf
 if [ $restoreconfig -eq 1 ]; then
-        echo " [+] Restoring backup of config.yml"
-        mv ~/config.yml.bak /root/pwnagotchi/config.yml -f
+        echo "[+] Restoring backup of config.yml"
+        mv /root/config.yml.bak /root/pwnagotchi/config.yml -f
 fi
 
-echo " [+] Restarting pwnagotchi in auto mode. $( screen -X -S pwnagotchi quit)"
+echo "[+] Restarting pwnagotchi in auto mode. $( screen -X -S pwnagotchi quit)"
 sudo -H -u root /usr/bin/screen -dmS pwnagotchi -c /root/pwnagotchi/data/screenrc.auto
-echo " [+] Finished"
\ No newline at end of file
+echo "[+] Finished"
\ No newline at end of file