From 7a86f69629e6970f3901b93cf50c234f5e04c1c2 Mon Sep 17 00:00:00 2001 From: Mark Randall Havens Date: Fri, 30 May 2025 07:55:02 -0500 Subject: [PATCH] test3 --- .test4 | 0 gitfield-radicle | 108 +++++++++++++++++++++++------------------------ 2 files changed, 52 insertions(+), 56 deletions(-) create mode 100644 .test4 diff --git a/.test4 b/.test4 new file mode 100644 index 0000000..e69de29 diff --git a/gitfield-radicle b/gitfield-radicle index 498f428..2a6ac0c 100755 --- a/gitfield-radicle +++ b/gitfield-radicle @@ -2,12 +2,13 @@ set -euo pipefail IFS=$'\n\t' -# ╭─────────────────────────────╮ -# │ Config & Constants │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Config & Paths │ +# ╰───────────────────────────────╯ PROJECT_NAME=$(basename "$(pwd)") DEFAULT_NAME="Mark Randall Havens" DEFAULT_EMAIL="mark.r.havens@gmail.com" + RAD_HOME="$HOME/.radicle" RAD_BIN="$RAD_HOME/bin/rad" RAD_KEYS="$RAD_HOME/keys.json" @@ -16,92 +17,86 @@ RAD_PATH_LINE='export PATH="$HOME/.radicle/bin:$PATH"' PROFILE_FILE="$HOME/.bashrc" RAD_PUSH_FILE=".radicle-push-done" -# ╭─────────────────────────────╮ -# │ Logging │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Logging │ +# ╰───────────────────────────────╯ info() { echo -e "\e[1;34m[INFO]\e[0m $*"; } warn() { echo -e "\e[1;33m[WARN]\e[0m $*"; } error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } -# ╭─────────────────────────────╮ -# │ Git + Tools Check │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Git + Tools Precheck │ +# ╰───────────────────────────────╯ info "Checking Git..." -if ! command -v git &>/dev/null; then +command -v git >/dev/null || { info "Installing Git..." sudo apt update && sudo apt install -y git || error "Failed to install Git" -fi +} info "Git version: $(git --version)" NAME=$(git config --global user.name || true) EMAIL=$(git config --global user.email || true) [[ -z "$NAME" || -z "$EMAIL" ]] && { - info "Configuring Git identity..." + info "Setting Git identity..." git config --global user.name "$DEFAULT_NAME" git config --global user.email "$DEFAULT_EMAIL" } info "Git identity: $(git config --global user.name) <$(git config --global user.email)>" -# ╭─────────────────────────────╮ -# │ Install Radicle CLI │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Install Radicle CLI │ +# ╰───────────────────────────────╯ if [ ! -x "$RAD_BIN" ]; then - info "Installing Radicle CLI from official script..." + info "Installing Radicle CLI..." sudo apt install -y curl jq unzip || error "Missing dependencies" - curl -sSf https://radicle.xyz/install | sh || error "Radicle CLI install failed" + curl -sSf https://radicle.xyz/install | sh || error "Radicle install failed" fi -# ╭───────────────────────────────────────────────────────╮ -# │ PATH Handling: Make rad command Just Work™️ │ -# ╰───────────────────────────────────────────────────────╯ +# ─ PATH Setup (Temporary + Persistent) if ! command -v rad &>/dev/null; then - if [[ ":$PATH:" != *":$HOME/.radicle/bin:"* ]]; then - export PATH="$HOME/.radicle/bin:$PATH" - info "→ Temporarily patched PATH for this session" - fi + export PATH="$HOME/.radicle/bin:$PATH" + info "→ Temporarily patched PATH for this session" fi if ! grep -Fxq "$RAD_PATH_LINE" "$PROFILE_FILE"; then echo "$RAD_PATH_LINE" >> "$PROFILE_FILE" info "→ Added PATH to $PROFILE_FILE" - warn "→ Please run: source $PROFILE_FILE (or restart terminal) to make 'rad' globally available." + warn "→ Run 'source $PROFILE_FILE' to make 'rad' persistent" fi -if ! command -v rad &>/dev/null; then - error "'rad' CLI not available. Even after PATH patch. Try opening a new terminal or sourcing ~/.bashrc" -fi +command -v rad >/dev/null || error "Radicle CLI still unavailable. Try restarting your terminal." info "Radicle CLI ready: $(rad --version)" -# ╭─────────────────────────────╮ -# │ Radicle Identity Restore │ -# ╰─────────────────────────────╯ +# ╭────────────────────────────────────────────────────╮ +# │ Restore or Create Radicle Identity & Backup │ +# ╰────────────────────────────────────────────────────╯ mkdir -p "$(dirname "$RAD_BACKUP")" if [ ! -f "$RAD_KEYS" ]; then if [ -f "$RAD_BACKUP" ]; then - info "Injecting Radicle identity from backup..." - cp "$RAD_BACKUP" "$RAD_KEYS" || error "Failed to restore keys" + info "Restoring Radicle identity from backup..." + cp "$RAD_BACKUP" "$RAD_KEYS" || error "Failed to restore identity" else info "Creating new Radicle identity..." - rad auth || error "Radicle identity creation failed" - cp "$RAD_KEYS" "$RAD_BACKUP" || warn "Backup of new identity failed" + rad auth || error "Identity creation failed" + cp "$RAD_KEYS" "$RAD_BACKUP" || warn "Backup of identity failed" fi else - info "Radicle identity already present." + info "Radicle identity already exists." fi -# ╭─────────────────────────────╮ -# │ Radicle Node Start │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Start Rad Node │ +# ╰───────────────────────────────╯ pgrep -f "rad node start" &>/dev/null || { info "Starting Radicle node..." nohup rad node start > /dev/null 2>&1 & sleep 3 } -# ╭─────────────────────────────╮ -# │ Git Repo Initialization │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Initialize Git Repo │ +# ╰───────────────────────────────╯ if [ ! -d .git ]; then git init git add . || warn "Nothing to add" @@ -110,34 +105,35 @@ else info "Git repo already initialized." fi -# ╭─────────────────────────────╮ -# │ Radicle Project Init │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Register Radicle Project │ +# ╰───────────────────────────────╯ if ! rad projects | grep -q "$PROJECT_NAME"; then info "Registering Radicle project '$PROJECT_NAME'..." - rad init --name "$PROJECT_NAME" --description "Radicle sovereign project for $PROJECT_NAME" || warn "Project may already exist" + rad init --name "$PROJECT_NAME" --description "Radicle sovereign repo for $PROJECT_NAME" || warn "Repo may already exist" else info "Project '$PROJECT_NAME' already registered." fi -# ╭─────────────────────────────╮ -# │ Push to the Network │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Push Current Branch │ +# ╰───────────────────────────────╯ +CURRENT_BRANCH=$(git symbolic-ref --short HEAD) if [ ! -f "$RAD_PUSH_FILE" ]; then - info "Pushing project to Radicle network..." - if rad sync; then + info "Pushing branch '$CURRENT_BRANCH' to Radicle..." + if git push rad "$CURRENT_BRANCH"; then touch "$RAD_PUSH_FILE" - info "✓ Project replicated successfully." + info "✓ Branch '$CURRENT_BRANCH' replicated successfully" else - warn "Radicle push failed or already synced." + warn "Radicle push failed or already synced" fi else info "Push previously completed. Skipping." fi -# ╭─────────────────────────────╮ -# │ Final Output Block │ -# ╰─────────────────────────────╯ +# ╭───────────────────────────────╮ +# │ Final Output │ +# ╰───────────────────────────────╯ PROJECT_ID=$(rad self | grep 'Project ID' | awk '{print $NF}' || true) PEER_ID=$(rad self | grep 'Peer ID' | awk '{print $NF}' || true)