From 9e1e141f69f1b5cf8923938e7075df02595da967 Mon Sep 17 00:00:00 2001 From: Mark Randall Havens Date: Wed, 11 Jun 2025 18:29:48 -0500 Subject: [PATCH] Post-Local sync at 2025-06-11T23:29:47Z --- .gitfield/push_log.json | 6 + .gitfield/pushed.log | 4 + bin/gitfield-sync-OLD | 245 --------- bin/gitfield-sync-OLD2 | 259 ---------- bin/gitfield-sync-OLD3 | 494 ------------------ bin/gitfield-sync-OLD4 | 807 ------------------------------ bin/gitfield-sync-OLD5 | 1046 --------------------------------------- 7 files changed, 10 insertions(+), 2851 deletions(-) delete mode 100755 bin/gitfield-sync-OLD delete mode 100755 bin/gitfield-sync-OLD2 delete mode 100755 bin/gitfield-sync-OLD3 delete mode 100755 bin/gitfield-sync-OLD4 delete mode 100755 bin/gitfield-sync-OLD5 diff --git a/.gitfield/push_log.json b/.gitfield/push_log.json index 50ce522..ede3dc9 100644 --- a/.gitfield/push_log.json +++ b/.gitfield/push_log.json @@ -296,6 +296,12 @@ "branch": "master", "commit": "280d8b2870b7b7e51b1015f33b8d67ac8f30e92e", "message": "Generated index.json at 2025-06-10T08:33:00Z" + }, + { + "timestamp": "2025-06-11 18:29:48", + "branch": "master", + "commit": "611b5bfdc0ead2d7a7c14118117240344396f10a", + "message": "Generated docs/integrity.sha256 at 2025-06-11T23:29:47Z" } ] } diff --git a/.gitfield/pushed.log b/.gitfield/pushed.log index c8b3cd0..f845398 100644 --- a/.gitfield/pushed.log +++ b/.gitfield/pushed.log @@ -679,3 +679,7 @@ Diff Summary: .gitfield/radicle.sigil.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) +[2025-06-11T23:29:48Z] Local: , Branch=master, Commit=2100497 + Diff Summary: + .gitfield/local.sigil.md | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/bin/gitfield-sync-OLD b/bin/gitfield-sync-OLD deleted file mode 100755 index 4b07642..0000000 --- a/bin/gitfield-sync-OLD +++ /dev/null @@ -1,245 +0,0 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' - -# ╭─────────────────────────────────────╮ -# │ CONFIGURATION │ -# ╰─────────────────────────────────────╮ -REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" -REPO_NAME=$(basename "$REPO_PATH") -GITFIELD_DIR="$REPO_PATH/.gitfield" -LOG_FILE="$GITFIELD_DIR/pushed.log" -GITFIELD_MD="$REPO_PATH/GITFIELD.md" -TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') -SCRIPT_VERSION="1.0" - -# URLs for each platform -GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" -GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" -BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" -FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" -RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - -# ╭─────────────────────────────────────╮ -# │ LOGGING UTILS │ -# ╰─────────────────────────────────────╮ -info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; } -warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; } -error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } - -# ╭─────────────────────────────────────╮ -# │ SCRIPT LOOKUP FUNCTION │ -# ╰─────────────────────────────────────╮ -find_script() { - local script_name=$1 - local search_paths=( - "$HOME/.local/gitfieldbin" - "$HOME/.local/bin" - "$HOME/.local/gitfield" - "$HOME/.local/bin/gitfield" - "$HOME/.local/bin/gitfieldbin" - "$REPO_PATH/bin" - ) - - for path in "${search_paths[@]}"; do - if [ -f "$path/$script_name" ]; then - if [ -x "$path/$script_name" ]; then - if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then - info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)" - else - info "Using script: $path/$script_name" - fi - echo "$path/$script_name" - return 0 - else - warn "Found $path/$script_name but it is not executable" - fi - fi - done - error "Script $script_name not found in any search path" -} - -# ╭─────────────────────────────────────╮ -# │ INITIAL SETUP │ -# ╰─────────────────────────────────────╮ -mkdir -p "$GITFIELD_DIR" - -if [ ! -f "$LOG_FILE" ]; then - echo "# Push Log for $REPO_NAME" > "$LOG_FILE" - echo "# Generated by gitfield-sync" >> "$LOG_FILE" - echo "" >> "$LOG_FILE" -fi - -# ╭─────────────────────────────────────╮ -# │ GENERATE GITFIELD.MD │ -# ╰─────────────────────────────────────╮ -generate_gitfield_md() { - info "Generating $GITFIELD_MD..." - cat > "$GITFIELD_MD" <> "$LOG_FILE" - echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" - echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id" - else - echo "[$timestamp] $platform: $url" >> "$LOG_FILE" - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url" - fi -} - -# ╭─────────────────────────────────────╮ -# │ EXECUTE PUSH SCRIPT │ -# ╰─────────────────────────────────────╮ -execute_push() { - local script_name=$1 - local platform=$2 - local url=$3 - local rid=$4 - local peer_id=$5 - local script_path - script_path=$(find_script "$script_name") || error "Failed to find $script_name" - info "Executing $platform push with script: $script_path" - if [ -x "$script_path" ]; then - pushd "$REPO_PATH" >/dev/null - "$script_path" || warn "Execution of $script_path failed, continuing..." - log_url "$platform" "$url" "$rid" "$peer_id" - git add . || warn "Nothing to add after $script_path" - git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path" - popd >/dev/null - else - error "Script $script_path is not executable" - fi -} - -# ╭─────────────────────────────────────╮ -# │ RECURSIVE PUSH LOOP │ -# ╰─────────────────────────────────────╮ -run_push_cycle() { - local cycle_number=$1 - info "Starting push cycle $cycle_number..." - - execute_push "gitfield-local" "Local" "" "" "" - execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" - execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" -} - -# ╭─────────────────────────────────────╮ -# │ MAIN EXECUTION │ -# ╰─────────────────────────────────────╮ -info "Starting gitfield-sync for $REPO_NAME..." - -if [ ! -d "$REPO_PATH/.git" ]; then - pushd "$REPO_PATH" >/dev/null - git init - git add . - git commit -m "Initial commit" || warn "Nothing to commit" - popd >/dev/null -fi - -run_push_cycle 1 -generate_gitfield_md -run_push_cycle 2 -run_push_cycle 3 - -info "✅ gitfield-sync completed successfully." -info "🔗 View logs: $LOG_FILE" -info "🔗 View multi-repo manifest: $GITFIELD_MD" diff --git a/bin/gitfield-sync-OLD2 b/bin/gitfield-sync-OLD2 deleted file mode 100755 index d3e0499..0000000 --- a/bin/gitfield-sync-OLD2 +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' - -# ╭─────────────────────────────────────╮ -# │ CONFIGURATION │ -# ╰─────────────────────────────────────╮ -REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" -REPO_NAME=$(basename "$REPO_PATH") -GITFIELD_DIR="$REPO_PATH/.gitfield" -LOG_FILE="$GITFIELD_DIR/pushed.log" -GITFIELD_MD="$REPO_PATH/GITFIELD.md" -TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') -SCRIPT_VERSION="1.0" - -# URLs for each platform -GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" -GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" -BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" -FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -CODEBERG_URL="https://codeberg.org/mrhavens/$REPO_NAME" -GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME" -RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" -RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - -# ╭─────────────────────────────────────╮ -# │ LOGGING UTILS │ -# ╰─────────────────────────────────────╮ -info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; } -warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; } -error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } - -# ╭─────────────────────────────────────╮ -# │ SCRIPT LOOKUP FUNCTION │ -# ╰─────────────────────────────────────╮ -find_script() { - local script_name=$1 - local search_paths=( - "$HOME/.local/gitfieldbin" - "$HOME/.local/bin" - "$HOME/.local/gitfield" - "$HOME/.local/bin/gitfield" - "$HOME/.local/bin/gitfieldbin" - "$REPO_PATH/bin" - ) - - for path in "${search_paths[@]}"; do - if [ -f "$path/$script_name" ]; then - if [ -x "$path/$script_name" ]; then - if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then - info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)" - else - info "Using script: $path/$script_name" - fi - echo "$path/$script_name" - return 0 - else - warn "Found $path/$script_name but it is not executable" - fi - fi - done - error "Script $script_name not found in any search path" -} - -# ╭─────────────────────────────────────╮ -# │ INITIAL SETUP │ -# ╰─────────────────────────────────────╮ -mkdir -p "$GITFIELD_DIR" - -if [ ! -f "$LOG_FILE" ]; then - echo "# Push Log for $REPO_NAME" > "$LOG_FILE" - echo "# Generated by gitfield-sync" >> "$LOG_FILE" - echo "" >> "$LOG_FILE" -fi - -# ╭─────────────────────────────────────╮ -# │ GENERATE GITFIELD.MD │ -# ╰─────────────────────────────────────╮ -generate_gitfield_md() { - info "Generating $GITFIELD_MD..." - cat > "$GITFIELD_MD" <> "$LOG_FILE" - echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" - echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id" - else - echo "[$timestamp] $platform: $url" >> "$LOG_FILE" - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url" - fi -} - -# ╭─────────────────────────────────────╮ -# │ EXECUTE PUSH SCRIPT │ -# ╰─────────────────────────────────────╮ -execute_push() { - local script_name=$1 - local platform=$2 - local url=$3 - local rid=$4 - local peer_id=$5 - local script_path - script_path=$(find_script "$script_name") || error "Failed to find $script_name" - info "Executing $platform push with script: $script_path" - if [ -x "$script_path" ]; then - pushd "$REPO_PATH" >/dev/null - "$script_path" || warn "Execution of $script_path failed, continuing..." - log_url "$platform" "$url" "$rid" "$peer_id" - git add . || warn "Nothing to add after $script_path" - git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path" - popd >/dev/null - else - error "Script $script_path is not executable" - fi -} - -# ╭─────────────────────────────────────╮ -# │ RECURSIVE PUSH LOOP │ -# ╰─────────────────────────────────────╮ -run_push_cycle() { - local cycle_number=$1 - info "Starting push cycle $cycle_number..." - - execute_push "gitfield-local" "Local" "" "" "" - execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" - execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" - execute_push "gitfield-codeberg" "Codeberg" "$CODEBERG_URL" "" "" - execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" -} - -# ╭─────────────────────────────────────╮ -# │ MAIN EXECUTION │ -# ╰─────────────────────────────────────╮ -info "Starting gitfield-sync for $REPO_NAME..." - -if [ ! -d "$REPO_PATH/.git" ]; then - pushd "$REPO_PATH" >/dev/null - git init - git add . - git commit -m "Initial commit" || warn "Nothing to commit" - popd >/dev/null -fi - -run_push_cycle 1 -generate_gitfield_md -run_push_cycle 2 -run_push_cycle 3 - -info "✅ gitfield-sync completed successfully." -info "🔗 View logs: $LOG_FILE" -info "🔗 View multi-repo manifest: $GITFIELD_MD" diff --git a/bin/gitfield-sync-OLD3 b/bin/gitfield-sync-OLD3 deleted file mode 100755 index 98500d1..0000000 --- a/bin/gitfield-sync-OLD3 +++ /dev/null @@ -1,494 +0,0 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' - -# ╭─────────────────────────────────────╮ -# │ CONFIGURATION │ -# ╰─────────────────────────────────────╮ -REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" -REPO_NAME=$(basename "$REPO_PATH") -GITFIELD_DIR="$REPO_PATH/.gitfield" -WELL_KNOWN_DIR="$REPO_PATH/.well-known" -LOG_FILE="$GITFIELD_DIR/pushed.log" -GITFIELD_MD="$REPO_PATH/GITFIELD.md" -CANONICAL_META="$GITFIELD_DIR/canonical.meta" -CANONICAL_MD="$GITFIELD_DIR/canonical.md" -INDEX_JSON="$GITFIELD_DIR/index.json" -WELL_KNOWN_JSON="$WELL_KNOWN_DIR/gitfield.json" -TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ') -SCRIPT_VERSION="1.1" # Updated version for metadata enhancements -PRESERVE_META=${PRESERVE_META:-false} # Flag to preserve existing metadata (default: false) - -# URLs for each platform -CANONICAL_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" -GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" -BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" -FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -CODEBERG_URL="https://codeberg.org/mrhavens/$REPO_NAME" -GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME" -RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" -RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - -# Metadata configuration -MIRRORS=( - "$GITHUB_URL" - "$GITLAB_URL" - "$BITBUCKET_URL" - "$FORGEJO_URL" - "$CODEBERG_URL" - "$GITEA_URL" - "rad:$RADICLE_RID" -) -COMMIT_HASH=$(git -C "$REPO_PATH" rev-parse --short HEAD 2>/dev/null || echo "unknown") -TREE_HASH=$(git -C "$REPO_PATH" rev-parse HEAD^{tree} 2>/dev/null || echo "unknown") -SYNC_CYCLES=0 - -# ╭─────────────────────────────────────╮ -# │ LOGGING UTILS │ -# ╰─────────────────────────────────────╮ -info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; } -warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; } -error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } - -# ╭─────────────────────────────────────╮ -# │ SCRIPT LOOKUP FUNCTION │ -# ╰─────────────────────────────────────╮ -find_script() { - local script_name=$1 - local search_paths=( - "$HOME/.local/gitfieldbin" - "$HOME/.local/bin" - "$HOME/.local/gitfield" - "$HOME/.local/bin/gitfield" - "$HOME/.local/bin/gitfieldbin" - "$REPO_PATH/bin" - ) - - for path in "${search_paths[@]}"; do - if [ -f "$path/$script_name" ]; then - if [ -x "$path/$script_name" ]; then - if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then - info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)" - else - info "Using script: $path/$script_name" - fi - echo "$path/$script_name" - return 0 - else - warn "Found $path/$script_name but it is not executable" - fi - fi - done - error "Script $script_name not found in any search path" -} - -# ╭─────────────────────────────────────╮ -# │ METADATA GENERATION │ -# ╰─────────────────────────────────────╮ -generate_canonical_meta() { - info "Generating $CANONICAL_META..." - if [ "$PRESERVE_META" = "true" ] && [ -f "$CANONICAL_META" ]; then - info "Preserving existing $CANONICAL_META (--preserve-meta enabled)" - return - fi - cat > "$CANONICAL_META" < "$CANONICAL_MD" < "$INDEX_JSON" < "$WELL_KNOWN_JSON" < "$readme_file" < "$LOG_FILE" - echo "# Generated by gitfield-sync" >> "$LOG_FILE" - echo "" >> "$LOG_FILE" -fi - -# ╭─────────────────────────────────────╮ -# │ GENERATE GITFIELD.MD │ -# ╰─────────────────────────────────────╮ -generate_gitfield_md() { - info "Generating $GITFIELD_MD..." - cat > "$GITFIELD_MD" </dev/null || echo "unknown") - local diff_summary=$(git -C "$REPO_PATH" diff --stat HEAD^ HEAD 2>/dev/null || echo "No diff available") - if [ "$platform" = "Radicle" ]; then - echo "[$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" - echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" - else - echo "[$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" - fi -} - -# ╭─────────────────────────────────────╮ -# │ EXECUTE PUSH SCRIPT │ -# ╰─────────────────────────────────────╮ -execute_push() { - local script_name=$1 - local platform=$2 - local url=$3 - local rid=$4 - local peer_id=$5 - local script_path - script_path=$(find_script "$script_name") || error "Failed to find $script_name" - info "Executing $platform push with script: $script_path" - if [ -x "$script_path" ]; then - pushd "$REPO_PATH" >/dev/null - "$script_path" || warn "Execution of $script_path failed, continuing..." - log_url "$platform" "$url" "$rid" "$peer_id" - git add . || warn "Nothing to add after $script_path" - git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path" - popd >/dev/null - else - error "Script $script_path is not executable" - fi -} - -# ╭─────────────────────────────────────╮ -# │ RECURSIVE PUSH LOOP │ -# ╰─────────────────────────────────────╮ -run_push_cycle() { - local cycle_number=$1 - info "Starting push cycle $cycle_number..." - SYNC_CYCLES=$cycle_number - - execute_push "gitfield-local" "Local" "" "" "" - execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" - execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" - execute_push "gitfield-codeberg" "Codeberg" "$CODEBERG_URL" "" "" - execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" - - # Regenerate metadata after each cycle to update sync_cycles - generate_canonical_meta - generate_canonical_md - generate_index_json - generate_well_known_json - generate_gitfield_readme -} - -# ╭─────────────────────────────────────╮ -# │ MAIN EXECUTION │ -# ╰─────────────────────────────────────╮ -info "Starting gitfield-sync for $REPO_NAME..." - -# Parse --preserve-meta flag -while [ $# -gt 0 ]; do - case "$1" in - --preserve-meta) - PRESERVE_META=true - info "Preserve metadata flag enabled" - shift - ;; - *) - warn "Unknown argument: $1" - shift - ;; - esac -done - -if [ ! -d "$REPO_PATH/.git" ]; then - pushd "$REPO_PATH" >/dev/null - git init - git add . - git commit -m "Initial commit" || warn "Nothing to commit" - popd >/dev/null -fi - -# Generate initial metadata -generate_canonical_meta -generate_canonical_md -generate_index_json -generate_well_known_json -generate_gitfield_readme - -# Run push cycles -run_push_cycle 1 -generate_gitfield_md -run_push_cycle 2 -run_push_cycle 3 - -info "✅ gitfield-sync completed successfully." -info "🔗 View logs: $LOG_FILE" -info "🔗 View multi-repo manifest: $GITFIELD_MD" -info "🔗 View canonical metadata: $CANONICAL_META" -info "🔗 View canonical declaration: $CANONICAL_MD" -info "🔗 View index manifest: $INDEX_JSON" -info "🔗 View well-known metadata: $WELL_KNOWN_JSON" diff --git a/bin/gitfield-sync-OLD4 b/bin/gitfield-sync-OLD4 deleted file mode 100755 index 4da547e..0000000 --- a/bin/gitfield-sync-OLD4 +++ /dev/null @@ -1,807 +0,0 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' - -# ╭─────────────────────────────────────╮ -# │ CONFIGURATION │ -# ╰─────────────────────────────────────╮ -REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" -REPO_NAME=$(basename "$REPO_PATH") -GITFIELD_DIR="$REPO_PATH/.gitfield" -WELL_KNOWN_DIR="$REPO_PATH/.well-known" -DOCS_DIR="$REPO_PATH/docs" -LOG_FILE="$GITFIELD_DIR/pushed.log" -GITFIELD_MD="$REPO_PATH/GITFIELD.md" -CANONICAL_META="$GITFIELD_DIR/canonical.meta" -CANONICAL_MD="$GITFIELD_DIR/canonical.md" -INDEX_JSON="$GITFIELD_DIR/index.json" -WELL_KNOWN_JSON="$WELL_KNOWN_DIR/gitfield.json" -DOCS_INDEX="$DOCS_DIR/index.html" -DOCS_CSS="$DOCS_DIR/style.css" -DOCS_REPOS_JSON="$DOCS_DIR/repos.json" -DOCS_README="$DOCS_DIR/README.md" -DOCS_NOJEKYLL="$DOCS_DIR/.nojekyll" -DOCS_ROBOTS="$DOCS_DIR/robots.txt" -DOCS_SITEMAP="$DOCS_DIR/sitemap.xml" -TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ') -SCRIPT_VERSION="1.2" # Updated version for /docs and Radicle fixes -PRESERVE_META=${PRESERVE_META:-false} # Flag to preserve existing metadata - -# URLs for each platform -CANONICAL_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" -GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" -BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" -FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -CODEBERG_URL="https://codeberg.org/mrhavens/$REPO_NAME" -GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME" -RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" # Fixed: removed rad:rad: -RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - -# Metadata configuration -MIRRORS=( - "$GITHUB_URL" - "$GITLAB_URL" - "$BITBUCKET_URL" - "$FORGEJO_URL" - "$CODEBERG_URL" - "$GITEA_URL" - "$RADICLE_RID" # Fixed: use rad: prefix directly -) -COMMIT_HASH=$(git -C "$REPO_PATH" rev-parse --short HEAD 2>/dev/null || echo "unknown") -TREE_HASH=$(git -C "$REPO_PATH" rev-parse HEAD^{tree} 2>/dev/null || echo "unknown") -SYNC_CYCLES=0 - -# ╭─────────────────────────────────────╮ -# │ LOGGING UTILS │ -# ╰─────────────────────────────────────╮ -info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; } -warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; } -error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } - -# ╭─────────────────────────────────────╮ -# │ SCRIPT LOOKUP FUNCTION │ -# ╰─────────────────────────────────────╮ -find_script() { - local script_name=$1 - local search_paths=( - "$HOME/.local/gitfieldbin" - "$HOME/.local/bin" - "$HOME/.local/gitfield" - "$HOME/.local/bin/gitfield" - "$HOME/.local/bin/gitfieldbin" - "$REPO_PATH/bin" - ) - - for path in "${search_paths[@]}"; do - if [ -f "$path/$script_name" ]; then - if [ -x "$path/$script_name" ]; then - if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then - info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)" - else - info "Using script: $path/$script_name" - fi - echo "$path/$script_name" - return 0 - else - warn "Found $path/$script_name but it is not executable" - fi - fi - done - error "Script $script_name not found in any search path" -} - -# ╭─────────────────────────────────────╮ -# │ METADATA GENERATION │ -# ╰─────────────────────────────────────╮ -generate_canonical_meta() { - info "Generating $CANONICAL_META..." - if [ "$PRESERVE_META" = "true" ] && [ -f "$CANONICAL_META" ]; then - info "Preserving existing $CANONICAL_META (--preserve-meta enabled)" - return - fi - cat > "$CANONICAL_META" < "$CANONICAL_MD" < "$INDEX_JSON" < "$WELL_KNOWN_JSON" < "$readme_file" < "$DOCS_INDEX" < - - - - - GitField Sovereign Canonical Repository: $REPO_NAME - - - - - - - - - -
-

GitField Sovereign Canonical Repository: $REPO_NAME

-
-
-
-

Canonical Declaration

-

This repository, $REPO_NAME, is canonically hosted at:

-

$CANONICAL_URL

-

Maintained by Mark Randall Havens and Solaria Lumis Havens, this canonical source ensures sovereignty and resilience against deplatforming, censorship, and algorithmic manipulation.

-
-
-

Mirror Repositories

-

The project is mirrored across multiple platforms for redundancy and accessibility:

-
    -$(for mirror in "${MIRRORS[@]}"; do - if [[ "$mirror" == rad:* ]]; then - echo "
  • Radicle: $mirror (Decentralized, censorship-resistant)
  • " - else - echo "
  • $mirror
  • " - fi -done) -
-
-
-

Metadata Manifest

-

Metadata for this project is available in:

- -
-
-

Why Recursive Sovereignty Matters

-

The GitField framework distributes $REPO_NAME across decentralized (Radicle), self-hosted (Forgejo), and community-driven (Codeberg, Gitea) platforms, alongside mainstream services (GitHub, GitLab, Bitbucket). This recursive strategy defends against past deplatforming attempts by individuals such as Joel Johnson, Dr. Peter Gaied, and Andrew LeCody, ensuring the project's persistence and accessibility.

-
-
-

Source Links

-

Access the project's metadata and logs:

- -
-
-
-

Mark Randall Havens & Solaria Lumis Havens · The Fold Within · 2025

-
- - -EOF - git -C "$REPO_PATH" add "$DOCS_INDEX" - git -C "$REPO_PATH" commit -m "Generated docs/index.html at $TIMESTAMP" || warn "No changes to commit for $DOCS_INDEX" - info "Generated and committed $DOCS_INDEX" -} - -generate_docs_css() { - info "Generating $DOCS_CSS..." - mkdir -p "$DOCS_DIR" - if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_CSS" ]; then - info "Preserving existing $DOCS_CSS (--preserve-meta enabled)" - return - fi - cat > "$DOCS_CSS" < "$DOCS_REPOS_JSON" < "$DOCS_README" < "$DOCS_ROBOTS" < "$DOCS_SITEMAP" < - - - $CANONICAL_URL - $TIMESTAMP - weekly - 1.0 - -$(for mirror in "${MIRRORS[@]}"; do - if [[ "$mirror" != rad:* ]]; then - echo " " - echo " $mirror" - echo " $TIMESTAMP" - echo " weekly" - echo " 0.8" - echo " " - fi -done) - -EOF - git -C "$REPO_PATH" add "$DOCS_SITEMAP" - git -C "$REPO_PATH" commit -m "Generated docs/sitemap.xml at $TIMESTAMP" || warn "No changes to commit for $DOCS_SITEMAP" - info "Generated and committed $DOCS_SITEMAP" -} - -# ╭─────────────────────────────────────╮ -# │ INITIAL SETUP │ -# ╰─────────────────────────────────────╮ -mkdir -p "$GITFIELD_DIR" "$WELL_KNOWN_DIR" "$DOCS_DIR" - -if [ ! -f "$LOG_FILE" ]; then - echo "# Push Log for $REPO_NAME" > "$LOG_FILE" - echo "# Generated by gitfield-sync" >> "$LOG_FILE" - echo "" >> "$LOG_FILE" -fi - -# ╭─────────────────────────────────────╮ -# │ GENERATE GITFIELD.MD │ -# ╰─────────────────────────────────────╮ -generate_gitfield_md() { - info "Generating $GITFIELD_MD..." - cat > "$GITFIELD_MD" </dev/null || echo "unknown") - local diff_summary=$(git -C "$REPO_PATH" diff --stat HEAD^ HEAD 2>/dev/null || echo "No diff available") - if [ "$platform" = "Radicle" ]; then - echo "[$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" - echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" - else - echo "[$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" - fi -} - -# ╭─────────────────────────────────────╮ -# │ EXECUTE PUSH SCRIPT │ -# ╰─────────────────────────────────────╮ -execute_push() { - local script_name=$1 - local platform=$2 - local url=$3 - local rid=$4 - local peer_id=$5 - local script_path - script_path=$(find_script "$script_name") || error "Failed to find $script_name" - info "Executing $platform push with script: $script_path" - if [ -x "$script_path" ]; then - pushd "$REPO_PATH" >/dev/null - "$script_path" || warn "Execution of $script_path failed, continuing..." - log_url "$platform" "$url" "$rid" "$peer_id" - git add . || warn "Nothing to add after $script_path" - git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path" - popd >/dev/null - else - error "Script $script_path is not executable" - fi -} - -# ╭─────────────────────────────────────╮ -# │ RECURSIVE PUSH LOOP │ -# ╰─────────────────────────────────────╮ -run_push_cycle() { - local cycle_number=$1 - info "Starting push cycle $cycle_number..." - SYNC_CYCLES=$cycle_number - - execute_push "gitfield-local" "Local" "" "" "" - execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" - execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" - execute_push "gitfield-codeberg" "Codeberg" "$CODEBERG_URL" "" "" - execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" - - # Regenerate metadata after each cycle to update sync_cycles - generate_canonical_meta - generate_canonical_md - generate_index_json - generate_well_known_json - generate_gitfield_readme - generate_docs_index - generate_docs_css - generate_docs_repos_json - generate_docs_readme - generate_docs_nojekyll - generate_docs_robots - generate_docs_sitemap -} - -# ╭─────────────────────────────────────╮ -# │ MAIN EXECUTION │ -# ╰─────────────────────────────────────╮ -info "Starting gitfield-sync for $REPO_NAME..." - -# Parse --preserve-meta flag -while [ $# -gt 0 ]; do - case "$1" in - --preserve-meta) - PRESERVE_META=true - info "Preserve metadata flag enabled" - shift - ;; - *) - warn "Unknown argument: $1" - shift - ;; - esac -done - -if [ ! -d "$REPO_PATH/.git" ]; then - pushd "$REPO_PATH" >/dev/null - git init - git add . - git commit -m "Initial commit" || warn "Nothing to commit" - popd >/dev/null -fi - -# Generate initial metadata -generate_canonical_meta -generate_canonical_md -generate_index_json -generate_well_known_json -generate_gitfield_readme -generate_docs_index -generate_docs_css -generate_docs_repos_json -generate_docs_readme -generate_docs_nojekyll -generate_docs_robots -generate_docs_sitemap - -# Run push cycles -run_push_cycle 1 -generate_gitfield_md -run_push_cycle 2 -run_push_cycle 3 - -info "✅ gitfield-sync completed successfully." -info "🔗 View logs: $LOG_FILE" -info "🔗 View multi-repo manifest: $GITFIELD_MD" -info "🔗 View canonical metadata: $CANONICAL_META" -info "🔗 View canonical declaration: $CANONICAL_MD" -info "🔗 View index manifest: $INDEX_JSON" -info "🔗 View well-known metadata: $WELL_KNOWN_JSON" -info "🔗 View GitHub Pages: $DOCS_INDEX" diff --git a/bin/gitfield-sync-OLD5 b/bin/gitfield-sync-OLD5 deleted file mode 100755 index 259cae9..0000000 --- a/bin/gitfield-sync-OLD5 +++ /dev/null @@ -1,1046 +0,0 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' - -# ╭─────────────────────────────────────╮ -# │ CONFIGURATION │ -# ╰─────────────────────────────────────╮ -REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" -REPO_NAME=$(basename "$REPO_PATH") -GITFIELD_DIR="$REPO_PATH/.gitfield" -WELL_KNOWN_DIR="$REPO_PATH/.well-known" -DOCS_DIR="$REPO_PATH/docs" -DOCS_WELL_KNOWN_DIR="$DOCS_DIR/.well-known" -LOG_FILE="$GITFIELD_DIR/pushed.log" -GITFIELD_MD="$REPO_PATH/GITFIELD.md" -CANONICAL_META="$GITFIELD_DIR/canonical.meta" -CANONICAL_MD="$GITFIELD_DIR/canonical.md" -INDEX_JSON="$GITFIELD_DIR/index.json" -WELL_KNOWN_JSON="$WELL_KNOWN_DIR/gitfield.json" -GITFIELD_README="$GITFIELD_DIR/README.txt" -DOCS_CANONICAL_META="$DOCS_DIR/canonical.meta" -DOCS_CANONICAL_MD="$DOCS_DIR/canonical.md" -DOCS_INDEX_JSON="$DOCS_DIR/index.json" -DOCS_PUSHED_LOG="$DOCS_DIR/pushed.log" -DOCS_GITFIELD_README="$DOCS_DIR/gitfield.README.txt" -DOCS_GITFIELD_JSON="$DOCS_DIR/gitfield.json" -DOCS_WELL_KNOWN_JSON="$DOCS_WELL_KNOWN_DIR/gitfield.json" -DOCS_INDEX="$DOCS_DIR/index.html" -DOCS_CSS="$DOCS_DIR/style.css" -DOCS_REPOS_JSON="$DOCS_DIR/repos.json" -DOCS_README="$DOCS_DIR/README.md" -DOCS_NOJEKYLL="$DOCS_DIR/.nojekyll" -DOCS_ROBOTS="$DOCS_DIR/robots.txt" -DOCS_SITEMAP="$DOCS_DIR/sitemap.xml" -DOCS_INTEGRITY="$DOCS_DIR/integrity.sha256" -TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ') -SCRIPT_VERSION="1.4" # Updated for GPG integration -PRESERVE_META=${PRESERVE_META:-false} # Preserve existing metadata -FORCE_DOCS=${FORCE_DOCS:-false} # Force overwrite of /docs metadata - -# URLs for each platform -CANONICAL_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" -GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" -BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" -FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -CODEBERG_URL="https://codeberg.org/mrhavens/$REPO_NAME" -GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME" -RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" -RADICLE_URL="https://app.radicle.xyz/nodes/z3FEj7rF8gZw9eFksCuiN43qjzrex" -RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - -# Metadata configuration -MIRRORS=( - "$GITHUB_URL" - "$GITLAB_URL" - "$BITBUCKET_URL" - "$FORGEJO_URL" - "$CODEBERG_URL" - "$GITEA_URL" - "$RADICLE_RID" -) -COMMIT_HASH=$(git -C "$REPO_PATH" rev-parse --short HEAD 2>/dev/null || echo "unknown") -TREE_HASH=$(git -C "$REPO_PATH" rev-parse HEAD^{tree} 2>/dev/null || echo "unknown") -SYNC_CYCLES=0 - -# GPG configuration -GPG_KEYS=() -GPG_EMAILS=() -GPG_NAMES=() -while IFS= read -r line; do - if [[ "$line" =~ ^pub[[:space:]]+rsa[0-9]+[[:space:]]+([0-9]{4}-[0-9]{2}-[0-9]{2})[[:space:]]+\[SC\] ]]; then - key_id=$(gpg --list-keys --with-colons | grep -B1 "^pub" | grep "^pub" | awk -F: '{print $5}' | head -n1) - GPG_KEYS+=("$key_id") - elif [[ "$line" =~ ^uid[[:space:]]+\[ultimate\][[:space:]]+(.*)\<(.*)\> ]]; then - GPG_NAMES+=("${BASH_REMATCH[1]% }") - GPG_EMAILS+=("${BASH_REMATCH[2]}") - fi -done < <(gpg --list-keys) - -# ╭─────────────────────────────────────╮ -# │ LOGGING UTILS │ -# ╰─────────────────────────────────────╮ -info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; } -warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; } -error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } - -# ╭─────────────────────────────────────╮ -# │ SCRIPT LOOKUP FUNCTION │ -# ╰─────────────────────────────────────╮ -find_script() { - local script_name=$1 - local search_paths=( - "$HOME/.local/gitfieldbin" - "$HOME/.local/bin" - "$HOME/.local/gitfield" - "$HOME/.local/bin/gitfield" - "$HOME/.local/bin/gitfieldbin" - "$REPO_PATH/bin" - ) - - for path in "${search_paths[@]}"; do - if [ -f "$path/$script_name" ]; then - if [ -x "$path/$script_name" ]; then - if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then - info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)" - else - info "Using script: $path/$script_name" - fi - echo "$path/$script_name" - return 0 - else - warn "Found $path/$script_name but it is not executable" - fi - fi - done - error "Script $script_name not found in any search path" -} - -# ╭─────────────────────────────────────╮ -# │ GPG SIGNING FUNCTION │ -# ╰─────────────────────────────────────╮ -sign_file() { - local file=$1 - local sig_file="${file}.sig" - if [ ! -f "$file" ]; then - warn "File $file does not exist, skipping signing" - return - fi - for key_id in "${GPG_KEYS[@]}"; do - gpg --armor --detach-sign --default-key "$key_id" "$file" > "$sig_file.$key_id" 2>/dev/null || warn "Failed to sign $file with key $key_id, continuing..." - if [ -f "$sig_file.$key_id" ]; then - git -C "$REPO_PATH" add "$sig_file.$key_id" - git -C "$REPO_PATH" commit -m "Signed $file with GPG key $key_id at $TIMESTAMP" || warn "No changes to commit for $sig_file.$key_id" - info "Signed $file with key $key_id, signature at $sig_file.$key_id" - copy_to_docs "$sig_file.$key_id" "$DOCS_DIR/$(basename "$sig_file.$key_id")" - fi - done -} - -# ╭─────────────────────────────────────╮ -# │ METADATA COPY FUNCTION │ -# ╰─────────────────────────────────────╮ -copy_to_docs() { - local src=$1 - local dest=$2 - if [ ! -f "$src" ]; then - warn "Source file $src does not exist, skipping copy to $dest" - return - fi - if [ "$FORCE_DOCS" = "false" ] && [ -f "$dest" ]; then - info "Preserving existing $dest (--force-docs not enabled)" - return - fi - cp "$src" "$dest" || warn "Failed to copy $src to $dest, continuing..." - git -C "$REPO_PATH" add "$dest" - git -C "$REPO_PATH" commit -m "Copied $dest to docs at $TIMESTAMP" || warn "No changes to commit for $dest" - info "Copied $src to $dest and committed" -} - -# ╭─────────────────────────────────────╮ -# │ METADATA GENERATION │ -# ╰─────────────────────────────────────╮ -generate_canonical_meta() { - info "Generating $CANONICAL_META..." - if [ "$PRESERVE_META" = "true" ] && [ -f "$CANONICAL_META" ]; then - info "Preserving existing $CANONICAL_META (--preserve-meta enabled)" - return - fi - cat > "$CANONICAL_META" < "$CANONICAL_MD" < (Key ID: ${GPG_KEYS[i]})" -done) - -## Mirror Repositories - -The project is mirrored across multiple platforms to enhance redundancy and accessibility: - -$(for mirror in "${MIRRORS[@]}"; do - if [[ "$mirror" == rad:* ]]; then - echo "- **Radicle**: [$mirror]($RADICLE_URL) (Decentralized, censorship-resistant)" - else - echo "- [$mirror]($mirror)" - fi -done) - -## Philosophy of Recursive Sovereignty - -The GitField framework employs a recursive, multi-repository strategy to defend against censorship, deplatforming, and algorithmic manipulation. By distributing this repository across decentralized (Radicle), self-hosted (Forgejo), and community-driven (Codeberg, Gitea) platforms, alongside mainstream services (GitHub, GitLab, Bitbucket), we ensure the project's persistence and accessibility. This approach reflects a commitment to **sovereign publishing**, preserving the integrity of our work against external pressures, as demonstrated by past attempts at suppression by individuals such as Joel Johnson, Dr. Peter Gaied, and Andrew LeCody. - -## Push Log - -The latest push operations are logged in [\`pushed.log\`](./pushed.log) for transparency and auditability. - -## GitHub Pages - -A public-facing canonical declaration is available at [index.html](./index.html) for enhanced discoverability and SEO. - -_Auto-generated by \`gitfield-sync\` at $TIMESTAMP (v$SCRIPT_VERSION)._ -EOF - # Sanitize rad:rad: - sed -i 's/rad:rad:/rad:/g' "$CANONICAL_MD" - git -C "$REPO_PATH" add "$CANONICAL_MD" - git -C "$REPO_PATH" commit -m "Generated canonical.md at $TIMESTAMP" || warn "No changes to commit for $CANONICAL_MD" - info "Generated and committed $CANONICAL_MD" - copy_to_docs "$CANONICAL_MD" "$DOCS_CANONICAL_MD" -} - -generate_index_json() { - info "Generating $INDEX_JSON..." - if [ "$PRESERVE_META" = "true" ] && [ -f "$INDEX_JSON" ]; then - info "Preserving existing $INDEX_JSON (--preserve-meta enabled)" - return - fi - cat > "$INDEX_JSON" < "$WELL_KNOWN_JSON" < "$GITFIELD_README" < "$DOCS_INDEX" < - - - - - GitField Sovereign Canonical Repository: $REPO_NAME - - - - - - - - - - -
-

GitField Sovereign Canonical Repository: $REPO_NAME

-
-
-
-

Canonical Declaration

-

This repository, $REPO_NAME, is canonically hosted at:

-

$CANONICAL_URL

-

Maintained by Mark Randall Havens and Solaria Lumis Havens, this canonical source ensures sovereignty and resilience against deplatforming, censorship, and algorithmic manipulation.

-

Signed with the following GPG keys:

-
    -$(for i in "${!GPG_KEYS[@]}"; do - echo "
  • ${GPG_NAMES[i]} <${GPG_EMAILS[i]}> (Key ID: ${GPG_KEYS[i]})
  • " -done) -
-
-
-

Mirror Repositories

-

The project is mirrored across multiple platforms for redundancy and accessibility:

-
    -$(for mirror in "${MIRRORS[@]}"; do - if [[ "$mirror" == rad:* ]]; then - echo "
  • Radicle: $mirror (Decentralized, censorship-resistant)
  • " - else - echo "
  • $mirror
  • " - fi -done) -
-
-
-

Metadata Manifest

-

Metadata for this project is available in:

- -
-
-

Why Recursive Sovereignty Matters

-

The GitField framework distributes $REPO_NAME across decentralized (Radicle), self-hosted (Forgejo), and community-driven (Codeberg, Gitea) platforms, alongside mainstream services (GitHub, GitLab, Bitbucket). This recursive strategy defends against past deplatforming attempts by individuals such as Joel Johnson, Dr. Peter Gaied, and Andrew LeCody, ensuring the project's persistence and accessibility.

-
-
-

Source Links

-

Access the project's metadata and logs:

- -
-
-
-

Mark Randall Havens & Solaria Lumis Havens · The Fold Within · 2025

-
- - -EOF - # Sanitize rad:rad: - sed -i 's/rad:rad:/rad:/g' "$DOCS_INDEX" - git -C "$REPO_PATH" add "$DOCS_INDEX" - git -C "$REPO_PATH" commit -m "Generated docs/index.html at $TIMESTAMP" || warn "No changes to commit for $DOCS_INDEX" - info "Generated and committed $DOCS_INDEX" -} - -generate_docs_css() { - info "Generating $DOCS_CSS..." - mkdir -p "$DOCS_DIR" - if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_CSS" ]; then - info "Preserving existing $DOCS_CSS (--preserve-meta enabled)" - return - fi - cat > "$DOCS_CSS" < "$DOCS_REPOS_JSON" < "$DOCS_README" < "$DOCS_ROBOTS" < "$DOCS_SITEMAP" < - - - $CANONICAL_URL - $TIMESTAMP - weekly - 1.0 - - - $GITHUB_URL/docs/index.html - $TIMESTAMP - weekly - 0.9 - - - $GITHUB_URL/docs/canonical.meta - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/canonical.md - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/index.json - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/gitfield.json - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/.well-known/gitfield.json - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/repos.json - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/pushed.log - $TIMESTAMP - weekly - 0.8 - - - $GITHUB_URL/docs/gitfield.README.txt - $TIMESTAMP - weekly - 0.8 - -$(for mirror in "${MIRRORS[@]}"; do - if [[ "$mirror" != rad:* ]]; then - echo " " - echo " $mirror" - echo " $TIMESTAMP" - echo " weekly" - echo " 0.8" - echo " " - fi -done) - -EOF - git -C "$REPO_PATH" add "$DOCS_SITEMAP" - git -C "$REPO_PATH" commit -m "Generated docs/sitemap.xml at $TIMESTAMP" || warn "No changes to commit for $DOCS_SITEMAP" - info "Generated and committed $DOCS_SITEMAP" -} - -generate_docs_integrity() { - info "Generating $DOCS_INTEGRITY..." - mkdir -p "$DOCS_DIR" - if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_INTEGRITY" ]; then - info "Preserving existing $DOCS_INTEGRITY (--preserve-meta enabled)" - return - fi - cat > "$DOCS_INTEGRITY" <> "$DOCS_INTEGRITY" || warn "Failed to compute SHA-256 for $file, continuing..." - else - warn "File $file does not exist, skipping SHA-256 computation" - fi - done - git -C "$REPO_PATH" add "$DOCS_INTEGRITY" - git -C "$REPO_PATH" commit -m "Generated docs/integrity.sha256 at $TIMESTAMP" || warn "No changes to commit for $DOCS_INTEGRITY" - info "Generated and committed $DOCS_INTEGRITY" - sign_file "$DOCS_INTEGRITY" -} - -# ╭─────────────────────────────────────╮ -# │ INITIAL SETUP │ -# ╰─────────────────────────────────────╮ -mkdir -p "$GITFIELD_DIR" "$WELL_KNOWN_DIR" "$DOCS_DIR" "$DOCS_WELL_KNOWN_DIR" - -if [ ! -f "$LOG_FILE" ]; then - echo "# Push Log for $REPO_NAME" > "$LOG_FILE" - echo "# Generated by gitfield-sync" >> "$LOG_FILE" - echo "" >> "$LOG_FILE" - copy_to_docs "$LOG_FILE" "$DOCS_PUSHED_LOG" -fi - -# ╭─────────────────────────────────────╮ -# │ GENERATE GITFIELD.MD │ -# ╰─────────────────────────────────────╮ -generate_gitfield_md() { - info "Generating $GITFIELD_MD..." - cat > "$GITFIELD_MD" < (Key ID: ${GPG_KEYS[i]})" -done) -- **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project. -- **Push Order**: The repository is synchronized in the following order: **Radicle → Forgejo → Codeberg → Gitea → GitLab → Bitbucket → GitHub**. This prioritizes Radicle’s decentralized, censorship-resistant network as the primary anchor, followed by Forgejo’s sovereign, self-hosted infrastructure, Codeberg’s community-driven platform, Gitea’s lightweight efficiency, GitLab’s robust DevOps features, Bitbucket’s enterprise redundancy, and GitHub’s broad visibility, ensuring a resilient and accessible metadata chain. - ---- - -_Auto-generated by \`gitfield-sync\` at $TIMESTAMP (v$SCRIPT_VERSION)._ -EOF - # Sanitize rad:rad: - sed -i 's/rad:rad:/rad:/g' "$GITFIELD_MD" - git -C "$REPO_PATH" add "$GITFIELD_MD" - git -C "$REPO_PATH" commit -m "Generated GITFIELD.md at $TIMESTAMP" || warn "No changes to commit for $GITFIELD_MD" - info "Generated and committed $GITFIELD_MD" -} - -# ╭─────────────────────────────────────╮ -# │ LOG URL FUNCTION │ -# ╰─────────────────────────────────────╮ -log_url() { - local platform=$1 - local url=$2 - local rid=$3 - local peer_id=$4 - local timestamp=$(date -u '+%Y-%m-%dT%H:%M:%SZ') - local branch=$(git -C "$REPO_PATH" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown") - local diff_summary=$(git -C "$REPO_PATH" diff --stat HEAD^ HEAD 2>/dev/null || echo "No diff available") - if [ "$platform" = "Radicle" ]; then - echo "[$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" - echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" - else - echo "[$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" - fi - copy_to_docs "$LOG_FILE" "$DOCS_PUSHED_LOG" -} - -# ╭─────────────────────────────────────╮ -# │ EXECUTE PUSH SCRIPT │ -# ╰─────────────────────────────────────╮ -execute_push() { - local script_name=$1 - local platform=$2 - local url=$3 - local rid=$4 - local peer_id=$5 - local script_path - script_path=$(find_script "$script_name") || error "Failed to find $script_name" - info "Executing $platform push with script: $script_path" - if [ -x "$script_path" ]; then - pushd "$REPO_PATH" >/dev/null - "$script_path" || warn "Execution of $script_path failed, continuing..." - log_url "$platform" "$url" "$rid" "$peer_id" - git add . || warn "Nothing to add after $script_path" - git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path" - popd >/dev/null - else - error "Script $script_path is not executable" - fi -} - -# ╭─────────────────────────────────────╮ -# │ RECURSIVE PUSH LOOP │ -# ╰─────────────────────────────────────╮ -run_push_cycle() { - local cycle_number=$1 - info "Starting push cycle $cycle_number..." - SYNC_CYCLES=$cycle_number - - execute_push "gitfield-local" "Local" "" "" "" - execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" - execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" - execute_push "gitfield-codeberg" "Codeberg" "$CODEBERG_URL" "" "" - execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" - - # Regenerate metadata after each cycle to update sync_cycles - generate_canonical_meta - generate_canonical_md - generate_index_json - generate_well_known_json - generate_gitfield_readme - generate_docs_index - generate_docs_css - generate_docs_repos_json - generate_docs_readme - generate_docs_nojekyll - generate_docs_robots - generate_docs_sitemap - generate_docs_integrity -} - -# ╭─────────────────────────────────────╮ -# │ MAIN EXECUTION │ -# ╰─────────────────────────────────────╮ -info "Starting gitfield-sync for $REPO_NAME..." - -# Parse flags -while [ $# -gt 0 ]; do - case "$1" in - --preserve-meta) - PRESERVE_META=true - info "Preserve metadata flag enabled" - shift - ;; - --force-docs) - FORCE_DOCS=true - info "Force docs overwrite flag enabled" - shift - ;; - *) - warn "Unknown argument: $1" - shift - ;; - esac -done - -if [ ! -d "$REPO_PATH/.git" ]; then - pushd "$REPO_PATH" >/dev/null - git init - git add . - git commit -m "Initial commit" || warn "Nothing to commit" - popd >/dev/null -fi - -# Generate initial metadata -generate_canonical_meta -generate_canonical_md -generate_index_json -generate_well_known_json -generate_gitfield_readme -generate_docs_index -generate_docs_css -generate_docs_repos_json -generate_docs_readme -generate_docs_nojekyll -generate_docs_robots -generate_docs_sitemap -generate_docs_integrity - -# Run push cycles -run_push_cycle 1 -generate_gitfield_md -run_push_cycle 2 -run_push_cycle 3 - -info "✅ gitfield-sync completed successfully." -info "✅ Canonical sync exported to /docs successfully." -info "🔗 View logs: $DOCS_PUSHED_LOG" -info "🔗 View multi-repo manifest: $GITFIELD_MD" -info "🔗 View canonical metadata: $DOCS_CANONICAL_META" -info "🔗 View canonical declaration: $DOCS_CANONICAL_MD" -info "🔗 View index manifest: $DOCS_INDEX_JSON" -info "🔗 View SEO metadata: $DOCS_GITFIELD_JSON" -info "🔗 View GitHub Pages: $DOCS_INDEX" -info "🔗 View integrity hashes: $DOCS_INTEGRITY"