#!/usr/bin/env bash # Rebrand peardata → your product name. # Usage: bash scripts/rename-template.sh my-app MyApp set -euo pipefail OLD_SLUG="peardata" OLD_NAME="peardata" OLD_PRODUCT="PearData" OLD_PROTOCOL="peardata/rpc" OLD_PREFIX="pd1." OLD_ENV="PEARDATA_" NEW_SLUG="${1:-}" NEW_PRODUCT="${2:-}" if [[ -z "$NEW_SLUG" || -z "$NEW_PRODUCT" ]]; then echo "Usage: $0 " echo " example: $0 notes-mesh NotesMesh" exit 1 fi if [[ ! "$NEW_SLUG" =~ ^[a-z][a-z0-9-]*$ ]]; then echo "slug must be lowercase alphanumeric + dashes" exit 1 fi ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" PREFIX="$(echo "$NEW_SLUG" | tr -cd 'a-z' | cut -c1-2)1." ENV_PREFIX="$(echo "$NEW_SLUG" | tr 'a-z-' 'A-Z_')_" ENV_PREFIX="${ENV_PREFIX//__/_}" echo "Renaming:" echo " package: $OLD_NAME → $NEW_SLUG" echo " product: $OLD_PRODUCT → $NEW_PRODUCT" echo " protocol: $OLD_PROTOCOL → ${NEW_SLUG}/rpc" echo " invite: $OLD_PREFIX → $PREFIX" echo " env: $OLD_ENV → $ENV_PREFIX" export LC_ALL=C # Use python for safe replacements (perl struggles with slashes in protocol id) python3 - "$OLD_NAME" "$NEW_SLUG" "$OLD_PRODUCT" "$NEW_PRODUCT" "$OLD_PROTOCOL" "${NEW_SLUG}/rpc" "$OLD_SLUG" "$NEW_SLUG" "$OLD_PREFIX" "$PREFIX" "$OLD_ENV" "$ENV_PREFIX" <<'PY' import os, sys from pathlib import Path pairs = list(zip(sys.argv[1::2], sys.argv[2::2])) # longer keys first pairs.sort(key=lambda x: -len(x[0])) SKIP = {'node_modules', '.git', 'data'} EXTS = {'.js','.mjs','.cjs','.json','.md','.html','.css','.yml','.yaml','.service','.example','.sh'} for dirpath, dirnames, filenames in os.walk('.'): dirnames[:] = [d for d in dirnames if d not in SKIP] for name in filenames: p = Path(dirpath) / name if p.suffix not in EXTS: continue try: text = p.read_text(encoding='utf-8') except Exception: continue orig = text for a, b in pairs: text = text.replace(a, b) if text != orig: p.write_text(text, encoding='utf-8') print('updated', p) PY if [[ -f bin/peardata-server.mjs && "$NEW_SLUG" != "peardata" ]]; then mv bin/peardata-server.mjs "bin/${NEW_SLUG}-server.mjs" fi if [[ -f deploy/peardata.service && "$NEW_SLUG" != "peardata" ]]; then mv deploy/peardata.service "deploy/${NEW_SLUG}.service" fi echo "Done. Review git diff, then: npm install && npm test"