#!/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" <