75 lines
2.3 KiB
Bash
Executable File
75 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Încarcă NVM dacă este disponibil
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
|
|
# Forțează folosirea versiunii 22
|
|
nvm use 22 > /dev/null 2>&1 || echo "⚠️ NVM nu a putut activa Node 22 automatically."
|
|
|
|
# --- 1. VERIFICARE INTEGRITATE ȘI CURĂȚARE CACHE INIȚIALĂ ---
|
|
echo "🔍 Verificare stare inițială..."
|
|
|
|
# Dacă compilarea anterioară a fost întreruptă, ștergem binarul parțial
|
|
if [ -f "gitea" ] || [ -f "gitea.exe" ]; then
|
|
echo "🧹 Am găsit resturi de la o compilare anterioară. Curăț..."
|
|
rm -f gitea gitea.exe
|
|
fi
|
|
|
|
# Verificăm dacă node_modules există. Dacă nu, forțăm pnpm install
|
|
if [ ! -d "node_modules" ]; then
|
|
echo "⚠️ node_modules lipsește. Forțez instalarea..."
|
|
pnpm install --frozen-lockfile
|
|
fi
|
|
|
|
# --- 2. LOGICĂ FRONTEND (CHECKSUM) ---
|
|
CHECKSUM_FILE=".frontend.hash"
|
|
CURRENT_HASH=$(find web_src package.json tailwind.config.js -type f -print0 2>/dev/null | xargs -0 sha1sum | sha1sum | awk '{print $1}')
|
|
|
|
if [ -f "$CHECKSUM_FILE" ] && [ "$CURRENT_HASH" == "$(cat $CHECKSUM_FILE)" ]; then
|
|
echo "✅ Frontend neschimbat."
|
|
else
|
|
echo "🚀 Modificări detectate. Se rulează pnpm build..."
|
|
pnpm install --frozen-lockfile && pnpm run build
|
|
echo "$CURRENT_HASH" > "$CHECKSUM_FILE"
|
|
fi
|
|
|
|
# --- 3. COMPILARE MULTI-PLATFORMĂ ---
|
|
TARGETS=("linux/amd64" "windows/amd64" "linux/arm/7")
|
|
|
|
mkdir -p dist
|
|
|
|
for TARGET in "${TARGETS[@]}"; do
|
|
IFS="/" read -r OS ARCH ARM_VER <<< "$TARGET"
|
|
|
|
EXT="" && [ "$OS" == "windows" ] && EXT=".exe"
|
|
SUFFIX="-$OS-$ARCH" && [ ! -z "$ARM_VER" ] && SUFFIX="-$OS-armv$ARM_VER"
|
|
OUTPUT="dist/gitea$SUFFIX$EXT"
|
|
|
|
echo "📦 Building for $OS/$ARCH ${ARM_VER:+(v$ARM_VER)}..."
|
|
|
|
# Setăm variabilele și compilăm
|
|
export GOOS=$OS
|
|
export GOARCH=$ARCH
|
|
export GOARM=$ARM_VER
|
|
export CGO_ENABLED=0
|
|
|
|
# Rulăm build-ul
|
|
make build TAGS="bindata"
|
|
|
|
# Verificăm dacă binarul a fost creat cu succes
|
|
if [ -f "gitea$EXT" ]; then
|
|
mv "gitea$EXT" "$OUTPUT"
|
|
echo "✅ Creat: $OUTPUT"
|
|
else
|
|
echo "❌ Eroare: Binarul pentru $OS/$ARCH nu a putut fi generat!"
|
|
exit 1 # Oprim totul dacă o platformă eșuează
|
|
fi
|
|
|
|
unset GOOS GOARCH GOARM
|
|
done
|
|
|
|
# --- 4. CURĂȚARE FINALĂ ---
|
|
echo "✨ Build finalizat cu succes în /dist"
|
|
go clean -cache
|