#!/bin/sh

set -e

REPO="$(dirname "$(realpath "$0")")"

. "$REPO/script/delete_dir.sh"
. "$REPO/script/delete_file.sh"
. "$REPO/script/install_dir.sh"
. "$REPO/script/install_file.sh"

usage() {
    echo '   -?, -h, --help   print help'
    echo '        -d, --dry   dry run'
    echo '--delete-obsolete   delete obsolete files and dirs'
}

DRY=''

while [[ "$1" == -* ]]; do
    case "$1" in
        -h|--help|-\?)
            usage
            exit
            ;;
        -d|--dry)
            DRY='YES'
            ;;
        --delete-obsolete)
            DELETE_OBSOLETE='YES'
            ;;
        *)
            echo "invalid option: $1" >&2
            exit 1
            ;;
    esac

    shift
done

if [ "$DRY" != 'YES' ]; then
    echo '==='
    pkg_add \
        bzip2 lzip unzip-- xz zstd \
        curl git gnupg vim-- wget \
        cgit gitolite \
        mariadb-server \
        php-8.3.32 php-curl-8.3.32 php-gd-8.3.32 php-intl-8.3.32 php-mysqli-8.3.32
fi

. "$REPO/files.sh"

if [ "$DRY" != 'YES' ]; then
    echo '==='
    echo 'Installing Phoenix Cart'
    git --git-dir /home/git/repositories/phoenixcart.git archive master | tar -x -f - -C /var/www/htdocs/phoenixcart

    echo '==='
    echo 'Apply packet filter rules'
    pfctl -f /etc/pf.conf && echo 'OK' || echo 'FAIL'

    echo '==='
    rcctl restart portmap
    rcctl restart httpd mysqld nfsd php83_fpm slowcgi sshd

    kill -KILL `cat /var/run/mountd.pid` || true
    rcctl start mountd

    echo '==='
    mount -av
fi

echo '==='
