Files
local_machine/scripts/deployment/gitea/setup-and-push.sh
2026-03-14 20:03:57 +03:00

78 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Setup local_machine as a git repo and push to Gitea (gitea.hunab.app).
# Usage:
# 1. Create repo on Gitea (once): UI https://gitea.hunab.app -> New Repository "local_machine"
# OR: GITEA_TOKEN=xxx bash scripts/deployment/gitea/setup-and-push.sh --create-only
# 2. Push: bash scripts/deployment/gitea/setup-and-push.sh
set -e
GITEA_HOST="${GITEA_HOST:-https://gitea.hunab.app}"
GITEA_USER="${GITEA_USER:-hunabgit}"
REPO_NAME="local_machine"
REMOTE_URL_HTTPS="${GITEA_HOST}/${GITEA_USER}/${REPO_NAME}.git"
# SSH port 2223 (see docs/git/GITEA_COMPLETE_GUIDE.md)
REMOTE_URL_SSH="ssh://git@gitea.hunab.app:2223/${GITEA_USER}/${REPO_NAME}.git"
# Must run from repo root (local_machine)
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
if [[ ! -f "$ROOT/.gitignore" ]] || [[ ! -d "$ROOT/docs" ]]; then
echo "Run from local_machine root. Current: $ROOT"
exit 1
fi
cd "$ROOT"
# --- Create repo via API (optional) ---
if [[ "$1" == "--create-only" ]]; then
if [[ -z "$GITEA_TOKEN" ]]; then
echo "Create repo manually: $GITEA_HOST -> New Repository -> Name: $REPO_NAME"
echo "Or set GITEA_TOKEN and run again with --create-only to create via API."
exit 0
fi
echo "Creating repository $REPO_NAME..."
curl -s -X POST "${GITEA_HOST}/api/v1/user/repos" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\":\"$REPO_NAME\",\"description\":\"Local machine docs and scripts\",\"private\":false,\"auto_init\":false}" \
&& echo "" && echo "Repo created. Run without --create-only to push."
exit 0
fi
# --- Init git if needed ---
if [[ ! -d .git ]]; then
git init
git branch -M main
echo "Git initialized (branch main)."
fi
# --- Remote ---
if ! git remote get-url origin &>/dev/null; then
# Prefer SSH (port 2223) — надёжнее из РФ
if command -v ssh &>/dev/null && ssh -o BatchMode=yes -o ConnectTimeout=5 -p 2223 git@gitea.hunab.app 2>/dev/null; then
git remote add origin "$REMOTE_URL_SSH"
echo "Remote origin set (SSH, port 2223)."
else
git remote add origin "$REMOTE_URL_HTTPS"
echo "Remote origin set (HTTPS). From РФ: use SSH (port 2223) or proxy — see docs/git/GITEA_COMPLETE_GUIDE.md"
fi
fi
# --- Commit and push ---
git add -A
if git diff --cached --quiet; then
echo "Nothing to commit."
else
git commit -m "Initial commit: local_machine docs and scripts"
echo "Committed."
fi
echo "Pushing to $GITEA_USER/$REPO_NAME..."
if git push -u origin main 2>/dev/null; then
echo "Done. Repo: $GITEA_HOST/$GITEA_USER/$REPO_NAME"
else
echo "Push failed (e.g. timeout from РФ). Try:"
echo " SSH: git remote set-url origin $REMOTE_URL_SSH # port 2223"
echo " git push -u origin main"
echo " Or use bundle method from docs/git/GITEA_COMPLETE_GUIDE.md"
exit 1
fi