feat: Introduce cross_source flag for genome registry entries

This commit is contained in:
Matteo Cherubini 2026-06-10 17:20:02 +02:00
parent 22239f4bb5
commit bad41d6313
3 changed files with 25 additions and 12 deletions

View file

@ -19,13 +19,15 @@ LIB_DIR="${PROJECT_ROOT}/lib"
PROVIDERS_DIR="${PROJECT_ROOT}/providers"
# --- GENOME REGISTRY ---
# Format: "name|description|linked_repo"
# - linked_repo is OPTIONAL. Leave empty (trailing pipe) for knowledge-only genomes.
# Format: "name|description|linked_repo|cross_source"
# - linked_repo: OPTIONAL. Leave empty for knowledge-only genomes.
# - cross_source: "yes" or "no" (default: no). Controls whether the collector
# may read this genome as a source during cross-genome pulls.
#
# HOW TO CUSTOMIZE:
# Replace the placeholder below with your actual genome domains.
# Example: "genome-work|Work notes and architecture logs|"
# "genome-finance|Personal finance|user/repo-finance"
# Example: "genome-work|Work notes and architecture logs||no"
# "genome-finance|Personal finance|user/repo-finance|no"
GENOMES=(
"genome-example|Template genome description for knowledge management|"
"genome-example|Template genome description for knowledge management||no"
)

View file

@ -11,18 +11,28 @@ source "registry.sh"
GENOME_NAME="${1:-}"
GENOME_DESC="${2:-}"
GENOME_LINKED="${3:-}" # optional: linked project repo reference
GENOME_LINKED="${3:-}" # optional: linked project repo reference
GENOME_CROSS_SOURCE="${4:-no}" # optional: cross_source flag (default: no)
# 1. Check mandatory arguments first
if [[ -z "$GENOME_NAME" || -z "$GENOME_DESC" ]]; then
error "Missing arguments."
echo "Usage: $0 <genome-name> <description> [linked-repo]"
echo "Usage: $0 <genome-name> <description> [linked-repo] [cross_source]"
echo " cross_source: yes|no (default: no)"
exit 1
fi
# 2. Then validate the flag if a non-default value was passed
if [[ "$GENOME_CROSS_SOURCE" != "yes" && "$GENOME_CROSS_SOURCE" != "no" ]]; then
error "Invalid cross_source value: $GENOME_CROSS_SOURCE"
echo "cross_source must be 'yes' or 'no'"
exit 1
fi
step "Adding New Genome: ${GENOME_NAME}"
# Build a 3-field registry entry (linked_repo may be empty)
GENOMES=("${GENOME_NAME}|${GENOME_DESC}|${GENOME_LINKED}")
# Build a 4-field registry entry (linked_repo may be empty, cross_source defaults to no)
GENOMES=("${GENOME_NAME}|${GENOME_DESC}|${GENOME_LINKED}|${GENOME_CROSS_SOURCE}")
# NOTE — Maintenance smell
# We source setup-genomes.sh as a library/orchestrator hybrid. This works because:

View file

@ -20,10 +20,11 @@ step "Processing Genome Registry"
for entry in "${GENOMES[@]}"; do
# 3-field format: name|description|linked_repo (linked_repo optional → may be empty)
IFS='|' read -r GENOME_NAME GENOME_DESC GENOME_LINKED <<< "$entry"
export GENOME_NAME GENOME_DESC GENOME_LINKED
IFS='|' read -r GENOME_NAME GENOME_DESC GENOME_LINKED GENOME_CROSS_SOURCE <<< "$entry"
GENOME_CROSS_SOURCE="${GENOME_CROSS_SOURCE:-no}"
export GENOME_NAME GENOME_DESC GENOME_LINKED GENOME_CROSS_SOURCE
info "Processing: ${GENOME_NAME}..."
info "Processing: ${GENOME_NAME} (cross_source: ${GENOME_CROSS_SOURCE})..."
# 1. Remote Creation (Idempotent)
provider_create_repo "${GENOME_NAME}" "${GENOME_DESC}" "true"