#!/bin/bash
#
# Синххронизация локальных модов с текущей сборкой
# Можно запускать эту команды после добавления новых модов в сборку
# https://juraj-hrivnak.github.io/Pakku/pakku-sync.html
#

set -eu pipefail
pakku() { pakku-mc "$@"; }
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
REPO_ROOT="${SCRIPT_DIR}/.."
cd "${REPO_ROOT}" || exit 1

# Массив ключевых слов для идентификации кастомных модов
CUSTOM_MOD_KEYWORDS=(
    "advanced-xray"
    "mobility"
)

# Папка для временного хранения кастомных модов
SHELF_DIR=".pakku/shelf"
mkdir -p "${SHELF_DIR}"

# Функция для перемещения кастомных модов в карман
shelve_custom_mods() {
    for keyword in "${CUSTOM_MOD_KEYWORDS[@]}"; do
        find mods -maxdepth 1 -name "*${keyword}*" -type f -exec mv -v {} "${SHELF_DIR}" \;
    done
}

# Функция для возврата кастомных модов обратно
restore_custom_mods() {
    for keyword in "${CUSTOM_MOD_KEYWORDS[@]}"; do
        find "${SHELF_DIR}" -name "*${keyword}*" -type f -exec mv -v {} mods \;
    done
}

# Перемещаем кастомные моды в карман перед синхронизацией
shelve_custom_mods

# Если нет файла pakku-lock.json, то выполнить команду инициализации
if [ ! -f pakku-lock.json ]; then
    pakku init -n m2612 -v 0.0.1 --mc-v=26.1.2 -l fabric=0.19.3 -t multiplatform
fi

pakku -y sync

# Возвращаем кастомные моды обратно
restore_custom_mods

# Перемещаем оставшиеся моды из кармана pakku
mv .pakku/shelf/* mods/ 2>/dev/null || true