#!/bin/bash ###Updates pivpn scripts (Not PiVPN) ###Main Vars pivpnrepo="https://github.com/pivpn/pivpn.git" pivpnlocalpath="/etc/.pivpn" pivpnscripts="/opt/pivpn/" bashcompletiondir="/etc/bash_completion.d/" setupVars="/etc/pivpn/setupVars.conf" if [ ! -f "${setupVars}" ]; then echo "::: Missing setup vars file!" exit 1 fi source "${setupVars}" scriptusage(){ echo "::: Updates PiVPN scripts" echo ":::" echo "::: Usage: pivpn <-up|update> [-t|--test]" echo ":::" echo "::: Commands:" echo "::: [none] Updates from master branch" echo "::: -t, test Updates from test branch" echo "::: -h, help Show this usage dialog" } ###Functions ##Updates scripts updatepivpnscripts(){ ##We don't know what sort of changes users have made. ##Lets remove first /etc/.pivpn dir then clone it back again echo "going do update PiVPN Scripts" if [[ -d "$pivpnlocalpath" ]]; then if [[ -n "$pivpnlocalpath" ]]; then rm -rf "${pivpnlocalpath}/../.pivpn" cloneandupdate fi else cloneandupdate fi echo "PiVPN Scripts have been updated" } ##Updates scripts using test branch updatefromtest(){ ##We don't know what sort of changes users have made. ##Lets remove first /etc/.pivpn dir then clone it back again echo "PiVPN Scripts updating from test branch" if [[ -d "$pivpnlocalpath" ]]; then if [[ -n "$pivpnlocalpath" ]]; then rm -rf "${pivpnlocalpath}/../.pivpn" cloneupdttest fi else cloneupdttest fi echo "PiVPN Scripts updated have been updated from test branch" } ##Clone and copy pivpn scripts to /opt/pivpn cloneandupdate(){ git clone "$pivpnrepo" "$pivpnlocalpath" cp "${pivpnlocalpath}"/scripts/*.sh "$pivpnscripts" cp "${pivpnlocalpath}"/scripts/$VPN/*.sh "$pivpnscripts" cp "${pivpnlocalpath}"/scripts/$VPN/bash-completion "$bashcompletiondir" } ##same as cloneandupdate() but from test branch ##and falls back to master branch again after updating cloneupdttest(){ git clone "$pivpnrepo" "$pivpnlocalpath" git -C "$pivpnlocalpath" checkout test git -C "$pivpnlocalpath" pull origin test cp "${pivpnlocalpath}"/scripts/*.sh "$pivpnscripts" cp "${pivpnlocalpath}"/scripts/$VPN/*.sh "$pivpnscripts" cp "${pivpnlocalpath}"/scripts/$VPN/bash-completion "$bashcompletiondir" git -C "$pivpnlocalpath" checkout master } ## SCRIPT if [[ $# -eq 0 ]]; then updatepivpnscripts else while true; do case "$1" in -t|test) updatefromtest exit 0 ;; -h|help) scriptusage exit 0 ;; *) updatepivpnscripts exit 0 ;; esac done fi