Files
peardata/scripts/rename-template.sh
T
2026-07-18 16:22:56 -04:00

79 lines
2.4 KiB
Bash
Executable File

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