#!/bin/bash

#
#  Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
#
#  Permission is hereby granted, free of charge, to any person obtaining a copy
#  of this software and associated documentation files (the "Software"), to deal
#  in the Software without restriction, including without limitation the rights
#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#  copies of the Software, and to permit persons to whom the Software is
#  furnished to do so, subject to the following conditions:
#
#  The above copyright notice and this permission notice shall be included in
#  all copies or substantial portions of the Software.
#
#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
#  SOFTWARE.
#

#
#  This script is intended for use on Linux and MacOS.
#

echo
echo " _____ ____  ____   __     ____"
echo "|  ___|___ \\| ___| / /_   |  _ \\  _____   __"
echo "| |_    __) |___ \\| '_ \\  | | | |/ _ \\ \\ / /"
echo "|  _|  / __/ ___) | (_) | | |_| |  __/\\ V /"
echo "|_|   |_____|____/ \\___/  |____/ \\___| \\_/"
echo

MACTEST=$(uname -a | grep Darwin)
if [[ $? == 0 ]]; then
	MACTEST=$(uname -a | grep arm64)
	if [[ $? == 0 ]]; then
		MAC=1
	fi
fi

if [[ -z ${MAC} ]]; then
	REMOTE1=https://github.com/llvm-mos/llvm-mos-sdk/releases/latest/download/llvm-mos-linux.tar.xz
	LOCAL1=llvm-mos-linux.tar.xz
else
	REMOTE1=https://github.com/llvm-mos/llvm-mos-sdk/releases/latest/download/llvm-mos-macos.tar.xz
	LOCAL1=llvm-mos-macos.tar.xz
fi

REMOTE2=https://kangaroopunch.com/files/serve/shared/f256dev.tar.xz
LOCAL2=llvm-mos-f256.tar.xz

REMOTE3=https://github.com/pweingar/FoenixMgr/archive/refs/heads/master.zip
LOCAL3=master.zip


PYTHON=$(which python)
if [[ $? == 1 ]]; then
	PYTHON=$(which python3)
	if [[ $? == 1 ]]; then
		echo "Unable to find Python 3.x.  Exiting."
		exit 1
	fi
fi

PYVER=$(${PYTHON} --version | grep "Python 3")
if [[ $? == 1 ]]; then
	echo "Unable to find Python 3.x.  Exiting."
	exit 1
fi

PIP=$(which pip)
if [[ $? == 1 ]]; then
	PIP=$(which pip3)
	if [[ $? == 1 ]]; then
		echo "Unable to find pip.  Exiting."
		exit 1
	fi
fi

CURL=$(which curl)
if [[ $? == 0 ]]; then
	${CURL} -L ${REMOTE1} > ${LOCAL1}
	${CURL} -L ${REMOTE2} > ${LOCAL2}
	${CURL} -L ${REMOTE3} > ${LOCAL3}
else
	WGET=$(which wget)
	if [[ $? == 0 ]]; then
		wget ${REMOTE1}
		wget ${REMOTE2}
		wget ${REMOTE3}
	else
		echo "Unable to locate curl or wget.  Exiting."
		exit 1
	fi
fi

if [[ ! -z ${MAC} ]]; then
	xattr -d com.apple.quarantine ${LOCAL1}
	xattr -d com.apple.quarantine ${LOCAL2}
	xattr -d com.apple.quarantine ${LOCAL3}
fi

if [[ -d f256dev ]]; then
	rm -rf f256dev
fi
mkdir -p f256dev
pushd f256dev
	tar xf ../${LOCAL1}
	unzip -o ../${LOCAL3}
popd

tar xf ${LOCAL2}

rm ${LOCAL1}
rm ${LOCAL2}
rm ${LOCAL3}

pushd f256dev
	rm -f overlay.windows
	if [[ -z ${MAC} ]]; then
		rm -f overlay.macos
		mv overlay.linux overlay
	else
		rm -f overlay.linux
		mv overlay.macos overlay
	fi

	rm -f *.bat

	pushd llvm-mos/bin
		ln -s mos-clang++   mos-f256-clang++
		ln -s mos-clang-cpp mos-f256-clang-cpp
		ln -s mos-clang     mos-f256-clang
	popd

	mv FoenixMgr-master FoenixMgr
	pushd FoenixMgr
		${PIP} install -r requirements.txt
	popd
popd

if [[ ! -e f256build.sh ]]; then
	ln -s f256dev/f256build.sh .
fi
if [[ ! -e f256run.sh ]]; then
	ln -s f256dev/f256run.sh .
fi

if [[ ! -f foenixmgr.ini ]]; then
	echo "[DEFAULT]"             > foenixmgr.ini
	echo "port=/dev/ttyUSB0"    >> foenixmgr.ini
	echo "labels=sample.lbl"    >> foenixmgr.ini
	echo "flash_address=380000" >> foenixmgr.ini
	echo "chunk_size=1024"      >> foenixmgr.ini
	echo "cpu=65c02"            >> foenixmgr.ini
fi

echo
echo -----------------------------------------------------------------------------
echo Installation complete!
echo
echo Please visit https://github.com/pweingar/FoenixMgr to learn how to configure
echo FoenixMgr for your machine.  Edit the foenixmgr.ini file in this directory.
echo -----------------------------------------------------------------------------
echo
