#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SKILL_ROOT="$(dirname "$SCRIPT_DIR")" source "$SCRIPT_DIR/_common.sh" : "${MODE:=docker}" : "${NODE_NAME:=node-b}" : "${HTTP_PORT:=3000}" : "${SSH_PORT:=2222}" : "${DOMAIN:=}" : "${DATA_DIR:=$HOME/gitea}" : "${ADMIN_USER:=}" : "${ADMIN_EMAIL:=}" compose_cmd() { if command -v docker-compose >/dev/null 2>&1; then echo "docker-compose" else echo "docker compose" fi } main() { confirm_gate [[ -n "$ADMIN_USER" ]] || die "ADMIN_USER is required." [[ -n "$ADMIN_EMAIL" ]] || die "ADMIN_EMAIL is required." local ts; ts="$(date -Iseconds | tr ':' '-')" local backup_dir="$SKILL_ROOT/outputs/backups/$ts" mkdir -p "$backup_dir" if [[ "$MODE" == "docker" ]]; then need docker mkdir -p "$SKILL_ROOT/outputs" # Render minimal app.ini (Gitea will expand defaults) cat > "$SKILL_ROOT/outputs/gitea_app.ini" < "$SKILL_ROOT/outputs/compose.yml" </dev/null 2>&1; then break fi sleep 1 done log_warn "Admin creation is interactive via web UI on first run (recommended)." log_warn "Open: http://:${HTTP_PORT}/ and create admin user: $ADMIN_USER" log_warn "Then lock install is already set in app.ini (INSTALL_LOCK=true)." elif [[ "$MODE" == "native" ]]; then need sudo need systemctl log_warn "Native mode is a scaffold in v1.0.0." log_warn "It intentionally does not auto-install packages to avoid distro variance." log_warn "Next action: follow references/gitea_hardening_notes.md and extend apply script for your distro." else die "MODE must be docker|native" fi log_info "Apply complete." } main "$@"