#!/usr/bin/env bash

ORIG_DIR=$PWD
IP_ADDR=$(dig @resolver4.opendns.com myip.opendns.com +short)

if [ -e ~/parsagon ]
then
    rm -rf ~/parsagon
fi

mkdir -p ~/parsagon
cd ~/parsagon
git clone https://github.com/Sand1929/parsagon-local-server.git

cd ~/parsagon/parsagon-local-server/src/parsagon/server
printf '%s\n%s\n' "export API_KEY=$1" "$(cat daphne.sh)" > daphne.sh
printf '%s\n%s\n' "export API_KEY=$1" "$(cat celery.sh)" > celery.sh

sudo apt update
sudo apt -y upgrade

sudo apt -y install redis-server
sudo cp ~/parsagon/parsagon-local-server/src/parsagon/redis.conf /etc/redis/redis.conf
sudo systemctl restart redis.service

sudo apt -y install python3-venv
python3 -m venv ~/parsagon/venv
source ~/parsagon/venv/bin/activate

sudo apt -y install daphne
pip install -r ~/parsagon/parsagon-local-server/src/parsagon/server/requirements.txt

if ! command -v mkcert &> /dev/null
then
    cd ~/parsagon
    sudo apt -y install libnss3-tools
    sudo apt -y install golang-go
    git clone https://github.com/FiloSottile/mkcert && cd mkcert
    go build -ldflags "-X main.Version=$(git describe --tags)"
    sudo cp mkcert /usr/local/bin/mkcert
    sudo chmod +x /usr/local/bin/mkcert
fi
mkcert -cert-file ~/parsagon/cert.pem -key-file ~/parsagon/key.pem $IP_ADDR

sudo apt -y install nginx
sudo ufw allow 'Nginx HTTPS'
sudo cp ~/parsagon/parsagon-local-server/src/parsagon/nginx.conf /etc/nginx/sites-available
if [ ! -e /etc/nginx/sites-enabled/nginx.conf ]
then
    sudo ln -s /etc/nginx/sites-available/nginx.conf /etc/nginx/sites-enabled/
fi
if [ -e /etc/nginx/sites-enabled/default ]
then
    sudo rm /etc/nginx/sites-enabled/default
fi
sudo systemctl restart nginx

sudo apt -y install supervisor
sudo cp ~/parsagon/parsagon-local-server/src/parsagon/supervisor.conf /etc/supervisor/conf.d/
sudo supervisorctl stop all
sudo supervisorctl update
sudo supervisorctl start all

cd $ORIG_DIR
