Contains: - 1m-brag - tem - VaultMesh_Catalog_v1 - VAULTMESH-ETERNAL-PATTERN 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
148 lines
4.4 KiB
Bash
148 lines
4.4 KiB
Bash
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
usage() {
|
||
cat <<EOF
|
||
Package VaultMesh funding-roadmap deliverables for Horizon submission.
|
||
|
||
Usage:
|
||
bash scripts/package_horizon.sh [--dest DIR] [--render] [--tar|--zip]
|
||
|
||
Options:
|
||
--dest DIR Destination base directory (default: \"$HOME/downloads/horizon-submission\")
|
||
--render If mermaid-cli (mmdc) is available, render PNG/SVG for diagrams
|
||
--tar Also create a .tar.gz archive alongside the folder (default)
|
||
--zip Create a .zip archive if \"zip\" is available
|
||
-h, --help Show this help
|
||
|
||
Creates structure:
|
||
horizon-submission-YYYYMMDD/
|
||
common/ (roadmap + deliverables summary)
|
||
templates/
|
||
consortium/ (tracker + generated consortium-summary.md)
|
||
diagrams/ (.mmd + optional rendered PNG/SVG)
|
||
MANIFEST.sha256 (if sha256sum is available)
|
||
README.txt
|
||
EOF
|
||
}
|
||
|
||
DEST_DEFAULT="${HOME}/downloads/horizon-submission"
|
||
ARCHIVE_FMT="tar"
|
||
RENDER="0"
|
||
|
||
DEST="$DEST_DEFAULT"
|
||
while [[ $# -gt 0 ]]; do
|
||
case "$1" in
|
||
--dest)
|
||
DEST="$2"; shift 2 ;;
|
||
--render)
|
||
RENDER="1"; shift ;;
|
||
--zip)
|
||
ARCHIVE_FMT="zip"; shift ;;
|
||
--tar)
|
||
ARCHIVE_FMT="tar"; shift ;;
|
||
-h|--help)
|
||
usage; exit 0 ;;
|
||
*)
|
||
echo "Unknown option: $1" >&2; usage; exit 1 ;;
|
||
esac
|
||
done
|
||
|
||
# Resolve repository root (this script is under funding-roadmap/scripts)
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||
|
||
DATE="$(date +%Y%m%d)"
|
||
PKG_DIR="${DEST}/horizon-submission-${DATE}"
|
||
|
||
echo "Packaging to: ${PKG_DIR}"
|
||
mkdir -p "${PKG_DIR}/"{common,templates,consortium,diagrams}
|
||
|
||
# Copy core docs
|
||
for f in "${ROOT_DIR}/VaultMesh_Funding_Roadmap_2025-2027.md" \
|
||
"${ROOT_DIR}/DELIVERABLES_COMPLETE.md"; do
|
||
if [[ -f "$f" ]]; then
|
||
cp "$f" "${PKG_DIR}/common/"
|
||
fi
|
||
done
|
||
|
||
# Templates
|
||
cp "${ROOT_DIR}/templates/"*.md "${PKG_DIR}/templates/" 2>/dev/null || true
|
||
|
||
# Consortium tracker + README + generated summary
|
||
cp "${ROOT_DIR}/consortium/consortium-tracker.csv" "${PKG_DIR}/consortium/"
|
||
cp "${ROOT_DIR}/consortium/README.md" "${PKG_DIR}/consortium/"
|
||
|
||
if command -v python3 >/dev/null 2>&1; then
|
||
python3 "${ROOT_DIR}/scripts/generate_summary.py" \
|
||
--csv "${ROOT_DIR}/consortium/consortium-tracker.csv" \
|
||
> "${PKG_DIR}/consortium/consortium-summary.md"
|
||
else
|
||
printf "python3 not found; skipping consortium-summary.md\n" >&2
|
||
fi
|
||
|
||
# Diagrams (.mmd + README)
|
||
cp "${ROOT_DIR}/diagrams/"*.mmd "${PKG_DIR}/diagrams/"
|
||
cp "${ROOT_DIR}/diagrams/README.md" "${PKG_DIR}/diagrams/"
|
||
|
||
# Optional rendering to PNG/SVG if mermaid-cli is present and --render given
|
||
if [[ "$RENDER" = "1" ]] && command -v mmdc >/dev/null 2>&1; then
|
||
echo "Rendering diagrams to PNG/SVG via mermaid-cli..."
|
||
pushd "${PKG_DIR}/diagrams" >/dev/null
|
||
for file in *.mmd; do
|
||
base="${file%.mmd}"
|
||
mmdc -i "$file" -o "${base}.png" -w 3000 -b transparent || true
|
||
mmdc -i "$file" -o "${base}.svg" || true
|
||
done
|
||
popd >/dev/null
|
||
else
|
||
if [[ "$RENDER" = "1" ]]; then
|
||
echo "Note: --render requested but mermaid-cli (mmdc) not found; skipping render." >&2
|
||
fi
|
||
fi
|
||
|
||
# Manifest of file hashes if available
|
||
if command -v sha256sum >/dev/null 2>&1; then
|
||
(cd "${PKG_DIR}" && find . -type f -print0 | sort -z | xargs -0 sha256sum) \
|
||
> "${PKG_DIR}/MANIFEST.sha256"
|
||
fi
|
||
|
||
# README for the package
|
||
cat > "${PKG_DIR}/README.txt" <<'TXT'
|
||
Horizon Submission Package
|
||
--------------------------
|
||
|
||
Contents:
|
||
- common/ Funding roadmap and deliverables summary
|
||
- templates/ Letter of Intent + Partner Onboarding 1‑pager
|
||
- consortium/ Tracker CSV + README + generated consortium-summary.md
|
||
- diagrams/ Mermaid (.mmd) + README (+ PNG/SVG if rendered)
|
||
|
||
Notes:
|
||
- Review consortium-summary.md before external sharing (contains contacts/emails).
|
||
- Render diagrams if needed: install mermaid-cli (mmdc) and re-run with --render.
|
||
- Archive integrity: see MANIFEST.sha256 (if generated).
|
||
|
||
Coordinator contact: guardian@vaultmesh.org
|
||
TXT
|
||
|
||
# Optional archive alongside folder
|
||
case "$ARCHIVE_FMT" in
|
||
tar)
|
||
ARCHIVE_PATH="${PKG_DIR}.tar.gz"
|
||
(cd "${DEST}" && tar czf "$(basename "${ARCHIVE_PATH}")" "$(basename "${PKG_DIR}")")
|
||
echo "Created archive: ${ARCHIVE_PATH}"
|
||
;;
|
||
zip)
|
||
if command -v zip >/dev/null 2>&1; then
|
||
(cd "${DEST}" && zip -qr "$(basename "${PKG_DIR}").zip" "$(basename "${PKG_DIR}")")
|
||
echo "Created archive: ${PKG_DIR}.zip"
|
||
else
|
||
echo "zip not found; skipping .zip archive" >&2
|
||
fi
|
||
;;
|
||
esac
|
||
|
||
echo "Package ready: ${PKG_DIR}"
|
||
|