#!/usr/bin/env bash set -euo pipefail # === METADATA === SCRIPT_NAME="$(basename "$0")" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SKILL_ROOT="$(dirname "$SCRIPT_DIR")" # === CONFIGURATION === : "${NODE_NAME:=node-a}" : "${GITOPS_ROOT:=$HOME/infrastructure}" : "${ENABLE_KATE:=true}" : "${OUTPUT_DIR:=$SKILL_ROOT/outputs}" # === FUNCTIONS === log_info() { echo "[INFO] $(date -Iseconds) $*"; } log_warn() { echo "[WARN] $(date -Iseconds) $*" >&2; } preflight() { GITOPS_ROOT="${GITOPS_ROOT/#\~/$HOME}" [[ -d "$OUTPUT_DIR" ]] || mkdir -p "$OUTPUT_DIR" } setup_kate() { if [[ "$ENABLE_KATE" != "true" ]]; then log_info "Kate setup disabled (ENABLE_KATE=$ENABLE_KATE)" return 0 fi if ! command -v kate &>/dev/null; then log_warn "Kate not found - skipping editor setup" return 0 fi log_info "Setting up Kate project..." local project_dir="$GITOPS_ROOT" local project_file="$project_dir/.kateproject" [[ -d "$project_dir" ]] || mkdir -p "$project_dir" if [[ -f "$project_file" ]]; then log_info "Kate project already exists at $project_file - skipping" return 0 fi cat > "$project_file" </dev/null && ! command -v nvim &>/dev/null; then return 0 fi local vimrc="$HOME/.vimrc" local marker="\" Added by operator-bootstrap" if [[ -f "$vimrc" ]] && grep -q "$marker" "$vimrc" 2>/dev/null; then log_info "Vim config already updated - skipping" return 0 fi cat >> "$vimrc" <