#!/bin/zsh

###########################################################################################################################################################################################################
###########################################################################################################################################################################################################
#
# Script provided by DARE Technology Ltd to be used "as is".
# Copyright (c) 2024
# Support - www.dare.tech
#
# Note: Modifications to this script (other than modifying parameters and modifications made by DARE) do not fall into
#    	the scope of support requests relating to this workflow.
#
###########################################################################################################################################################################################################
###########################################################################################################################################################################################################
#
# ABOUT THIS SCRIPT
# This script downloads and installs the latest version of Zappl. To ensure Zappl is licensed if the preferences profile fails to install, add the activation key to parameter 4 and the public key to
# parameter 5 (optional, recommended).
#
###########################################################################################################################################################################################################
###########################################################################################################################################################################################################

#################################### VARIABLES ####################################

activationToken="${4}"
publicKey="${5}"
zapplPreferences="/Library/Preferences/com.dare.zappl.preferences.plist"
url="https://latestinstaller.zappl.co/Install_Zappl.zsh"

#################################### FUNCTIONS ####################################

create_plist() {
	local plist_file="$1"
	local token="$2"
	local key="$3"
	
	/bin/cat <<EOF > "$plist_file"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
	<dict>
		<key>GeneralOptions</key>
		<dict>
			<key>activationToken</key>
			<string>$token</string>
			<key>publicKey</key>
			<string>$key</string>
		</dict>
	</dict>
</plist>
EOF
}

#################################### LOGIC ####################################

## If licence keys were defined in parameter 4 and 5, write them to the local preference file
if [[ -n "$activationToken" && -n "$publicKey" ]]; then
	create_plist "$zapplPreferences" "$activationToken" "$publicKey"
	/bin/chmod 644 $zapplPreferences
	/usr/sbin/chown root:wheel $zapplPreferences
else
	/bin/echo "Skipping writing license keys to local preferences as at least one key is undefined."
fi

### Download and run the Zappl installer script
result=$(/usr/bin/curl -sSL "$url")
if [[ "$result" == *"#!/bin/zsh"* ]]; then
	/bin/echo "The Zappl installer script is reachable. Beginning install..."
	/usr/bin/curl -sSL "$url" | /bin/zsh --no-rcs
	exit 0
else
	/bin/echo "Error: The Zappl deployment failed because the installer script is inaccessible. Please check the Zappl network requirements and try again."
	/bin/echo "Response:"
	/bin/echo "$result"
	exit 1
fi
