File get-dependencies.sh of Package audiveris
#!/bin/bash
set -euo pipefail
# =========================
# Configurazione
# =========================
GRADLE_CACHE="$HOME/.gradle/caches/modules-2/files-2.1"
OUTPUT_DIR="./dependencies"
TMP_DIR="./.tmp-maven-download"
MAVEN_CENTRAL="https://repo1.maven.org/maven2"
# Pulizia
rm -rf "$OUTPUT_DIR" "$TMP_DIR"
mkdir -p "$OUTPUT_DIR" "$TMP_DIR"
echo "Trasformo la cache Gradle in repository Maven locale..."
# Copia artifact e pom nella struttura Maven
copy_artifacts() {
local group="$1"
local artifact="$2"
local version="$3"
local source_dir="$4"
local dest_dir="$OUTPUT_DIR/${group//./\/}/$artifact/$version"
mkdir -p "$dest_dir"
# Ciclo tutte le cartelle hash
for hash_dir in "$source_dir"/*; do
# Ciclo tutti i file dentro la hash
for f in "$hash_dir"/*; do
if [[ "$f" =~ \.jar$ ]]; then
# Copio il jar **con il nome originale**
cp -n "$f" "$dest_dir/$(basename "$f")"
elif [[ "$f" =~ \.pom$ ]]; then
cp -n "$f" "$dest_dir/$artifact-$version.pom"
download_parent "$f"
fi
done
done
}
# Funzione ricorsiva per scaricare parent POM mancanti
download_parent() {
local pom_file="$1"
local parent_group=$(xmllint --xpath "string(//project/parent/groupId)" "$pom_file" 2>/dev/null || echo "")
local parent_artifact=$(xmllint --xpath "string(//project/parent/artifactId)" "$pom_file" 2>/dev/null || echo "")
local parent_version=$(xmllint --xpath "string(//project/parent/version)" "$pom_file" 2>/dev/null || echo "")
if [[ -n "$parent_group" && -n "$parent_artifact" && -n "$parent_version" ]]; then
# Percorso destinazione
local dest_dir="$OUTPUT_DIR/${parent_group//./\/}/$parent_artifact/$parent_version"
local dest_pom="$dest_dir/$parent_artifact-$parent_version.pom"
if [[ ! -f "$dest_pom" ]]; then
echo "Scarico parent POM: $parent_group:$parent_artifact:$parent_version"
mkdir -p "$dest_dir"
# Costruisci URL Maven Central
url="$MAVEN_CENTRAL/${parent_group//./\/}/$parent_artifact/$parent_version/$parent_artifact-$parent_version.pom"
curl -sSfL "$url" -o "$dest_pom" || echo "⚠️ Warning: parent POM $parent_group:$parent_artifact:$parent_version non trovato su Maven Central"
# Ricorsione sul parent del parent
download_parent "$dest_pom"
fi
fi
}
# Ciclo tutti gli artifact nella cache
find "$GRADLE_CACHE" -mindepth 3 -maxdepth 3 -type d | while read -r artifact_dir; do
version=$(basename "$artifact_dir")
artifact=$(basename "$(dirname "$artifact_dir")")
group=$(basename "$(dirname "$(dirname "$artifact_dir")")")
copy_artifacts "$group" "$artifact" "$version" "$artifact_dir"
done
echo "Tutti gli artifact e parent POM sono stati copiati in $OUTPUT_DIR"
# Creo tar.gz con la cartella dependencies
tar czf dependencies.tar.gz -C . dependencies
echo "Archivio dependencies.tar.gz creato con la cartella dependencies al suo interno."
#echo "✅ Repository Maven locale pronto per OBS e build offline"