From 9ca959ba0bce6c6b5c03b39871dd90d3476b8b8e Mon Sep 17 00:00:00 2001 From: Mark Randall Havens Date: Sat, 31 May 2025 01:08:56 -0500 Subject: [PATCH] revised radicle to add public server --- .radicle-push-state | 2 +- gitfield-radicle | 87 +++++++++++++++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 28 deletions(-) diff --git a/.radicle-push-state b/.radicle-push-state index a1199ab..1e7e3bd 100644 --- a/.radicle-push-state +++ b/.radicle-push-state @@ -1 +1 @@ -0d32c6edb204b92180b753119e8364c3dccd71da +5721262240b0ae31a9a0740be5d9b0e0caa0109a diff --git a/gitfield-radicle b/gitfield-radicle index b6faaf3..b8f2be4 100755 --- a/gitfield-radicle +++ b/gitfield-radicle @@ -2,11 +2,14 @@ set -euo pipefail IFS=$'\n\t' +# ╭───────────────────────────────╮ +# │ Config & Paths │ +# ╰───────────────────────────────╯ PROJECT_NAME=$(basename "$(pwd)") DEFAULT_NAME="Mark Randall Havens" DEFAULT_EMAIL="mark.r.havens@gmail.com" MARKDOWN_FILE=".radicle-link.md" -SCRIPT_VERSION="1.0" +SCRIPT_VERSION="1.2" RAD_HOME="$HOME/.radicle" RAD_BIN="$RAD_HOME/bin/rad" @@ -15,6 +18,8 @@ RAD_BACKUP=".radicle-backup/keys.json" RAD_PATH_LINE='export PATH="$HOME/.radicle/bin:$PATH"' PROFILE_FILE="$HOME/.bashrc" PUSH_STATE_FILE=".radicle-push-state" +RAD_CONFIG="$RAD_HOME/config.json" +SEED_DOMAIN="kairos-seed.thefoldwithin.earth" info() { echo -e "\e[1;34m[INFO]\e[0m $*"; } warn() { echo -e "\e[1;33m[WARN]\e[0m $*"; } @@ -37,7 +42,10 @@ if [ ! -x "$RAD_BIN" ]; then fi export PATH="$HOME/.radicle/bin:$PATH" -grep -Fxq "$RAD_PATH_LINE" "$PROFILE_FILE" || echo "$RAD_PATH_LINE" >> "$PROFILE_FILE" +if ! grep -Fxq "$RAD_PATH_LINE" "$PROFILE_FILE"; then + echo "$RAD_PATH_LINE" >> "$PROFILE_FILE" +fi + command -v rad >/dev/null || error "Radicle CLI unavailable" mkdir -p "$(dirname "$RAD_BACKUP")" @@ -50,14 +58,46 @@ if [ ! -f "$RAD_KEYS" ]; then fi fi +# Start node if not running pgrep -f "rad node start" >/dev/null || { nohup rad node start > /dev/null 2>&1 & sleep 3 } -[ -d .git ] || { git init && git add . && git commit -m "Initial commit"; } +# ╭───────────────────────────────╮ +# │ Ensure Public Seed is Added │ +# ╰───────────────────────────────╯ +if [ -f "$RAD_CONFIG" ]; then + if ! grep -q "$SEED_DOMAIN" "$RAD_CONFIG"; then + info "Adding public seed node '$SEED_DOMAIN' to config..." + TMP=$(mktemp) + jq --arg seed "$SEED_DOMAIN" ' + .seeds = (.seeds // []) + [$seed] | + .seeds |= unique + ' "$RAD_CONFIG" > "$TMP" && mv "$TMP" "$RAD_CONFIG" + info "✓ Seed added. Restarting Radicle node..." + pkill -f "rad node" || true + nohup rad node start > /dev/null 2>&1 & + sleep 3 + else + info "✓ Public seed '$SEED_DOMAIN' already configured." + fi +else + warn "⚠️ Radicle config not found. Skipping seed injection." +fi -rad projects | grep -q "$PROJECT_NAME" || rad init --name "$PROJECT_NAME" --description "Radicle sovereign repo for $PROJECT_NAME" || warn "Repo may already exist" +# ╭───────────────────────────────╮ +# │ Init & Push Radicle Repo │ +# ╰───────────────────────────────╯ +if [ ! -d .git ]; then + git init + git add . + git commit -m "Initial commit" +fi + +if ! rad projects | grep -q "$PROJECT_NAME"; then + rad init --name "$PROJECT_NAME" --description "Radicle sovereign repo for $PROJECT_NAME" || warn "Repo may already exist" +fi CURRENT_BRANCH=$(git symbolic-ref --short HEAD) CURRENT_COMMIT=$(git rev-parse HEAD) @@ -71,23 +111,17 @@ if [[ "$CURRENT_COMMIT" != "$LAST_PUSHED_COMMIT" ]]; then fi fi -# 🛡 Safe JSON fallback -RAD_SELF=$(rad self --json 2>/dev/null || echo '{}') -if echo "$RAD_SELF" | jq empty >/dev/null 2>&1; then - PROJECT_ID=$(echo "$RAD_SELF" | jq -r '.projectId // empty') - PEER_ID=$(echo "$RAD_SELF" | jq -r '.peerId // empty') -else - warn "rad self output is not valid JSON" - PROJECT_ID="" - PEER_ID="" -fi +PROJECT_ID=$(rad self | awk -F': ' '/Project ID/ {print $2}') +PEER_ID=$(rad self | awk -F': ' '/Peer ID/ {print $2}') +REMOTE_SERVERS=$(rad node status | grep 'connected to' || echo "Unavailable") +PROJECT_SLUG="${PROJECT_ID#rad:}" +RAD_GATEWAY_URL="https://app.radicle.network/$PROJECT_SLUG" -REMOTE_SERVERS=$(rad node status 2>/dev/null | grep 'connected to' || echo "Unavailable") -RAD_GATEWAY_URL="" -[[ -n "$PROJECT_ID" ]] && RAD_GATEWAY_URL="https://app.radicle.network/${PROJECT_ID#rad:}" - -# 📦 Metadata +# ╭───────────────────────────────╮ +# │ Generate Metadata File │ +# ╰───────────────────────────────╯ TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') +DEFAULT_BRANCH=$(git symbolic-ref --short HEAD) REPO_PATH=$(pwd) LATEST_SHA=$(git rev-parse HEAD) LAST_COMMIT_MSG=$(git log -1 --pretty=format:"%s") @@ -113,7 +147,6 @@ LOCAL_IP=$(hostname -I | awk '{print $1}') CPU_MODEL=$(grep -m1 'model name' /proc/cpuinfo | cut -d: -f2 | sed 's/^ //') RAM_GB=$(awk '/MemTotal/ {printf "%.2f", $2/1024/1024}' /proc/meminfo) -# 🧾 Markdown output cat > "$MARKDOWN_FILE" < "$MARKDOWN_FILE" < "$MARKDOWN_FILE" <