#!/bin/sh

set -e

# Don't Use Sudo When Running As Root
if [ "$(id -u)" -eq 0 ]; then
    sudo() {
        "$@"
    }
fi

# Main Script
run() {
    # Add ARM Repository
    for arch in "$@"; do
        sudo dpkg --add-architecture "$(echo "${arch}" | tr '[:upper:]' '[:lower:]')"
    done

    # Update APT
    sudo apt-get update
    sudo apt-get dist-upgrade -y

    # Install Everything In One Go
    PKG_QUEUE=''
    queue_pkg() {
        PKG_QUEUE="${PKG_QUEUE} $@"
    }

    # Build System
    queue_pkg \
        git \
        cmake \
        ninja-build \
        python3 \
        python3-venv

    # Host Dependencies Needed For Compile
    queue_pkg \
        libwayland-bin

    # Architecture-Specific Dependencies
    architecture_specific_pkg() {
        # Compiler
        queue_pkg crossbuild-essential-$1

        # Dependencies
        queue_pkg \
            libopenal-dev:$1

        # GLFW Dependencies
        queue_pkg \
            libwayland-dev:$1 \
            libxkbcommon-dev:$1 \
            libx11-dev:$1 \
            libxcursor-dev:$1 \
            libxi-dev:$1 \
            libxinerama-dev:$1 \
            libxrandr-dev:$1 \
            libxext-dev:$1

        # Zenity Dependencies
        queue_pkg \
            libgtk-3-dev:$1 \
            libglib2.0-dev:$1
    }
    for arch in "$@"; do
        architecture_specific_pkg "$(echo "${arch}" | tr '[:upper:]' '[:lower:]')"
    done

    # AppStream Verification
    queue_pkg \
        appstream

    # Install Queue
    sudo apt-get install --no-install-recommends -y ${PKG_QUEUE}

    # Install appimagetool
    sudo rm -rf /opt/squashfs-root /opt/appimagetool.AppDir 
    sudo rm -f /opt/appimagetool /usr/local/bin/appimagetool
    case "$(dpkg-architecture -qDEB_BUILD_ARCH)" in
        'armhf') APPIMAGE_ARCH='armhf';;
        'arm64') APPIMAGE_ARCH='aarch64';;
        'i386') APPIMAGE_ARCH='i686';;
        'amd64') APPIMAGE_ARCH='x86_64';;
    esac
    sudo mkdir -p /opt
    sudo wget -O /opt/appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${APPIMAGE_ARCH}.AppImage"
    sudo chmod +x /opt/appimagetool
    # Workaround AppImage Issues With Docker
    cd /opt
    sudo sed -i '0,/AI\x02/{s|AI\x02|\x00\x00\x00|}' ./appimagetool
    # Extract
    sudo ./appimagetool --appimage-extract
    sudo rm -f ./appimagetool
    # Link
    sudo mv ./squashfs-root ./appimagetool.AppDir
    sudo ln -s /opt/appimagetool.AppDir/AppRun /usr/local/bin/appimagetool
}

# Run
if [ "$#" -lt 1 ]; then
    run "$(dpkg-architecture -qDEB_BUILD_ARCH)"
else
    run "$@"
fi