#!/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}" : "${ADMIN_USER:=}" : "${ADMIN_EMAIL:=}" : "${DATA_DIR:=$HOME/gitea}" : "${HTTP_PORT:=3000}" : "${SSH_PORT:=2222}" main() { log_info "Starting 00_preflight.sh" [[ -n "$ADMIN_USER" ]] || die "ADMIN_USER is required." [[ -n "$ADMIN_EMAIL" ]] || die "ADMIN_EMAIL is required." need curl need jq if [[ "$MODE" == "docker" ]]; then need docker need docker-compose || log_warn "docker-compose not found; will use 'docker compose' if available." docker version >/dev/null 2>&1 || die "Docker not working." elif [[ "$MODE" == "native" ]]; then need sudo need systemctl else die "MODE must be 'docker' or 'native' (got: $MODE)" fi mkdir -p "$SKILL_ROOT/outputs" mkdir -p "$SKILL_ROOT/outputs/backups" mkdir -p "$DATA_DIR" # lightweight port sanity if command -v ss >/dev/null 2>&1; then if ss -ltn | awk '{print $4}' | grep -q ":$HTTP_PORT$"; then log_warn "HTTP_PORT $HTTP_PORT already in use." fi if ss -ltn | awk '{print $4}' | grep -q ":$SSH_PORT$"; then log_warn "SSH_PORT $SSH_PORT already in use." fi fi log_info "Preflight OK." } main "$@"