diff --git a/.gitfield/canonical.meta.asc b/.gitfield/canonical.meta.asc index 9b7e731..2e065f1 100644 --- a/.gitfield/canonical.meta.asc +++ b/.gitfield/canonical.meta.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHav8ACgkQTifTfDWI -cr/onQ//SErngjxex16eFaIv3YAkAA0q5rOE/KdCYyaFbONn5aeQA+UEJgzkQUMz -LLCSjC6snHbmL++qPvOPzBbp8zZ3aktIgZAaOXYC2MUuz7l1O1apfG6pZTVh6x4R -TenLORc7PzqZ65wkIfLdmAJagjVsPHMCGW7SMyfAr+q401TJCNPs3w7Gi4oyvrgZ -V1Kw7dUznrpRzB/KaHzZK998pAOe2P1KaF0J4LdmBYOnBBRvDqAuA/wegS9gpzpq -uJGkxkeENdFyIOpwRrXh+4dbjdcW5YrNosZveJWWL7WJwL/yEfWWaLuI6cGr4wWu -S3g/BJYBj0bLNwoLPG7oCj5DQslW8CS6BseYO4LLnpXsHgJywLaTu6/XxDoylSMt -WhmMq3PH7u6KImbHbgMuY7Y5AdwUe0St3PM8kd4lciRJXSy6exvPGO3+/dlmYrB8 -7c4a2jVhmQXW0vQUj+WkR+mqYFAvPJIMYn+jOQyUhdZi9SbCKffgreNFfoI62fNo -w692YF1hE8Kyn0dPClRi+yL+40vbFNwkD7OqoKJYf+gYxuWkrq4q9X/lLcZTeHQe -TxKuNsdz018ZagbYUOXTCH+QtIqOHW5VDCcRY2GExhZiY8YcVuFTZGJaiGdDhPDi -QSvAY6XYR50MAgyHHtwaSsl04iO+9h5y6iqB9Xr4Tm9zZahxMXw= -=vJNA +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHb/0ACgkQTifTfDWI +cr/okhAAnYR+0jB6mIyszpckoQfcRGuMar4BfxjvFbUBzYu/pG/72AnaFZbj5ntT +j/LdYE8MAnMGr74Ky9GFk3X6E9EgNP8jTzz5RdWIUG54KfYr/uszZNXs3tC6fGSS +s+ZSYDkDTKb4YUqFgTzrN0Nyzr0OT8ADKWxgTWLd8yrU50bBDiiu5IVrQ6uGZZ/u +IdjcaZbwHXbYEaKDCkTwbS2tmR9esn+ilBx6Xsh6z+A4tDv++0YKHJ3Lm5NwhiwD +HxBncP/E4rZpmI23BhMFrGOGgCyxbsf9pdZ7Mk7QvWGa1/BMx76PVyUINf/Mh186 +ZGmaF9wZrDnJyC6djcDkG7JX9VAEBH5/1E8kXwWlW8mQzzyG59zM86/HLTnJkpln +nD1VebwxJ+hz4uh/gcHMzFuQA7JbwNC522OJkG84+XGcyUyR6BdYYGOobtBGsxvd +CUmq5RXgkmNTX1TiEcqgyVnz7Bcpv40H3t0rDTSJ+1iuIVDzO4Wso0lEoA+i2OXI +xbxmu0RYEY2EN09+S2C1/CY3jN0N+PgRGTV5MOm9xGL61JsZD7byPz4/ABg5FFxW +J4yNpQa86jIqGq1IEBt8hTf+pZXCl36xhRMEilbgazsQ4kYFLuG/sBol4yC9BSjl +MiQ928dtmIIe42pGMkd4YFFsdeF8B6XFZMg5aW54b3HSfF82A44= +=GjBh -----END PGP SIGNATURE----- diff --git a/.gitfield/index.json.asc b/.gitfield/index.json.asc index c026df8..d7080d2 100644 --- a/.gitfield/index.json.asc +++ b/.gitfield/index.json.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHauIACgkQTifTfDWI -cr/KQw/9HkOl1IRURvjmi1tiEuguuEXIvj5BNVBmIRAYE5FmsOr+495FK2fL7ArT -/4Gcpako1VTwmYEzF+JdJqqb9kVAbnzkOdXsV6Mb7eaGpRsleU+xSQpDyAP/K8yC -VDB47UXxeDB/aiEfcLiNcWdqVLBdin8YMlbep1UQk/zjTuTAc18JtYnSqZgwcYef -7ya6KYhar9EaV7mou9e6o71nwaxb+CMMsXONp2yMigyO4+a9fKWHEvFxNlyUKs5Q -7I3rQO7ZwqJ0JkgT6QxcVYBl+vp/OfqubWL8CbpH6COTfLM5+120mb3eALabMgDc -rC7tLhcZTGmH5mD4qteZTA8hWIExJGPB9vfTdFWvr+gZTh7E3Xg9hDB2M2PFqa98 -RFeSv5EZR/WWER26FdfBIYw9VGn8j9V9AVYIOYHXsmTjqfltQRk0348tt9nebhh0 -nFDg8Kgem6BUQhF+GCp0BBn1AJFfDVBROCLkYmK26uJ0uSURl2Xu4uZUMLutSOig -9vGPFYhkstJlPYcq7BM95SoptFeVYadAIX2tMOui/IuxM6ZEYCYcrHEBd2s+YxQp -YD6/cGrhDGjq6pTHgofLsvLqmDY+z4L5v1nr4eLxzKxJFeEry+EAzNYD/BupgE7F -LG7vjaHmxNKOWGxz92kU01v9wBR/MRstwXZQvTcrx7Ip2U7r3dc= -=x5Er +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAAACgkQTifTfDWI +cr8ZwQ/+KJoD/nCxWWeaxLpTJTU7O7HtnvtCSXzbRYAIFxqfbkiR663KiroIeLL5 +AWMOFSQbgVZsIHsNA+HnEdZ3gxF0s2gj7Fd0BQrERuP4/ZG6yQ394khDwpPx3lUB +lSgoGzG86SMD04OuXOvZjLAnZKZ1ECrEHdRHiGkx4KMPC2Z7EP16WbxWCGDuhj1G +3HINr9xoMau68Zs7wTQdMkpvwEcn+Y7romGOXxRFJsuNJ2w+0q4Jvp9f/OWXIKF4 +FWmV0G79moQaz08NnMVCKzd6Ful7VtTN8SxiWex9aIjVjfB0ukWgLfilycA67RN8 +5mMh7cxV/mPgqluJuwL800f7Js3uuaq51NHx0kj6UscRUcjZpzJAUi3dqBIa3MKV +H+JP+7AnPplQ5bREsYtZzRbeLQTVCsUorKfARQ9o97NX/gupvFuo2yYUuiBQ90vr +j5DCPnuBpqElfdb02Wz3WP/NPk+jxwsuSX+1uN+09B1ibM5By1SkhubGQANF0Ajm +RjfYozo7/U4Iq/a/Vor/mvG0v3Ips7fhorkVj8FeH02lx330jg29hJ8K92/0WbtJ +hRLNryQszV00Ut7FcIdqIMHyIRI9GwbY+dvxjGi5kYwW2XT86cpX7Pqbkd5Pq7E6 +LFxp1JTHuBi4CvO+f8PMIyarX2PfRBJPnJHvP1oxDhWUsof8MCQ= +=FEte -----END PGP SIGNATURE----- diff --git a/.gitfield/push_log.json b/.gitfield/push_log.json index b0a0d1c..0ec9b0d 100644 --- a/.gitfield/push_log.json +++ b/.gitfield/push_log.json @@ -260,6 +260,12 @@ "branch": "master", "commit": "8e3f520dbdda6686cc24f79b9d44a5e041797444", "message": "Generated index.json at 2025-06-09T22:35:36Z" + }, + { + "timestamp": "2025-06-09 18:36:43", + "branch": "master", + "commit": "a77e52ebd9eed01da90bdc7fc97c963405570d9e", + "message": "Generated docs/integrity.sha256 at 2025-06-09T23:36:20Z" } ] } diff --git a/.gitfield/pushed.log b/.gitfield/pushed.log index 843e5a7..073586c 100644 --- a/.gitfield/pushed.log +++ b/.gitfield/pushed.log @@ -499,3 +499,7 @@ Diff Summary: .gitfield/github.sigil.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) +[2025-06-09T23:36:44Z] Local: , Branch=master, Commit=689a81f + Diff Summary: + .gitfield/local.sigil.md | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.well-known/gitfield.json.asc b/.well-known/gitfield.json.asc index 572efd9..2631428 100644 --- a/.well-known/gitfield.json.asc +++ b/.well-known/gitfield.json.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHauYACgkQTifTfDWI -cr/q3g//T4n9i9W2BLzMoHhiRVcYXXEv2voUmOu7mxc/b+BrbjqtteCkqYAO8U78 -CKER/YB+ZJ7Mt4rgYZG3+oJ6rgVCrTUFc7SX8e54NzUx054tsX5r8oEKgD673ENe -BguXxC8a2MpNHo+Rl21PXqg96RoPwOKntKhDVnz8SUouSz7Dq9eeTuKT/aJWowQm -FvFtcaqpIlKXdNoPp1nesca7d7pBYi/ODIxy0XAUnRsUTBkUBRDyhUtUbG31BqIe -PfLLW6U/0oDuW7+65D910Ipe78JVOpYWfg5sSDOVYe/Cg8pzMKkd28NQKdLZGNhm -biGNFGLNvk+cKhfyuMiV8lasDdKgaYYuxgL0VeKsFkJ+k5UOyaPrpfLrtbQ+A0Zc -8wp8l6jcpFX28RFx0u3abnC5RneYUopXfSDo+NcS4nYwLQ0RCOIe6ldOlVg8JbV+ -oL8xN92ebOfsRr0x0RR0dRZV8OttSameEkkvQgW6o6eTFRBfIqByk+PsIIxpwalY -TM76+5+9f7yNgaFYENKspQBSUzIX9qey40F+qgOJ6iZDah6mxc7KmVpkemkIiY4D -jU/RIlZs7j9ZuY7RziKNydqxc6JmxcH3/ce62EMKza1bDkDRjW4Pe9cXA64ffPDX -bzW9IFDMepBAJoVD97eR9c8SI4hqxfCq+w+MX/5S97Hv51p/7yA= -=dz8e +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAMACgkQTifTfDWI +cr9SDxAAquF8OI28W9ejajYUTbRRPfx8HhXoBEYba+YdlZjdc/pxDs42bBjEq7Vc +zOBax02YVeS6GXqN4GrHYqmHEaOW8bC+4W8UrBO4eTV6LosnliyUiSwDY1td0dTJ +1HAfg7tRYs3Lnxo6HjlVXMngR5VHKhLhBsMNBKoxdVObqedtDYIHApmg9vgxziOQ +IVfEgOrpfkVQq2fxO2OKaHHrDgrMmr/nHjNjybczLoX035qbIYGpNRnD3kHuOVTz +ziR7opP1X8fiy20tA88MK4l9DB5oulGvGIvSh1+6WVmowIe1+oQgJqYRqGJD/s4T +rbegKA1y9+IzaaESUKlIrgiQnBghBD0C4zv6tfri/HF4ZUAP0vEMfQYAoxhVbkAw +kW1kLbdlaaWq8WOso/LARDDtFRndnmZ5A4L/lfViDrM93/yxbNJ6NxNINj9rC4Aa +ExyzKl272ov4kquk2UiXas0h6sIudbArwj4zkD+Wif6lDr0bn0/N2+yn4ZVIlxPa +1xb1mCRGeLylCdYzMf6qpxT6AnKJwSY6cW2jVrF2iPvx/WSOUlOwOmmkNoX4JBDY +2DUEN78nHJ2tILOG1Jy5KXs5jGiFWavx1Eaj87w90czNo+k9UcDbUoF+YoiZBpeA +L5reachrocild2vcNoETVXK4ljDWt1jcnMXWW5hapnag7DbbJ9E= +=Hnbv -----END PGP SIGNATURE----- diff --git a/bin/gitfield-sync b/bin/gitfield-sync index 595e844..a05a762 100755 --- a/bin/gitfield-sync +++ b/bin/gitfield-sync @@ -33,17 +33,10 @@ DOCS_NOJEKYLL="$DOCS_DIR/.nojekyll" DOCS_ROBOTS="$DOCS_DIR/robots.txt" DOCS_SITEMAP="$DOCS_DIR/sitemap.xml" DOCS_INTEGRITY="$DOCS_DIR/integrity.sha256" -GITLAB_CI="$REPO_PATH/.gitlab-ci.yml" -CODEBERG_CI="$REPO_PATH/.codeberg-ci.yml" TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ') -SCRIPT_VERSION="1.5" # Updated for CI/CD and GPG enhancements +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 -SKIP_CI=${SKIP_CI:-false} # Skip CI/CD file generation -GPG_FORCE=${GPG_FORCE:-true} # Force GPG overwrites -CI_STATUS=${CI_STATUS:-mock} # Mock or live CI status -CI_STATUS_GITLAB="unknown" -CI_STATUS_CODEBERG="unknown" # URLs for each platform CANONICAL_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" @@ -135,7 +128,7 @@ sign_file() { return fi for key_id in "${GPG_KEYS[@]}"; do - gpg --armor --detach-sign --default-key "$key_id" --yes --batch "$file" > "$sig_file.$key_id" 2>/dev/null || warn "Failed to sign $file with key $key_id, continuing..." + gpg --armor --detach-sign --yes --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" @@ -165,81 +158,6 @@ copy_to_docs() { info "Copied $src to $dest and committed" } -# ╭─────────────────────────────────────╮ -# │ CI/CD GENERATION │ -# ╰─────────────────────────────────────╮ -generate_gitlab_ci() { - if [ "$SKIP_CI" = "true" ]; then - info "Skipping .gitlab-ci.yml generation (--skip-ci enabled)" - return - fi - info "Generating $GITLAB_CI..." - if [ "$PRESERVE_META" = "true" ] && [ -f "$GITLAB_CI" ]; then - info "Preserving existing $GITLAB_CI (--preserve-meta enabled)" - return - fi - cat > "$GITLAB_CI" < "$CODEBERG_CI" < (Key ID: ${GPG_KEYS[i]})" done) -## CI/CD Status - -- **GitLab Pages**: $CI_STATUS_GITLAB -- **Codeberg Pages**: $CI_STATUS_CODEBERG - ## Mirror Repositories The project is mirrored across multiple platforms to enhance redundancy and accessibility: @@ -376,11 +285,7 @@ $(printf ' "%s",\n' "${MIRRORS[@]}" | sed '$ s/,$//') $(for i in "${!GPG_KEYS[@]}"; do echo " {\"key_id\": \"${GPG_KEYS[i]}\", \"name\": \"${GPG_NAMES[i]}\", \"email\": \"${GPG_EMAILS[i]}\"}" | sed '$ s/,$//' done) - ], - "ci_status": { - "gitlab": "$CI_STATUS_GITLAB", - "codeberg": "$CI_STATUS_CODEBERG" - } + ] } EOF # Sanitize rad:rad: @@ -419,11 +324,7 @@ $(printf ' "%s",\n' "${MIRRORS[@]}" | sed '$ s/,$//') $(for i in "${!GPG_KEYS[@]}"; do echo " {\"key_id\": \"${GPG_KEYS[i]}\", \"name\": \"${GPG_NAMES[i]}\", \"email\": \"${GPG_EMAILS[i]}\"}" | sed '$ s/,$//' done) - ], - "ci_status": { - "gitlab": "$CI_STATUS_GITLAB", - "codeberg": "$CI_STATUS_CODEBERG" - } + ] } EOF # Sanitize rad:rad: @@ -516,11 +417,7 @@ $(printf ' "%s",\n' "${MIRRORS[@]}" | sed '$ s/,$//') $(for i in "${!GPG_KEYS[@]}"; do echo " {\"key_id\": \"${GPG_KEYS[i]}\", \"name\": \"${GPG_NAMES[i]}\", \"email\": \"${GPG_EMAILS[i]}\"}" | sed '$ s/,$//' done) - ], - "ci_status": { - "gitlab": "$CI_STATUS_GITLAB", - "codeberg": "$CI_STATUS_CODEBERG" - } + ] } @@ -538,14 +435,9 @@ done)

Signed with the following GPG keys:

-

CI/CD Status:

-

Mirror Repositories

@@ -574,15 +466,15 @@ done)

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. LeCody, and Andrew LeCody, ensuring the project's persistence and accessibility.

+

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:

@@ -602,7 +494,7 @@ EOF generate_docs_css() { info "Generating $DOCS_CSS..." mkdir -p "$DOCS_DIR" - if [ -f "$DOCS_CSS" ] && [ "$PRESERVE_META" = "true" ]; then + if [ "$PRESERVE_META" = "true" ] && [ -f "$DOCS_CSS" ]; then info "Preserving existing $DOCS_CSS (--preserve-meta enabled)" return fi @@ -681,19 +573,15 @@ $(printf ' "%s",\n' "${MIRRORS[@]}" | sed '$ s/,$//') $(for i in "${!GPG_KEYS[@]}"; do echo " {\"key_id\": \"${GPG_KEYS[i]}\", \"name\": \"${GPG_NAMES[i]}\", \"email\": \"${GPG_EMAILS[i]}\"}" | sed '$ s/,$//' done) - ], - "ci_status": { - "gitlab": "$CI_STATUS_GITLAB", - "codeberg": "$CI_STATUS_CODEBERG" - } + ] } EOF # Sanitize rad:rad: sed -i 's/rad:rad:/rad:/g' "$DOCS_REPOS_JSON" git -C "$REPO_PATH" add "$DOCS_REPOS_JSON" git -C "$REPO_PATH" commit -m "Generated docs/repos.json at $TIMESTAMP" || warn "No changes to commit for $DOCS_REPOS_JSON" - sign_file "$DOCS_REPOS_JSON" info "Generated and committed $DOCS_REPOS_JSON" + sign_file "$DOCS_REPOS_JSON" } generate_docs_readme() { @@ -706,7 +594,7 @@ generate_docs_readme() { cat > "$DOCS_README" <weekly 0.9 - - $GITLAB_URL/-/jobs/artifacts/main/raw/public/index.html?job=pages - $TIMESTAMP - weekly - 0.9 - - - https://mrhavens.codeberg.page/$REPO_NAME/index.html - $TIMESTAMP - weekly - 0.9 - $GITHUB_URL/docs/canonical.meta $TIMESTAMP @@ -833,8 +704,7 @@ generate_docs_sitemap() { 0.8 - $GITHUB_URL/docs/.well-known/repo.$REPO_NAME.json - + $GITHUB_URL/docs/.well-known/gitfield.json $TIMESTAMP weekly 0.8 @@ -852,7 +722,7 @@ generate_docs_sitemap() { 0.8 - $GITHUB_URL/docs/gitfieldtown.README.txt + $GITHUB_URL/docs/gitfield.README.txt $TIMESTAMP weekly 0.8 @@ -860,7 +730,7 @@ generate_docs_sitemap() { $(for mirror in "${MIRRORS[@]}"; do if [[ "$mirror" != rad:* ]]; then echo " " - echo " $mirror" + echo " $mirror" echo " $TIMESTAMP" echo " weekly" echo " 0.8" @@ -886,7 +756,7 @@ generate_docs_integrity() { # Generated by gitfield-sync at $TIMESTAMP (v$SCRIPT_VERSION) EOF - for file in "$DOCS_CANNONICAL_META" "$DOCS_CANNICAL_MD" "$DOCS_INDEX_JSON" "$DOCS_GITFIELD_JSON" "$DOCS_WELL_KNOWN_JSON" "$DOCS_REPOS_JSON" "$DOCS_PUSHED_LOG" "$DOCS_GITFIELD_README"; do + for file in "$DOCS_CANONICAL_META" "$DOCS_CANONICAL_MD" "$DOCS_INDEX_JSON" "$DOCS_GITFIELD_JSON" "$DOCS_WELL_KNOWN_JSON" "$DOCS_REPOS_JSON" "$DOCS_PUSHED_LOG" "$DOCS_GITFIELD_README"; do if [ -f "$file" ]; then sha256sum "$file" >> "$DOCS_INTEGRITY" || warn "Failed to compute SHA-256 for $file, continuing..." else @@ -895,54 +765,21 @@ EOF 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" - sign_file "$DOCS_INTEGRITY" info "Generated and committed $DOCS_INTEGRITY" + sign_file "$DOCS_INTEGRITY" } # ╭─────────────────────────────────────╮ -# │ TRIGGER CI PIPELINE │ +# │ INITIAL SETUP │ # ╰─────────────────────────────────────╮ -trigger_ci_pipeline() { - local platform=$1 - local url=$2 - local token_var=$3 - local project_id=$4 - local timestamp=$(date -u '+%Y-%m-%dT%H:%M:%SZ') +mkdir -p "$GITFIELD_DIR" "$WELL_KNOWN_DIR" "$DOCS_DIR" "$DOCS_WELL_KNOWN_DIR" - if [ "$CI_STATUS" = "mock" ]; then - info "CI status set to mock, skipping $platform pipeline trigger" - echo "[$timestamp] $platform: Pipeline trigger skipped (mock mode)" >> "$LOG_FILE" - copy_to_docs "$LOG_FILE" "$DOCS_PUSHED_LOG" - return - fi - - if [ -z "${!token_var}" ]; then - warn "$platform API token ($token_var) not set, skipping pipeline trigger" - echo "[$timestamp] $platform: Pipeline trigger skipped (no API token)" >> "$LOG_FILE" - copy_to_docs "$LOG_FILE" "$DOCS_PUSHED_LOG" - return - fi - - local response - if [ "$platform" = "GitLab" ]; then - response=$(curl -s -X POST \ - -H "PRIVATE-TOKEN: ${!token_var}" \ - "$url/api/v4/projects/$project_id/pipeline?ref=main" | jq '.status' 2>/dev/null) - elif [ "$platform" = "Codeberg" ]; then - response=$(curl -s -X POST \ - -H "Authorization: Bearer ${!token_var}" \ - "$url/api/v1/repos/mrhavens/$REPO_NAME/actions/runs" | jq '.status' 2>/dev/null) - fi - - if [ -n "$response" ]; then - echo "[$timestamp] $platform: Pipeline triggered, status: $response" >> "$LOG_FILE" - info "$platform pipeline triggered, status: $response" - else - echo "[$timestamp] $platform: Pipeline trigger failed" >> "$LOG_FILE" - warn "$platform pipeline trigger failed" - fi +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 │ @@ -991,7 +828,6 @@ The following platforms host the \`$REPO_NAME\` repository, each chosen for its ### 3. Codeberg - **URL**: [$CODEBERG_URL]($CODEBERG_URL) -- **CI/CD Status**: $CI_STATUS_CODEBERG - **Purpose**: Codeberg is a community-driven, open-source platform powered by Forgejo, offering a reliable and ethical alternative for hosting git repositories. - **Value**: Enhances project resilience with its open-source ethos and independent infrastructure, ensuring accessibility and community support. @@ -1002,7 +838,6 @@ The following platforms host the \`$REPO_NAME\` repository, each chosen for its ### 5. GitLab - **URL**: [$GITLAB_URL]($GITLAB_URL) -- **CI/CD Status**: $CI_STATUS_GITLAB - **Purpose**: GitLab offers a comprehensive DevOps platform with advanced CI/CD capabilities, private repository options, and robust access controls. It serves as a reliable backup and a platform for advanced automation workflows. - **Value**: Enhances project resilience with its integrated CI/CD pipelines and independent infrastructure, reducing reliance on a single provider. @@ -1027,7 +862,7 @@ The decision to maintain multiple repositories stems from the need to safeguard - **Diversity**: Each platform’s unique features (e.g., GitHub’s community, GitLab’s CI/CD, Bitbucket’s integrations, Radicle’s decentralization, Forgejo’s self-hosting, Codeberg’s community-driven model, Gitea’s lightweight efficiency) enhance the project’s functionality and reach. - **Transparency**: Metadata snapshots in the \`.gitfield\` directory (for internal audit) and public-facing documentation in the \`/docs\` directory provide a verifiable record of the project’s state across all platforms. -This multi-repository approach, bolstered by Forgejo’s sovereign hosting, GitHub Pages, GitLab Pages, and Codeberg Pages’ discoverability, reflects a commitment to preserving the integrity, accessibility, and independence of \`$REPO_NAME\`, ensuring it remains available to contributors and users regardless of external pressures. +This multi-repository approach, bolstered by Forgejo’s sovereign hosting and GitHub Pages’ discoverability, reflects a commitment to preserving the integrity, accessibility, and independence of \`$REPO_NAME\`, ensuring it remains available to contributors and users regardless of external pressures. --- @@ -1038,17 +873,11 @@ This multi-repository approach, bolstered by Forgejo’s sovereign hosting, GitH - **SEO Metadata**: SEO-friendly metadata with Schema.org JSON-LD is available in [\`docs/gitfield.json\`](./docs/gitfield.json) and [\`docs/.well-known/gitfield.json\`](./docs/.well-known/gitfield.json). - **Push Log**: The [\`docs/pushed.log\`](./docs/pushed.log) file records the date, time, commit hash, and RID/URL of every push operation across all platforms, providing a transparent audit trail. - **GitField Directory**: The \`.gitfield\` directory contains internal metadata and platform-specific sigils (e.g., \`github.sigil.md\`). See [\`docs/gitfield.README.txt\`](./docs/gitfield.README.txt) for details. -- **Pages Deployments**: Public-facing declarations are available at: - - GitHub Pages: [$GITHUB_URL/docs/index.html]($GITHUB_URL/docs/index.html) - - GitLab Pages: [$GITLAB_URL/-/jobs/artifacts/main/raw/public/index.html?job=pages]($GITLAB_URL/-/jobs/artifacts/main/raw/public/index.html?job=pages) - - Codeberg Pages: [https://mrhavens.codeberg.page/$REPO_NAME/index.html](https://mrhavens.codeberg.page/$REPO_NAME/index.html) +- **GitHub Pages**: A public-facing, SEO-optimized canonical declaration is available in [\`docs/index.html\`](./docs/index.html), with a sitemap in [\`docs/sitemap.xml\`](./docs/sitemap.xml) and integrity hashes in [\`docs/integrity.sha256\`](./docs/integrity.sha256). - **GPG Signatures**: Metadata files are 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) -- **CI/CD Status**: - - GitLab: $CI_STATUS_GITLAB - - Codeberg: $CI_STATUS_CODEBERG - **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. @@ -1103,8 +932,6 @@ execute_push() { local url=$3 local rid=$4 local peer_id=$5 - local token_var=$6 - local project_id=$7 local script_path script_path=$(find_script "$script_name") || error "Failed to find $script_name" info "Executing $platform push with script: $script_path" @@ -1114,9 +941,6 @@ execute_push() { 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" - if [ "$platform" = "GitLab" ] || [ "$platform" = "Codeberg" ]; then - trigger_ci_pipeline "$platform" "$url" "$token_var" "$project_id" - fi popd >/dev/null else error "Script $script_path is not executable" @@ -1131,14 +955,14 @@ run_push_cycle() { 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" "" "" "CODEBERG_TOKEN" "mrhavens/$REPO_NAME" - execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" "" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" "GITLAB_TOKEN" "mrhavens/$REPO_NAME" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" "" "" + 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 @@ -1154,13 +978,11 @@ run_push_cycle() { generate_docs_robots generate_docs_sitemap generate_docs_integrity - generate_gitlab_ci - generate_codeberg_ci } # ╭─────────────────────────────────────╮ # │ MAIN EXECUTION │ -# ╰─────────────────────────────────────╯ +# ╰─────────────────────────────────────╮ info "Starting gitfield-sync for $REPO_NAME..." # Parse flags @@ -1176,24 +998,6 @@ while [ $# -gt 0 ]; do info "Force docs overwrite flag enabled" shift ;; - --skip-ci) - SKIP_CI=true - info "Skip CI generation flag enabled" - shift - ;; - --gpg-force) - GPG_FORCE=true - info "GPG force overwrite flag enabled" - shift - ;; - --ci-status=*) - CI_STATUS="${1#*=}" - if [[ ! "$CI_STATUS" =~ ^(mock|live)$ ]]; then - error "Invalid --ci-status value: $CI_STATUS, must be 'mock' or 'live'" - fi - info "CI status set to $CI_STATUS" - shift - ;; *) warn "Unknown argument: $1" shift @@ -1204,8 +1008,8 @@ done if [ ! -d "$REPO_PATH/.git" ]; then pushd "$REPO_PATH" >/dev/null git init - git add . || warn "Nothing to commit" - git commit -m "Initial commit" || warn "No changes to commit" + git add . + git commit -m "Initial commit" || warn "Nothing to commit" popd >/dev/null fi @@ -1223,8 +1027,6 @@ generate_docs_nojekyll generate_docs_robots generate_docs_sitemap generate_docs_integrity -generate_gitlab_ci -generate_codeberg_ci # Run push cycles run_push_cycle 1 diff --git a/docs/.well-known/gitfield.json.asc b/docs/.well-known/gitfield.json.asc index f273e43..e1e3c46 100644 --- a/docs/.well-known/gitfield.json.asc +++ b/docs/.well-known/gitfield.json.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHaukACgkQTifTfDWI -cr98fA//ZukcmW8omAfCjgchDfBEGGYnGKP21rnPSHmxYbht+2dvGULxbtvqJW3W -bjlB5yh102CnwkHiFj5LdpLAqrif3ZKzPtHg7jjREWZqL1dItk5OXPJuzfw5ETPL -KawoF74sdXHrrdP0iMWfCRAg+WreDZB091D5Arg80QlKYLp/otdrgDTi0UgGFL0F -0tjc6l/B4oI9dTlV1Ts8X3WZerzQx8E6kRkWUz279lFTIsgsau+fnGChMT5HKLwt -0UJ+ISSQw5QL8MthPMYywz3NPm/bQ9ywxHQ2MtZjI8tgwAjPyH5Qav6/oHgHNUtb -DSn9C/FzS26ZIOVPU97ktVcfgA/8nwLQ4eUh5JfdQKxRoV2bRG9nDsiDRbFg80Xl -TYx5kNYBIM18wrWKeob2mP4LFGQintiScuEfKxmosgOTC34rm7U9p8dK2A23sesG -zJ4u44nxCuaLeatQr7soDUj5neVISO1WSl/nk3bwZhyC2PKXCei3/SXgX2JQzjnp -ew+OlRD3qybx9EmXSX7Zh8/YoPyZq9UavFLg7d6Jpi6QMpXmmnDagQ0cbRuxQk9k -lCkHGAI8n2ETFwWHyC2YAzoglQ/zsOQWwCwIJSgt5MSybh31FixzO1zxPZB+6D91 -9XY2oFUd9PJs7e0+WGogewXRk1Y6g4kDOiLwC8ChsYNwWkGFTy8= -=Kowh +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAcACgkQTifTfDWI +cr+a9Q//Q9NsAFFEgL+5Qy/kFWQQSO/lz6jBeEbo9pfjccHNF7gLyZXzZniFJU9D +aRTz/92kaGf05QxT5FGlvsL9FTDTM+UibbYysni9nFSuTOXlYpBl8CrDvKPBpn1n +W+4e1yUabFighiVvdXPQa/TNyQshjpaE82KvtJ8UjjB8bivrSSHRxVgCZCDhbilm +FBJ6N6dY3zVPIoGn9PoJpF0RFMc8cCjhYrjy1CJ7uO3ACz1de2XhM+tYWNYwHVVa +Hg2C/gW7DHkC8669Py/BGMcZ1uFx4W9DJqcymXAQehuW6NUUPWkCM33pOm+8kIFl +TP4KHUtYQYTIrpwjJ9W2ARAdvdT0CXuoEl8jdrU9JZ+w8qOlnHq2Okg+lQrsCtjm +N5Wt7iaaJqHr1L6fFYxwoFj/EDWB09m3vbRbAMOa8MIBZIOmcfnnUEoqR4ZD0XF3 +L+L72ylYZA6V4g7PcSFfWtDwsBNH6PW/pgppbaEon06lZC+5FFw3QnO1KdCjjN1f +aLV1SY1tXhxvBR0y6q5xTdo8ul5QltBe7MWpjkl8bM3dK5Z2TuViyI6f14R6KBUa +GjTBDGcjkObecFEg9GelpccDPVy6IfH5WBS9eMYP0fO7mNj8O4NxHdtAAxpQKEvt +X95Owo5OsSxhgUk1xQULyVMIxCyobfYvJ9BvBFLvC/wIBpzWWf0= +=9E7z -----END PGP SIGNATURE----- diff --git a/docs/canonical.meta.asc b/docs/canonical.meta.asc index e69de29..925f346 100644 --- a/docs/canonical.meta.asc +++ b/docs/canonical.meta.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHb/8ACgkQTifTfDWI +cr/OcxAAuO37ofdgf51czLvp4Rxk4NdEsUpn3BueRDsmRbfmclWyG3X+sRwsD+Fq +d60Yp/fy/aICyIkUqJ8P0DcASKkKWaahob0wQipWh256oTTAxFrohcKu19h1f432 +fClLRdcgm74WJOrcBC7fx0LjAHdUnEV8xRdH+zhOdVyiiBCHn2E4GMQdqwqp7mI3 +2r1Q0Mq6ku+BwKoYcRdZsoFVGJOi39CZpvFRqZYCoclmc+Un23P0E6gucY1FIxFN +xQtYXmgu/It1y4ZXUVMyZPrisqqlBfMcMbRMB06KQ48/goJoq42FV7EBxG9ZdZfO +NZmteWULMxFlPQu4JwJkdRAYNN2c6uZd6GQcwg6I5GfMH1qoWnWUrJuQtFRusn0A +rhW0ntY34M5cTaJDSq69yXGg5dmnufFL/2CpjnwOiC/NxHiHJE7w+CHDJ7Qtl1Ie +4sqhstAz113MPeQQpw2biinZ636eHZODdvboyJzuVFssbSCwI22TopTdLj1s9sEB +xduwGDzmVra28qhg1aeeqT+4tWxBwn6dwamPsLqFJLpwO7q9fcMGd7cENCVIcS6I +0bH2Nrc0kFpqaSsnLtutIjTJ5MCLlUGl2CHpXHWoApO2AkeuZn7ac3gJWucrMYvE +WkTN+uPJ531AG7zXJsPJEOP67ttBjyFodEcVTYcgZueLqJIW7js= +=uwJG +-----END PGP SIGNATURE----- diff --git a/docs/gitfield.json.asc b/docs/gitfield.json.asc index 1fb7e72..80605ff 100644 --- a/docs/gitfield.json.asc +++ b/docs/gitfield.json.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHaucACgkQTifTfDWI -cr9ZJg//W1s21IygAOXTe/RGRk3cBEZo67OrTbkjHZW0TFB4nomuhl4HbFfeD9LQ -2k+obj+fjzvseL8B+nOBvrK1n/2OiLsrJihHg2mbWe7HKm8jG/cRfAf++nQ3j024 -zMMtKakRcJHAvIsa+Bg1vwfJdEvKyaEhO+lGsiIadpdmVEmPuBWZFmsjEZzs1tU6 -PNQadE7b7bM1UREjpOZRqVvSZYZ2+ngicC/AdHiFD8tlwMGpeE5k8CPjsZouPznv -lUySiRKfv0dIC3+vtIL7Sfr8b+Ux3gdKvCaqEY0C4+FTIR1Cq/abslNPl0rYDI2W -KWTkG/JPA/OJTWrNzGzuatQKdbPJxqv56K5PL7A+tGvbqVjfkrpmUFODJYmMhcXx -8rdod4Znt3TRk6EPrknymPdY0zk1kPI4LkMTdNBzDruVQBrF/LXHY1dQ1y4ZkFWR -P8QQS2k0hQ9+//lA0dvIabRL2u6c52zbNswLYbC2FDKmwRb2QMIenrxqhNXEhMGb -LtoO0MC3O2V1wiahpaXkQvWR2ylbMhRMQWNBGYFYTWA2l8PLRSgsI01+G2FH2JbX -yhQZDdLChwlmRytrUPiIOv8hx+R0TVgKizExXKu2I3aoFQviexs8aLBqGqo0vknn -ku3IssxPHC8rfc4AsFgxjPeHxFRL3iT4m9Gxhum7AVQFZMssDRk= -=bFPR +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAUACgkQTifTfDWI +cr80PQ//e53vdbf5s9ISzz8jHVoD/Kpuf3y0yTmAW5/UiR8dcX5eo/b7g74c0pjI +v4A7N8qt5EEuv1WHby3zPMeo69rJ3FBI+PLpwLo2+VpeMYjblatBI9Px5vZsNbyG +vJ/hlyzP0jpUf1qamKXPjebQtcMRN/cY2gUHMwZzl8IV+ZggeCwTKiuYZgGCAL8N +frKqrZ4nj0qBkjmemgMsRpJQ8eYLDHsTnisbCKGzcX60H12zXTlUU4XYiofdcdUl +tHH4qdpBV9FadB9ypSkNkGeQe5NlkTt2sbrOVaTjPvlGkyjFkVyPFP9yYWESv7oJ +MB8Om71w/M53YgpV7/b22lTPKG9DvNVSS5zt4fVjRq0libeaM5vWZ8Uda1ARbnm/ +yBdSwfSUsXWBcxelYqPdXxjyoAC3lKEkJP3tCFx6mvJnlRmEpA9xALt3FB/mGrw6 +STHiD+0tRF1bv5cdP0enFk09B/pKMBcTuhW56r9XaECqw7zacwYk/OViUYQBtLT+ +nZRewMds5KtGgn1klviAiLIcu9rE9iZ66UvPxZD29lJIauIRxUi7LDx5zNw3EhWL +DrVuxRPODjKs/D/owQWF9yw7WgQlb2Pnfhs1B1KgOpTOe5UAhUr4QZ+Oraogd7k7 +OoRa2zx8fHbzQLVyHzq7YmFk8uUxbOrZvTg2aDWck/sgH8wckLs= +=Iq+Z -----END PGP SIGNATURE----- diff --git a/docs/index.json.asc b/docs/index.json.asc index bcd6f84..78ddb14 100644 --- a/docs/index.json.asc +++ b/docs/index.json.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHauQACgkQTifTfDWI -cr/y5hAArDCV0nDEh9RVatuGltKDwH+ncRp7GZKXc1cLSVUsBSR1Lb8+fbBjmuYq -iZlT97ujzPAMDO8B3LID+jacOQ/+jqyhyLRdOT4hpOA+BsUmdLCQl1X87VnOoq0h -rwSNaGlPcGeq9pMN4T1boUNJsCnrwhUcCay+hDS50mCd/Bh/v9yuc+oV6mRWEiDp -wnUPx9XvQJRzDs3xR92do/yixlZFHEYoHMqM2GYi4XU0Nw5XEfxiuJhYta2zuyFy -UnYt/oe54fKEXxWp5LC2SU9oBFfryYFfbiUrPHaQLt2fSlVD2fAAqkqEIdRf6QfJ -Ur7Q/5MElszmguu67cgWYyFkoSigE2TGRYbV0LdG3ZsDA+qHD/L7agv5wNZW6lv6 -h5zZgIrbpWurYFiNztB8/89tnw3Oau51LYcnHuZeF2typELE39qjCJK3iAiETa47 -mnFBz6l8Q9cbpgV1E4nWsn0Zy9SGJMcv+yw3hNsBV+OSwxNnLiHpeNcdrHOTdfVS -veUlnexhZr1sQOD5r4jTn7Hb5qp7xo6GklAQAoije7VEf9/VhsTwG6aMXrmtKqbz -tPAgBIjrBXcK3pOuAAsWqvuHMmTRJibPnL0MEx6ZjYBmsqrLrcNtZIPeVy7jI2eP -zIdmo/PniPailFZBbjn2djmL6Hj/Hu+B3NApD47056541jt1S2I= -=I1yO +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAIACgkQTifTfDWI +cr+EphAAjheQ4Q2/3c+/co5LAegBhP2/OC43l6G7uP5uGBfZOenBozG3mn7gCeTW +9cLNhs/k0OT4RxY8Gs7TQ8OKAsGRc+6aGDTurGhyP4pfHnzeOivNxyk6t/3ZbXcC +edGLbjy7GeygwyU2fTBRbWaG7QUSa5e9TomTfj05ysWUp88JFHcG4YaXiZUURSwk +qC61+ggI4oDk/OSbjcE7xduU5FZ0fI12sZ4gRmCB5+vcmm8ozC3EehpZenMSeURl +fMBDeRkVW5mWihoCDCxEIJZOwTsMbLmUPwVhUwNfFsxEWxE6hlGQeHtWhaDzYhue +lESk++Evqv4inkwhMmK+4iTiMHP6UjcFc9/qo8QbTVmmTevyz2sWaSAl6149L8J4 +sZol2S9WLIRSS90EOblC/VAVofD0KmVujrPiE7GC5swhdu8FKcpLsZVuMcjAAOKJ +lFDW2DBC5xD2e6Ho/YZ27rmdldm6XWZbDSgmh8Vs1lE2zsEMbOhDN3H6z6h6y1Rz +mr0sEK/VftZFXgvsIkgpXle9lrB8+PPcgHoUgvrOsi/m2ujJ29U4na33GQEVz7nn +xCSSYkQ3azGJb2ejYoAIZVBcNW8/wzsk1kyKDKhfkvN69As+it07nZVlxPoXc5M3 +hcInsvNJy3ttfxrVPFkF//wGOlZDKWpfaJ6dG+bVTHYYd8imeZg= +=eZDl -----END PGP SIGNATURE----- diff --git a/docs/integrity.sha256.asc b/docs/integrity.sha256.asc index a360a63..1e44101 100644 --- a/docs/integrity.sha256.asc +++ b/docs/integrity.sha256.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHZrUACgkQTifTfDWI -cr/wNw//TwyN6YbX4g0GJWO+W75MxkeKYU9F4gZG7OMpw4ldKYjpUcioURcQUyvf -HDOfIW9kXQd/cgIzG+OkyfY2fTnVl2pIZ/F2+Zqz6zpE2xvegl/iI8lBXeuiZIDW -WGfSfwrVq8+zZsu4a01sQ/3IEYtaeeUb8TcJLc1On5EJX1BKSihmgKJ0M52ovlWS -++UsQvQUdCpV+0HUUgLGSNrXCEZ/0YQ00QPxuY9fpnTsSbxh+1jwnjq0RY3Zvcl5 -cDPxmMF0eSKdTh/TjoVq7YWvtPHxYIp3SMZdFRPXGMZBHmihSZpNaz/UCunyyyDt -1sjU7blr8ygsjvCOb83H5D5I4Ivsb+4f6W61byMBARDYAeMpNjy4SrH29mcwEtDh -oIK00Q3LF1fxeL+lUyyydAgDAtERWRgHpZLoYFTifumoQU51UCghM6pkCbaJI1+K -6DXQJLyWQbb/Mvg1pArCIp8QTD1yD2wlD+KxPaYPmK6qA8jNLS/8Bbe5KebVxh8Q -zv1rrj4CgiEQXiXI9rFvWw14WrJclT9vgJNujcNW+qBbuvOle2dY6Ub7V8TZmZHG -D+G7uiHFcpqo6jU4jfoVly96Lrs6GImfF4eneeQUu0RfXGf5CoFEMzR2QaKObxD8 -NbSe3ouqdfdF1PLgTrsNr/SP2MtilV8B+/uSvmIYsSJbn4VzWuE= -=3ciN +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAoACgkQTifTfDWI +cr+MOA//fToVCi0cj1SkErZ88lr+qtGrvAV8cAoa6USi5fEcj5HxT+ywm1/Cd0rq +2UJBcg68AdGgsA9RB21fm/DJwRyR6DzFXzYMuPM6490qNLNPesIUgi86LO78PhtU +ImHs8koOnTAf0V2xzMEEv6jWxhGyYbCpCQat1woFQqcsDPPXaKe/HQlrbZakdt6P +yvvjwLvkyRhU759xQ3GUj3YqVzWjlBU+XvZTipYqJScbwo8Qru9MKClnOMFPBZyt +PfhA2mU/Vyg5lzG6lorPFaEsjGdUENoscU+h8sjaPgjpTA09d+KjyuoVfqMYVa4d +4g2bwep25DqbaI73HFiclklNAn1/+xQRe3EGQK/+SWWkYSSOOgcsNQK3PM52KRV/ +Rt7nAQ9iiFXZjljJ0s7NbIqHtRnshlSLXgQ1myOjL7dvTYdwF2cj5tirpHVVWXR3 +KvHyONDWY8LcH9JLKZyWaUoxvnrrtMj1OClYhBV422njDQOm9YJ3Ln6ySB3jnUho +rQ7caNiThD60TieEV+xvCuKxhi5sPnPMRuF4O2qt6TEgga1ml1UTbtAUMp4XGu/H +eAGXAFBtd2wQNQ6eza1sZsdCY/hmvgMMIHaeCMsTrdo+tUTST5ylii0EgWbE8lKI +9kIf1mhPnoOIo/jjp2f5PR2Dp4nk9izJy2b30QVdRLO04PrWtPA= +=MVhZ -----END PGP SIGNATURE----- diff --git a/docs/repos.json.asc b/docs/repos.json.asc index 082f303..d6060fc 100644 --- a/docs/repos.json.asc +++ b/docs/repos.json.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHausACgkQTifTfDWI -cr+tgQ/7BCxdSGoaawSj0g0BoJmDYA/Sezc/dYG4NmYFUU4tZO+lrx794myYJ1Yh -Xq5UZLnLGwIfxFl6oA1l82a6szYysMDP4W7bbHr1IkFiZduPE96V073kzJM+C+Io -lo7DIm1J6+Ej8fnzH1Nl5gMjxR4RjqGUxJkeLKPgTlkZF9BB3Ng2IUgBWFiE0si7 -UAH2qxh3n2pwhOjhrLfVx1dm5HOoZtb5jpeuvc5Mjiu654E2rwxUTZcrPOKU4R94 -B1H4juGz5bmh82gX6Sri2sABHLvhBNVeATBAiInrb0ADEMVugpU1sxCTXM18T/Tz -CsGjFAiAAGgIsfZMXYtBxlF1b0CjXPJ413yLvTnQSSHzsmNqkdTjKMshyJNUoAyW -q6LKXNgC62tPHxM6squs6Qpyo17JcY8w9Up26otgbVYuQGsO8ZfyxMjh+tScbgjp -pkyWe8umB1ViWqZ562m9SU4RmYwL8+vTGIKubaHmv0TsdQM8pgjQyeE6Jmn/xpGy -hwGhZGjTaH4wUWTLR2TEiuMc6IzRFXRL6YOJGfqWD/fdLcKhkbNPgj6RMacSfWtB -JJ65GYYzzwGYgSxJUT9gRLbWz1o8Bf9ArT6CgJUZ8d9AJdvCUzmTv5s6aBge3GmG -D2NuCd8HULfg1nhGwtmGFXZsytNXx/7VS/xnVOeGh5kNolJ7MM4= -=7/Bg +iQIzBAABCgAdFiEEif0F7T4AkoRgIfM3TifTfDWIcr8FAmhHcAkACgkQTifTfDWI +cr/+zg/8CRZFqrZP+JelLITCS1GBiQeZMWjPy+czbtxPpQcer0vzf4keUWbM8DWp +XiRxQn7w61ub/N4wjYspJz9IXdrznx3i9TMM8Eixpa/L0ka4NZovs+Y+H6/aTqCy +mz8eLOE90ju4nx6fh9ZO/MpzFZd1fwO72UCW89NaYQDp4lF3kkKAMWiMOZ3x9M4s +Azgx0F+IVu4RuVyPBNOblw6r+Tsji34PTbNFYJO3VqqtIQlxbDhU0Q/zgyVR/8Gi +lzLKeNPeVLBaBCbiW+XPD0vybkAZriuV30XF6o9NqpPSo2y9cyFmv6RbJHMOf9qZ +rLUIRu1wJhnEVIvca6cvibvS/ZjUxhDyO+fJY24uxpAUUwwzYoMzDcvEpymbKoDk +1cxrmIwYuXlx8KeVLV8wYqoBr+zR3kQhpUiatfEAdABtaUP09JiylQ+tSFISFLDU +B02xA5JtXjKBnDTf063gAatZQCq1setbsX4ArN38GVQ3c7k7PfZqFV0POZJAT8Mt +y34NFL6xNWY4w/m4xa2rxzx5GV6nPbyBcFucnYS7KNjY48MJ6NQlQz9KNjl+GArn +IKXIH9pgauWWusl5EiaRIou0Ak7j2L4uD52fYPl4igJt+EnG9yPqxrQZvqgl+L9S +h8G7PXG5jiO/6pppPAD2FK6wCUt8gp7I/2u65eVhiTrVYbino+I= +=pN6s -----END PGP SIGNATURE-----