#!/bin/bash # Load shared libraries SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../lib/init.sh" # Automated script to help migrate DBIS projects to monorepo set -e PROJECT_NAME="${1:-}" MONOREPO_PATH="${2:-dbis_monorepo}" TARGET_DIR="${3:-packages}" if [ -z "$PROJECT_NAME" ]; then echo "📦 DBIS Project Migration Automation" echo "" echo "Usage: $0 [monorepo-path] [target-dir]" echo "" echo "Example: $0 dbis_core dbis_monorepo packages" echo "" echo "This script automates the migration of a DBIS project to the monorepo." exit 1 fi SOURCE_PATH="../${PROJECT_NAME}" TARGET_PATH="${MONOREPO_PATH}/${TARGET_DIR}/${PROJECT_NAME}" echo "📦 Migrating $PROJECT_NAME to DBIS monorepo..." # Check if source project exists if [ ! -d "$SOURCE_PATH" ]; then echo "❌ Source project not found: $SOURCE_PATH" exit 1 fi # Check if monorepo exists if [ ! -d "$MONOREPO_PATH" ]; then echo "❌ Monorepo not found: $MONOREPO_PATH" exit 1 fi # Create target directory echo "📁 Creating target directory..." mkdir -p "$TARGET_PATH" # Copy project files (excluding node_modules, .git, etc.) echo "📋 Copying project files..." rsync -av --exclude='node_modules' \ --exclude='.git' \ --exclude='dist' \ --exclude='build' \ --exclude='.next' \ --exclude='coverage' \ --exclude='.turbo' \ "$SOURCE_PATH/" "$TARGET_PATH/" # Update package.json if [ -f "$TARGET_PATH/package.json" ]; then echo "📝 Updating package.json..." # Create backup cp "$TARGET_PATH/package.json" "$TARGET_PATH/package.json.bak" # Update package name if command -v jq &> /dev/null; then jq ".name = \"@dbis/${PROJECT_NAME}\"" "$TARGET_PATH/package.json" > "$TARGET_PATH/package.json.tmp" mv "$TARGET_PATH/package.json.tmp" "$TARGET_PATH/package.json" else echo "⚠️ jq not found, please manually update package.json name to @dbis/${PROJECT_NAME}" fi # Update dependencies to use workspace packages echo "📝 Updating dependencies to use workspace packages..." # This would need more sophisticated logic, but provides guidance echo " → Review and update dependencies to use @dbis/* and @workspace/* packages" fi # Create migration notes cat > "$TARGET_PATH/MIGRATION_NOTES.md" << EOF # Migration Notes for ${PROJECT_NAME} **Migrated**: $(date) **Source**: ${SOURCE_PATH} **Target**: ${TARGET_PATH} ## Changes Made 1. Project copied to monorepo 2. Package name updated to @dbis/${PROJECT_NAME} 3. Dependencies need manual review ## Next Steps 1. Review and update package.json dependencies: - Replace local packages with @dbis/* packages - Replace common packages with @workspace/* packages 2. Update imports: - Update relative imports - Use @dbis/* and @workspace/* packages 3. Update CI/CD: - Remove individual CI/CD configs - Use monorepo CI/CD 4. Test: - Run \`pnpm install\` in monorepo root - Run \`pnpm build\` to verify build - Run \`pnpm test\` to verify tests 5. Update documentation: - Update README - Update any project-specific docs ## Verification - [ ] Package.json updated - [ ] Dependencies updated - [ ] Imports updated - [ ] Build successful - [ ] Tests passing - [ ] Documentation updated EOF echo "✅ Migration automation complete!" echo "" echo "📝 Project copied to: $TARGET_PATH" echo "📝 Migration notes created: $TARGET_PATH/MIGRATION_NOTES.md" echo "" echo "📋 Next steps:" echo " 1. Review $TARGET_PATH/MIGRATION_NOTES.md" echo " 2. Update package.json dependencies" echo " 3. Update imports" echo " 4. Test build and tests" echo " 5. Update documentation"