#!/usr/bin/env bash set -euo pipefail echo "๐Ÿ”„ Starting Lux Consensus Go-Idiomatic Refactor..." echo "==================================================" # Safety checks git rev-parse --is-inside-work-tree >/dev/null || { echo "โŒ Not a git repo"; exit 1; } # Create refactor branch BRANCH="refactor/go-idiomatic-layout-$(date +%Y%m%d)" git checkout -b "$BRANCH" || { echo "โš ๏ธ Branch exists, using it"; git checkout "$BRANCH"; } MOD="github.com/luxfi/consensus" echo "โœ… Created branch: $BRANCH" echo "" # 1) Protocol consolidation - move top-level protocol packages echo "๐Ÿ“ฆ Step 1: Moving protocol packages..." mkdir -p protocol/prism protocol/photon protocol/wave/fpc # Move prism if [ -d "prism" ]; then echo " Moving prism/ โ†’ protocol/prism/" git mv prism/* protocol/prism/ 2>/dev/null || cp -r prism/* protocol/prism/ rmdir prism 2>/dev/null || rm -rf prism fi # Move photon if [ -d "photon" ]; then echo " Moving photon/ โ†’ protocol/photon/" git mv photon/* protocol/photon/ 2>/dev/null || cp -r photon/* protocol/photon/ rmdir photon 2>/dev/null || rm -rf photon fi # Move wave (keeping fpc subdirectory) if [ -d "wave" ] && [ ! -d "protocol/wave/wave.go" ]; then echo " Moving wave/ โ†’ protocol/wave/" git mv wave/* protocol/wave/ 2>/dev/null || cp -r wave/* protocol/wave/ rmdir wave 2>/dev/null || rm -rf wave fi echo "โœ… Protocol packages consolidated" echo "" # 2) Singularize validators โ†’ validator echo "๐Ÿ“ฆ Step 2: Singularizing package names..." if [ -d "validators" ]; then echo " Renaming validators/ โ†’ validator/" git mv validators validator 2>/dev/null || mv validators validator fi echo "โœ… Package names singularized" echo "" # 3) Update import paths echo "๐Ÿ“ Step 3: Updating import paths..." # Find and replace import paths in all Go files find . -name "*.go" -type f -not -path "./.git/*" -not -path "./node/*" -not -path "./pkg/*" -exec sed -i '' \ -e "s|$MOD/prism|$MOD/protocol/prism|g" \ -e "s|$MOD/photon|$MOD/protocol/photon|g" \ -e "s|$MOD/wave|$MOD/protocol/wave|g" \ -e "s|$MOD/validators|$MOD/validator|g" \ {} \; echo "โœ… Import paths updated" echo "" # 4) Tidy and format echo "๐Ÿงน Step 4: Tidying and formatting..." go mod tidy gofmt -w . echo "โœ… Code formatted" echo "" # 5) Run tests echo "๐Ÿงช Step 5: Running tests..." if go test ./... -count=1; then echo "โœ… All tests passing" else echo "โš ๏ธ Some tests failed - review needed" exit 1 fi echo "" echo "==================================================" echo "โœ… Refactor complete!" echo "" echo "Next steps:" echo " 1. Review changes: git status" echo " 2. Run tests: go test ./..." echo " 3. Commit: git commit -am 'refactor: Go-idiomatic package layout'" echo ""