From eb0b9b2dee0d3912447ff166f7992441d0750a90 Mon Sep 17 00:00:00 2001 From: petru Date: Wed, 15 Apr 2026 21:11:20 +0000 Subject: [PATCH] Add some fetch & builing scripts --- +x | 0 .frontend.hash | 1 + package.json | 4 +++ pnpm | 1 + smart-build.sh | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ update-gitea.sh | 35 +++++++++++++++++++++++ 6 files changed, 115 insertions(+) create mode 100644 +x create mode 100644 .frontend.hash create mode 120000 pnpm create mode 100755 smart-build.sh create mode 100644 update-gitea.sh diff --git a/+x b/+x new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.frontend.hash b/.frontend.hash new file mode 100644 index 0000000000..ae0c10deab --- /dev/null +++ b/.frontend.hash @@ -0,0 +1 @@ +bbf6f727986817c353c8e7bc9aa16cf0d85f8dc4 diff --git a/package.json b/package.json index 316f870204..01593bbe0a 100644 --- a/package.json +++ b/package.json @@ -154,5 +154,9 @@ "object-keys": "npm:@nolyfill/object-keys@^1", "object.entries": "npm:@nolyfill/object.entries@^1" } + }, + "scripts": { + "0-smart-build": "./smart-build.sh", + "1-smart-build": "./update-gitea.sh" } } diff --git a/pnpm b/pnpm new file mode 120000 index 0000000000..ee2e1fd398 --- /dev/null +++ b/pnpm @@ -0,0 +1 @@ +/usr/bin/pnpm \ No newline at end of file diff --git a/smart-build.sh b/smart-build.sh new file mode 100755 index 0000000000..59bf9dfc5b --- /dev/null +++ b/smart-build.sh @@ -0,0 +1,74 @@ +#!/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 diff --git a/update-gitea.sh b/update-gitea.sh new file mode 100644 index 0000000000..0065f91bda --- /dev/null +++ b/update-gitea.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Configurare nume ramură (main sau master) +BRANCH="main" +REMOTE_NAME="upstream" +REMOTE_URL="https://github.com/go-gitea/gitea.git" + +echo "🔍 Verificare sursă upstream..." + +# Verificăm dacă remote-ul 'upstream' există, dacă nu, îl adăugăm +if ! git remote | grep -q "$REMOTE_NAME"; then + echo "➕ Adăugare remote $REMOTE_NAME..." + git remote add $REMOTE_NAME $REMOTE_URL +fi + +echo "📦 Salvare modificări locale (Stash)..." +git stash + +echo "🔄 Descărcare noutăți de la Gitea oficial..." +git fetch $REMOTE_NAME + +echo "🚀 Aplicare noutăți peste modificările tale (Rebase)..." +if git rebase $REMOTE_NAME/$BRANCH; then + echo "✅ Actualizare reușită!" +else + echo "⚠️ CONFLICTE DETECTATE!" + echo "Te rog rezolvă conflictele manual în panoul Source Control din code-server," + echo "apoi rulează 'git rebase --continue'." + exit 1 +fi + +echo "📥 Recuperare modificări locale din stash..." +git stash pop + +echo "✨ Proiectul este acum la zi cu $REMOTE_NAME/$BRANCH"