#!/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 xz zstd \
        curl git gnupg vim--no_x11 wget \
        cgit gitolite
fi

. "$REPO/files.sh"

if [ "$DRY" != 'YES' ]; then
    echo '==='
    echo 'Apply packet filter rules'
    pfctl -f /etc/pf.conf && echo 'OK' || echo 'FAIL'

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

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

    echo '==='
    mount -av
fi

echo '==='
