#!/bin/bash # ──────────────────────────────────────────────────────────────── # gitfield-radicle — v1.2.0 # Pushes local Git repo to Radicle and generates access metadata # Author: Mark Randall Havens — The Empathic Technologist # ──────────────────────────────────────────────────────────────── set -euo pipefail IFS=$'\n\t' PROJECT_NAME="git-sigil" LOCAL_REPO_PATH=$(pwd) METADATA_FILE=".radicle-link.md" DEFAULT_BRANCH="master" SEED_URL="kairos-seed.thefoldwithin.earth" PUBLIC_GATEWAY_GARDEN="https://app.radicle.xyz/nodes/seed.radicle.garden" PUBLIC_GATEWAY_KAIROS="https://app.radicle.xyz/nodes/kairos-seed.thefoldwithin.earth" PUBLIC_GATEWAY_RAW="https://app.radicle.network" echo "🌱 Initializing Radicle push..." # ── Ensure we're in a git repo if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then echo "❌ Not a valid Git repository" exit 1 fi # ── Add Kairos seed node explicitly rad node config set seeds "/dns4/${SEED_URL}/tcp/8776" # ── Create & push to Radicle PROJECT_ID=$(rad init --name "$PROJECT_NAME" --default-branch "$DEFAULT_BRANCH" --no-confirm | grep "rad:" | awk '{print $NF}') rad push "$PROJECT_ID" # ── Retrieve peer ID PEER_ID=$(rad self | grep "Peer ID" | awk '{print $NF}') # ── Commit metadata COMMIT_HASH=$(git rev-parse HEAD) COMMIT_MSG=$(git log -1 --pretty=%B) COMMIT_DATE=$(git log -1 --date=iso-local --pretty=format:'%cd') COMMIT_AUTHOR=$(git log -1 --pretty=format:'%an <%ae>') TREE_HASH=$(git rev-parse HEAD^{tree}) TIMESTAMP=$(date +"%Y-%m-%dT%H:%M:%S%:z") # ── System Info OS_NAME=$(uname -s) OS_VERSION=$(lsb_release -d | cut -f2) KERNEL_VERSION=$(uname -r) ARCHITECTURE=$(uname -m) HOSTNAME=$(hostname) CURRENT_USER=$(whoami) MAC_ADDR=$(ip link show eth0 | grep ether | awk '{print $2}') LOCAL_IP=$(hostname -I | awk '{print $1}') CPU_MODEL=$(grep "model name" /proc/cpuinfo | head -1 | cut -d ':' -f2 | xargs) TOTAL_RAM=$(free -g | awk '/^Mem:/{print $2}') # ── Generate Metadata Output cat < "$METADATA_FILE" # 🔗 Radicle Project Link Metadata ## 🏷️ Project Identity - **Project Name**: \`$PROJECT_NAME\` - **Local Path**: \`$LOCAL_REPO_PATH\` - **Peer ID**: \`$PEER_ID\` - **Project ID**: \`$PROJECT_ID\` --- ## 🌐 Public Gateway Access - **Radicle Garden Gateway** [$PUBLIC_GATEWAY_GARDEN/$PROJECT_ID]($PUBLIC_GATEWAY_GARDEN/$PROJECT_ID) - **Kairos Seed Gateway** [$PUBLIC_GATEWAY_KAIROS/$PROJECT_ID]($PUBLIC_GATEWAY_KAIROS/$PROJECT_ID) - **Raw Network Gateway** [$PUBLIC_GATEWAY_RAW/$PROJECT_ID]($PUBLIC_GATEWAY_RAW/$PROJECT_ID) --- ## 📦 Commit Metadata - **Latest Commit SHA**: \`$COMMIT_HASH\` - **Commit Message**: \`$COMMIT_MSG\` - **Branch**: \`$DEFAULT_BRANCH\` - **Timestamp**: \`$TIMESTAMP\` - **Tree SHA256**: \`$TREE_HASH\` - **Author**: \`$COMMIT_AUTHOR\` --- ## 🧬 System & Execution Fingerprint - **Host Machine**: \`$HOSTNAME\` - **Username**: \`$CURRENT_USER\` - **Script Version**: \`gitfield-radicle v1.2.0\` - **Run Context**: \`$(grep -q microsoft /proc/version && echo "WSL2" || echo "Native")\` - **Dockerized**: \`$(grep -q docker /proc/1/cgroup && echo "Yes" || echo "No")\` - **Local IP**: \`$LOCAL_IP\` - **MAC Address**: \`$MAC_ADDR\` --- ## 🧭 Environment Metadata - **Operating System**: \`$OS_NAME $OS_VERSION\` - **Kernel**: \`$KERNEL_VERSION\` - **Architecture**: \`$ARCHITECTURE\` - **CPU Model**: \`$CPU_MODEL\` - **Total RAM (GB)**: \`$TOTAL_RAM\` - **System Uptime**: \`$(uptime -p)\` --- > _Auto-generated on $TIMESTAMP via \`gitfield-radicle\` push script._ EOF touch .radicle-push-done echo "$PROJECT_ID" > .radicle-push-state echo "" echo "✅ Radicle push completed." echo "🌐 Access URLs:" echo "• Garden: $PUBLIC_GATEWAY_GARDEN/$PROJECT_ID" echo "• Kairos: $PUBLIC_GATEWAY_KAIROS/$PROJECT_ID" echo "• Raw: $PUBLIC_GATEWAY_RAW/$PROJECT_ID"