refactor: rename ScadaLink → ZB.MOM.WW.ScadaBridge (code + projects + namespaces)

Solution + 23 src projects + 26 test projects renamed; folders, csproj,
namespaces, and ScadaLinkDbContext/ScadaBridgeDbContext class updated.
ActorSystem "scadalink" → "scadabridge", Akka seed-node URLs migrated.
SQL roles/logins, LDAP domains, CLI command name, and CLI config dir
(~/.scadalink → ~/.scadabridge) also renamed.

Build green; 5 Host.Tests fail awaiting SQL login rename in next commit.
Pre-existing StaleTagMonitor timing flakes unchanged.

Rename script committed at tools/rename-to-scadabridge.sh.
This commit is contained in:
Joseph Doherty
2026-05-28 09:37:45 -04:00
parent 6d87ee3c3b
commit 7b0b9c7365
1531 changed files with 11180 additions and 11054 deletions
+126
View File
@@ -0,0 +1,126 @@
#!/usr/bin/env bash
# tools/rename-to-scadabridge.sh
#
# Renames the codebase from ScadaLink → ZB.MOM.WW.ScadaBridge.
# Multi-pass substitution, most-specific-first to avoid double-replacement.
# Operates on git-tracked files only (skips .git/, untracked, binaries via git grep).
#
# Usage:
# tools/rename-to-scadabridge.sh --dry-run # print affected files, no changes
# tools/rename-to-scadabridge.sh # apply text substitutions + git mv folder/file moves
#
# After running, follow with:
# dotnet restore
# dotnet build ZB.MOM.WW.ScadaBridge.slnx
#
# See docs/plans/2026-05-28-scadabridge-rename-design.md for the full design.
set -euo pipefail
cd "$(git rev-parse --show-toplevel)"
DRY_RUN=0
if [[ "${1:-}" == "--dry-run" ]]; then
DRY_RUN=1
echo "DRY RUN mode: no changes will be made"
echo
fi
# Exclude the design doc itself from text substitutions — it documents the
# rename and contains both old and new names on purpose.
EXCLUDE=(':(exclude)docs/plans/2026-05-28-scadabridge-rename-design.md')
run_sed() {
local pattern="$1"
local replacement="$2"
local desc="$3"
# git grep with --fixed-strings finds files containing the literal pattern.
# It's binary-aware and respects .gitignore.
local file_list
file_list=$(git grep -l --fixed-strings -- "$pattern" "${EXCLUDE[@]}" 2>/dev/null || true)
local count=0
if [[ -n "$file_list" ]]; then
count=$(printf '%s\n' "$file_list" | wc -l | tr -d ' ')
fi
if [[ "$count" -eq 0 ]]; then
printf ' %-50s no files match\n' "$desc"
return
fi
printf ' %-50s %d files\n' "$desc" "$count"
if [[ "$DRY_RUN" -eq 1 ]]; then
printf '%s\n' "$file_list" | head -5 | sed 's/^/ /'
[[ "$count" -gt 5 ]] && echo " ... ($((count - 5)) more)"
return
fi
# Escape pattern (BRE metacharacters) and replacement (& \ /).
local esc_pattern esc_replacement
esc_pattern=$(printf '%s' "$pattern" | sed 's/[][\.*^$/]/\\&/g')
esc_replacement=$(printf '%s' "$replacement" | sed 's/[\&/]/\\&/g')
printf '%s\n' "$file_list" | tr '\n' '\0' | xargs -0 sed -i '' -e "s/$esc_pattern/$esc_replacement/g"
}
echo "=== Phase B: text substitutions ==="
# Order matters: most-specific patterns first so later passes don't catch substrings.
run_sed "ScadaLinkDbContext" "ScadaBridgeDbContext" "1. ScadaLinkDbContext"
run_sed "ScadaLinkMachineData" "ScadaBridgeMachineData" "2. ScadaLinkMachineData"
run_sed "ScadaLinkConfig" "ScadaBridgeConfig" "3. ScadaLinkConfig"
run_sed "ScadaLink." "ZB.MOM.WW.ScadaBridge." "4. ScadaLink. (namespace/path)"
run_sed "ScadaLink" "ScadaBridge" "5. ScadaLink (bare ident)"
run_sed "scadalink-" "scadabridge-" "6. scadalink- (container/network)"
run_sed "scadalink:" "scadabridge:" "7. scadalink: (image tag)"
run_sed ".scadalink/" ".scadabridge/" "8. .scadalink/ (CLI config dir)"
run_sed "scadalink" "scadabridge" "9. scadalink (bare lowercase)"
if [[ "$DRY_RUN" -eq 1 ]]; then
echo
echo "DRY RUN complete. No file moves performed."
exit 0
fi
echo
echo "=== Phase C: file/folder moves ==="
# Rename project folders: src/ScadaLink.X → src/ZB.MOM.WW.ScadaBridge.X (and tests/)
shopt -s nullglob
for old in src/ScadaLink.* tests/ScadaLink.*; do
[[ -d "$old" ]] || continue
new="${old/ScadaLink./ZB.MOM.WW.ScadaBridge.}"
echo " git mv $old $new"
git mv "$old" "$new"
done
# Rename .csproj files inside each renamed folder
for d in src/ZB.MOM.WW.ScadaBridge.* tests/ZB.MOM.WW.ScadaBridge.*; do
[[ -d "$d" ]] || continue
for csproj in "$d"/ScadaLink.*.csproj; do
[[ -f "$csproj" ]] || continue
newcsproj="${csproj/ScadaLink./ZB.MOM.WW.ScadaBridge.}"
echo " git mv $csproj $newcsproj"
git mv "$csproj" "$newcsproj"
done
done
# Rename .cs files whose basename starts with ScadaLink (DbContext, WebApplicationFactory, snapshot).
while IFS= read -r f; do
new="${f//ScadaLink/ScadaBridge}"
echo " git mv $f $new"
git mv "$f" "$new"
done < <(git ls-files | awk -F/ '$NF ~ /^ScadaLink[A-Za-z]+\.cs$/')
# Rename solution file.
if [[ -f "ScadaLink.slnx" ]]; then
echo " git mv ScadaLink.slnx ZB.MOM.WW.ScadaBridge.slnx"
git mv ScadaLink.slnx ZB.MOM.WW.ScadaBridge.slnx
fi
shopt -u nullglob
echo
echo "=== Done. Next: dotnet restore && dotnet build ZB.MOM.WW.ScadaBridge.slnx ==="