aere-proof-of-software/tools/proof-of-software/test/fixturi-gradle/genereaza.sh

31 lines
1.9 KiB
Bash

#!/bin/bash
# genereaza.sh: cum s-au facut fixturile Gradle (2026-09-29): un proiect Java mic, rezolvat de Gradle INSUSI, `--offline` (numai din
# memoria locala a lui Gradle, nicio descarcare), cu `--write-verification-metadata sha256,sha512` (gradle/verification-metadata.xml,
# hash-urile fiecarui artefact verificat) si `--write-locks` (gradle.lockfile: coordonatele fiecarei configuratii). Deci ambele fisiere
# sunt scrise de Gradle, nu de noi. Dependinte: bcpkix-jdk18on 1.79 (aduce bcutil si bcprov) si gson 2.10.1.
# bash genereaza.sh [gradle] rescrie build.gradle, settings.gradle, gradle.lockfile, gradle/verification-metadata.xml
set -eu
AICI="$(cd "$(dirname "$0")" && pwd)"
GR="${1:-$(ls -d "$HOME"/.gradle/wrapper/dists/gradle-8.14.3-bin/*/gradle-8.14.3 2>/dev/null | head -1)/bin/gradle}"
[ -f "$GR" ] || { echo "NEMASURAT: nu gasesc distributia Gradle 8.14.3 in ~/.gradle/wrapper/dists (sau dati calea)"; exit 2; }
T="$(mktemp -d)"; trap 'rm -rf "$T"' EXIT
cat > "$T/settings.gradle" <<'EOF'
rootProject.name = 'pos-fixture'
EOF
cat > "$T/build.gradle" <<'EOF'
plugins { id 'java-library' }
group = 'network.aere.fixture'
version = '1.0.0'
repositories { mavenCentral() }
dependencies {
implementation 'org.bouncycastle:bcpkix-jdk18on:1.79'
implementation 'com.google.code.gson:gson:2.10.1'
}
dependencyLocking { lockAllConfigurations() }
EOF
( cd "$T" && bash "$GR" --offline --no-daemon -q --write-verification-metadata sha256,sha512 dependencies --write-locks < /dev/null > "$T/out.txt" 2>&1 ) || { tail -20 "$T/out.txt"; exit 1; }
mkdir -p "$AICI/gradle"
cp "$T/settings.gradle" "$T/build.gradle" "$T/gradle.lockfile" "$AICI/"
cp "$T/gradle/verification-metadata.xml" "$AICI/gradle/"
echo "scris: gradle.lockfile ($(grep -c '=' "$AICI/gradle.lockfile") randuri), gradle/verification-metadata.xml ($(grep -c '<component ' "$AICI/gradle/verification-metadata.xml") componente)"