#!/bin/bash
set -euo pipefail

SEARCH_DIR="/app/.m2"
NEXUS_URL="https://artifacts.tn.tngrp.ru/repository/sed-maven/"
REPO_ID="nexus-repo"
SETTINGS_FILE="/root/.m2/settings.xml"

echo "=== Начинаем рекурсивную загрузку артефактов в Nexus ==="
echo "Поиск JAR-файлов в ${SEARCH_DIR} ..."
echo "========================================="

if [[ ! -d "$SEARCH_DIR" ]]; then
    echo "Ошибка: Директория $SEARCH_DIR не существует!"
    exit 1
fi

# Поиск файлов без массивной обёртки
jar_files=$(find "$SEARCH_DIR" -type f -name "*.jar" ! -name "*-sources.jar" ! -name "*-javadoc.jar" 2>/dev/null || true)

if [[ -z "$jar_files" ]]; then
    echo "JAR-файлы не найдены в $SEARCH_DIR"
    exit 1
fi

# Точный подсчет строк без фантомной пустой строки
total_files=$(echo "$jar_files" | grep -c '^')
echo "Найдено JAR-файлов: $total_files"
echo "========================================="

deploy_artifact() {
    local jar_file="$1"
    local pom_file="${jar_file%.jar}.pom"
    
    echo "Обработка: $jar_file"
    
    if [[ -f "$pom_file" ]]; then
        echo "Найден POM: $pom_file"
        echo "Загружаем..."
        
        # Перехватываем статус выполнения, чтобы set -e не гасил скрипт при ошибке Nexus
        if mvn deploy:deploy-file \
            -s "$SETTINGS_FILE" \
            -Dfile="$jar_file" \
            -DpomFile="$pom_file" \
            -DrepositoryId="$REPO_ID" \
            -Durl="$NEXUS_URL" \
            -Dpackaging=jar \
            -DgeneratePom=false \
            -DupdateReleaseInfo=true; then
            
            echo "Успешно загружен: $(basename "$jar_file")"
        else
            echo "ОШИБКА загрузки для $(basename "$jar_file")"
        fi
        echo "---"
    else
        echo "POM-файл не найден для $jar_file"
        echo "Искали: $pom_file"
        echo "Пропускаем."
        echo "---"
    fi
}

counter=0
for jar_file in $jar_files; do
    counter=$((counter + 1))
    echo "[$counter/$total_files]"
    deploy_artifact "$jar_file"
done

echo "Все артефакты обработаны. Загружено/обработано: $counter из $total_files"