# Maintainer: Luna Midori <midoriaidev at gmail dot com>
# Contact: Midori AI <contact-us at midori-ai dot xyz>

_pkgfullbasename=Midori-AI
_pkgbasename=midori-ai
pkgname=${_pkgbasename}-git
pkgrel=1
pkgver=r0
pkgdesc="Installs all of Midori AI tools, games, and subsystem"
arch=('x86_64')
url="https://github.com/lunamidori5/Midori-AI"
provides=('midori-ai-cli' 'midori-ai-autofighter' 'midori-ai-subsystem-manager')
conflicts=('midori-ai-cli' 'midori-ai-autofighter' 'midori-ai-subsystem-manager')
license=('unknown')
depends=('docker' 'docker-compose' 'uv')
makedepends=('git' 'bash' 'uv')
source=("git+https://github.com/lunamidori5/Midori-AI.git")
sha256sums=('SKIP')

prepare() {
  cd "${srcdir}/${_pkgfullbasename}"
  git submodule update --init --recursive
}

pkgver() {
    cd "${srcdir}/${_pkgfullbasename}"
    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

build() {
    cd "${srcdir}/${_pkgfullbasename}"
    
    mkdir -p workfolder
    mkdir -p workfolder/build

    mv "${srcdir}/${_pkgfullbasename}/Webserver/Programs/Downloader/helper_app.py" workfolder/helper_app.py
    mv "${srcdir}/${_pkgfullbasename}/Webserver/Programs/Login_program/midori_ai_login_app.py" workfolder/midori_ai_login_app.py
    mv "${srcdir}/${_pkgfullbasename}/Webserver/Programs/File_manager/file_manager.py" workfolder/midori_ai_file_manager.py
    mv "${srcdir}/${_pkgfullbasename}/Webserver/Programs/Updater/midori_ai_updater.py" workfolder/midori_ai_updater.py
    mv "${srcdir}/${_pkgfullbasename}/Subsystem-Manager/subsystem-manager-uv/requirements.txt" workfolder/requirements.txt

    cp -r "${srcdir}/${_pkgfullbasename}/Subsystem-Manager/subsystem-manager-2-uv" workfolder/subsystem-manager-2
    cp -r "${srcdir}/${_pkgfullbasename}/Endless-Autofighter" workfolder/Endless-Autofighter

    cd workfolder

    uv venv --seed
    uv pip install --no-cache-dir -v pyinstaller pytz
    uv pip install --no-cache-dir -v -r requirements.txt

    uv run helper_app.py git_uploader.py

    uv run pyinstaller --optimize 2 --onefile helper_app.py
    uv run pyinstaller --optimize 2 --onefile git_uploader.py
    uv run pyinstaller --optimize 2 --onefile midori_ai_login_app.py
    uv run pyinstaller --optimize 2 --onefile midori_ai_updater.py
    uv run pyinstaller --optimize 2 --onefile midori_ai_file_manager.py

    cd subsystem-manager-2

    uv sync --link-mode=copy --no-cache
    uv pip install --link-mode=copy --no-cache-dir -v pyinstaller pytz
    uv run nicegui-pack --onefile --name "main" main.py

    cd ..

    cd Endless-Autofighter

    uv sync --link-mode=copy --no-cache
    uv pip install --link-mode=copy --no-cache-dir -v pyinstaller pytz
    uv run pyinstaller --optimize 2 --onefile --add-data photos:photos --add-data music:music main.py

    cd ..

    mv "${srcdir}/${_pkgfullbasename}/workfolder/dist/helper_app" midori_ai_downloader
    mv "${srcdir}/${_pkgfullbasename}/workfolder/dist/git_uploader" midori_ai_uploader
    mv "${srcdir}/${_pkgfullbasename}/workfolder/dist/midori_ai_login_app" midori_ai_login
    mv "${srcdir}/${_pkgfullbasename}/workfolder/dist/midori_ai_updater" midori_ai_updater
    mv "${srcdir}/${_pkgfullbasename}/workfolder/dist/midori_ai_file_manager" midori_ai_file_manager

    mv "${srcdir}/${_pkgfullbasename}/workfolder/subsystem-manager-2/dist/main" midori_ai_subsystem_manager
    mv "${srcdir}/${_pkgfullbasename}/workfolder/Endless-Autofighter/dist/main" midori_ai_autofighter

    rm -rf build .venv dist subsystem-manager-2 Endless-Autofighter
}

package() {
    cd "${srcdir}/${_pkgfullbasename}"

    declare -a folders=("subsystem_manager_2" "command_line_programs")
    declare -a programs=("midori_ai_downloader" "midori_ai_login" "midori_ai_updater" "midori_ai_file_manager" "midori_ai_subsystem_manager" "midori_ai_uploader")

    if [[ -d "$HOME/.midoriai" ]]; then
      echo "Directory .midoriai exists."
      for folder in "${folders[@]}"; do
        if [[ -d "$HOME/.midoriai/$folder" ]]; then
          rm -rf "$HOME/.midoriai/$folder"
          mkdir "$HOME/.midoriai/$folder"
        fi
      done
    else
      echo "Directory .midoriai does not exist."
      mkdir "$HOME/.midoriai"
      for folder in "${folders[@]}"; do
        mkdir "$HOME/.midoriai/$folder"
      done
    fi

    if [[ -d "$HOME/.midoriai/autofighter" ]]; then
      echo "Game already installed, doing nothing..."
    else
      mkdir "$HOME/.midoriai/autofighter"
    fi

    install -dm755 "${srcdir}/${_pkgfullbasename}/Subsystem-Manager/subsystem-manager-2-uv/" "${pkgdir}/$HOME/.midoriai/subsystem_manager_2"
    install -dm755 "${srcdir}/${_pkgfullbasename}/Endless-Autofighter" "${pkgdir}/$HOME/.midoriai/autofighter"

    for program in "${programs[@]}"; do
      cp -r "${srcdir}/${_pkgfullbasename}/workfolder/${program}" "${HOME}/.midoriai/command_line_programs/${program}"
      #cp -r "${srcdir}/${_pkgfullbasename}/workfolder/${program}" "${pkgdir}/usr/bin/midoriai/${program}"
      install -Dm755 "${srcdir}/${_pkgfullbasename}/workfolder/${program}" "${pkgdir}/usr/local/bin/${program}" 
    done
}
