Gitea theme: capital theta (circle+H) logo + homepage senza badge
- Logo/favicon ridisegnati come theta maiuscola: cerchio (anello) con 'H' centrata, clearance verificata (non tocca l'anello); ring ispessito per la favicon; centratura ottica verificata. - Rimosso il badge 'Self-hosted Git' dal hero della homepage (era esteticamente di troppo) - CSS e markup. - Aggiornati generate_theta.py, README, home.tmpl; caricati sul VPS in staging (md5 locali == remoti); tarball ricostruito. - Salvataggio iniziale dell'intero admin pack in git.
This commit is contained in:
Executable
+133
@@ -0,0 +1,133 @@
|
||||
#!/bin/bash
|
||||
# Gitea theme manager — installa o ripristina homepage + favicon custom.
|
||||
# DA ESEGUIRE COME ROOT SUL VPS (o con sudo).
|
||||
#
|
||||
# Uso:
|
||||
# bash gitea_theme.sh install # applica la homepage moderna + favicon
|
||||
# bash gitea_theme.sh rollback # torna allo stato iniziale
|
||||
# bash gitea_theme.sh # come "install"
|
||||
set -euo pipefail
|
||||
|
||||
CUSTOM_DIR="${CUSTOM_DIR:-/var/lib/gitea/custom}"
|
||||
SRC_DIR="$(cd "$(dirname "$0")" && pwd)/custom"
|
||||
STATE_FILE="$CUSTOM_DIR/.gitea-theme-state"
|
||||
|
||||
MODE="${1:-install}"
|
||||
case "$MODE" in
|
||||
install|rollback) : ;;
|
||||
*) echo "Uso: $0 [install|rollback]"; exit 2 ;;
|
||||
esac
|
||||
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo "ERRORE: devi eseguire questo script come root (o sudo)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------- verifica
|
||||
echo "==> Modalità: $MODE"
|
||||
echo "==> Custom dir: $CUSTOM_DIR"
|
||||
|
||||
# ---------------------------------------------------------------- install
|
||||
install_theme() {
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
BACKUP_DIR="${CUSTOM_DIR}/.backup-${STAMP}"
|
||||
|
||||
if [ ! -d "$SRC_DIR" ]; then
|
||||
echo "ERRORE: cartella sorgente '$SRC_DIR' non trovata (script in cartella sbagliata?)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 1) Backup delle eventuali personalizzazioni esistenti
|
||||
HAD_PREV=no
|
||||
if [ -e "$CUSTOM_DIR/templates/home.tmpl" ] || [ -e "$CUSTOM_DIR/public/assets/img" ]; then
|
||||
HAD_PREV=yes
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
for p in templates/home.tmpl public/assets/img; do
|
||||
if [ -e "$CUSTOM_DIR/$p" ]; then
|
||||
mkdir -p "$BACKUP_DIR/$(dirname "$p")"
|
||||
cp -a "$CUSTOM_DIR/$p" "$BACKUP_DIR/$p"
|
||||
echo "==> Backup salvato: $BACKUP_DIR/$p"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "==> Nessuna personalizzazione precedente, niente da salvare."
|
||||
fi
|
||||
|
||||
# 2) Copia dei nuovi file
|
||||
mkdir -p "$CUSTOM_DIR/templates" "$CUSTOM_DIR/public/assets/img"
|
||||
cp "$SRC_DIR/templates/home.tmpl" "$CUSTOM_DIR/templates/home.tmpl"
|
||||
cp "$SRC_DIR/public/assets/img/"* "$CUSTOM_DIR/public/assets/img/"
|
||||
echo "==> File copiati:"
|
||||
ls -l "$CUSTOM_DIR/templates/home.tmpl"
|
||||
ls -l "$CUSTOM_DIR/public/assets/img/"
|
||||
|
||||
# 3) Permessi corretti (il processo gitea gira come utente gitea)
|
||||
chown -R gitea:gitea "$CUSTOM_DIR"
|
||||
echo "==> Permessi impostati (gitea:gitea)."
|
||||
|
||||
# 4) Stato per il rollback
|
||||
{
|
||||
echo "installed_at=$STAMP"
|
||||
echo "backup_dir=$BACKUP_DIR"
|
||||
echo "had_custom=$HAD_PREV"
|
||||
} > "$STATE_FILE"
|
||||
echo "==> Stato rollback salvato in $STATE_FILE"
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------- rollback
|
||||
rollback_theme() {
|
||||
# 1) Leggi lo stato di installazione (se esiste)
|
||||
BACKUP_DIR=""
|
||||
HAD_PREV=no
|
||||
if [ -f "$STATE_FILE" ]; then
|
||||
source "$STATE_FILE" 2>/dev/null || true
|
||||
echo "==> Stato trovato: installato $installed_at, backup=${backup_dir:-nessuno}, precedente=$had_custom"
|
||||
fi
|
||||
|
||||
# 2) Rimuovi i file del tema
|
||||
rm -f "$CUSTOM_DIR/templates/home.tmpl"
|
||||
rm -rf "$CUSTOM_DIR/public/assets/img"
|
||||
echo "==> File del tema rimossi (home.tmpl e assets/img)."
|
||||
|
||||
# 3) Ripristina l'eventuale personalizzazione precedente dal backup
|
||||
if [ "$HAD_PREV" = "yes" ] && [ -n "${BACKUP_DIR:-}" ] && [ -d "$BACKUP_DIR" ]; then
|
||||
echo "==> Ripristino personalizzazione precedente da $BACKUP_DIR"
|
||||
if [ -f "$BACKUP_DIR/templates/home.tmpl" ]; then
|
||||
mkdir -p "$CUSTOM_DIR/templates"
|
||||
cp -a "$BACKUP_DIR/templates/home.tmpl" "$CUSTOM_DIR/templates/home.tmpl"
|
||||
fi
|
||||
if [ -d "$BACKUP_DIR/public/assets/img" ]; then
|
||||
mkdir -p "$CUSTOM_DIR/public/assets/img"
|
||||
cp -a "$BACKUP_DIR/public/assets/img/." "$CUSTOM_DIR/public/assets/img/"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 4) Rimuovi lo stato e le cartelle eventualmente vuote
|
||||
rm -f "$STATE_FILE"
|
||||
rmdir "$CUSTOM_DIR/public/assets/img" "$CUSTOM_DIR/public/assets" "$CUSTOM_DIR/public" 2>/dev/null || true
|
||||
rmdir "$CUSTOM_DIR/templates" 2>/dev/null || true
|
||||
echo "==> Stato rollback pulito."
|
||||
|
||||
# 5) Permessi
|
||||
chown -R gitea:gitea "$CUSTOM_DIR" 2>/dev/null || true
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------- esegui
|
||||
if [ "$MODE" = "install" ]; then
|
||||
install_theme
|
||||
else
|
||||
rollback_theme
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------- restart+verify
|
||||
systemctl restart gitea
|
||||
sleep 6
|
||||
echo "==> Stato servizio: $(systemctl is-active gitea)"
|
||||
if [ "$MODE" = "install" ]; then
|
||||
echo "==> Verifica asset (favicon/logo):"
|
||||
curl -sk -o /dev/null -w " /assets/img/favicon.svg -> %{http_code}\n" https://127.0.0.1/assets/img/favicon.svg 2>/dev/null || true
|
||||
curl -sk -o /dev/null -w " /assets/img/logo.svg -> %{http_code}\n" https://127.0.0.1/assets/img/logo.svg 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "FATTO ($MODE). Ricarica https://git.zomas.net (Ctrl+Shift+R per bypassare la cache)."
|
||||
Reference in New Issue
Block a user