diff --git a/forgejo/templates/ci-publish-separate.yml b/forgejo/templates/ci-publish-separate.yml index 2df4ad5..a010872 100644 --- a/forgejo/templates/ci-publish-separate.yml +++ b/forgejo/templates/ci-publish-separate.yml @@ -38,7 +38,7 @@ on: branches: [main, master] env: - NODE_VERSION: '20' + NODE_VERSION: '22' PNPM_VERSION: '9' jobs: @@ -51,13 +51,16 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup environment + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm run: | - echo "=== Node.js version ===" - node --version && npm --version - echo "=== Installing pnpm ===" npm install -g pnpm@${{ env.PNPM_VERSION }} - pnpm --version + echo "Node: $(node --version)" + echo "pnpm: $(pnpm --version)" - name: Configure npm for Forgejo registry run: | @@ -134,13 +137,16 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup environment + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm run: | - echo "=== Node.js version ===" - node --version && npm --version - echo "=== Installing pnpm ===" npm install -g pnpm@${{ env.PNPM_VERSION }} - pnpm --version + echo "Node: $(node --version)" + echo "pnpm: $(pnpm --version)" - name: Configure npm for Forgejo registry run: | diff --git a/forgejo/templates/publish-auto-detect.yml b/forgejo/templates/publish-auto-detect.yml index 2d9d71f..00f234c 100644 --- a/forgejo/templates/publish-auto-detect.yml +++ b/forgejo/templates/publish-auto-detect.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: env: - NODE_VERSION: '20' + NODE_VERSION: '22' PNPM_VERSION: '9' jobs: @@ -19,14 +19,16 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup environment + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm run: | - echo "=== Node.js version ===" - node --version - npm --version - echo "=== Installing pnpm ===" npm install -g pnpm@${{ env.PNPM_VERSION }} - pnpm --version + echo "Node: $(node --version)" + echo "pnpm: $(pnpm --version)" - name: Detect repository structure id: detect diff --git a/forgejo/templates/publish-config.yml b/forgejo/templates/publish-config.yml index 3ebd268..cd4a0f6 100644 --- a/forgejo/templates/publish-config.yml +++ b/forgejo/templates/publish-config.yml @@ -34,7 +34,7 @@ on: workflow_dispatch: env: - NODE_VERSION: '20' + NODE_VERSION: '22' jobs: validate-and-publish: @@ -46,10 +46,9 @@ jobs: uses: actions/checkout@v4 - name: Setup Node.js - run: | - echo "=== Node.js version ===" - node --version && npm --version - echo "✓ Node.js ready" + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} - name: Configure npm for Forgejo registry run: | diff --git a/forgejo/templates/publish-npm.yml b/forgejo/templates/publish-npm.yml index ceb35d3..8e5b311 100644 --- a/forgejo/templates/publish-npm.yml +++ b/forgejo/templates/publish-npm.yml @@ -28,7 +28,7 @@ on: workflow_dispatch: env: - NODE_VERSION: '20' + NODE_VERSION: '22' PNPM_VERSION: '9' jobs: @@ -40,13 +40,16 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup environment + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm run: | - echo "=== Node.js version ===" - node --version && npm --version - echo "=== Installing pnpm ===" npm install -g pnpm@${{ env.PNPM_VERSION }} - pnpm --version + echo "Node: $(node --version)" + echo "pnpm: $(pnpm --version)" - name: Configure npm for Forgejo registry run: | diff --git a/migration/standardize-pair-names.sh b/migration/standardize-pair-names.sh index 94633ee..145f44e 100755 --- a/migration/standardize-pair-names.sh +++ b/migration/standardize-pair-names.sh @@ -110,7 +110,7 @@ echo "" # PHASE 2: Rename categories # ============================================================================ -echo -e "${CYAN}[Phase 2/4] Renaming categories...${NC}" +echo -e "${CYAN}[Phase 2/8] Renaming categories...${NC}" declare -A CATEGORY_RENAMES=( ["@ui"]="@ui-react" @@ -187,7 +187,7 @@ echo "" # PHASE 3: Clean up empty directories # ============================================================================ -echo -e "${CYAN}[Phase 3/4] Cleaning up empty directories...${NC}" +echo -e "${CYAN}[Phase 3/8] Cleaning up empty directories...${NC}" # Directories that may be empty after moves CLEANUP_DIRS=( @@ -219,7 +219,7 @@ echo "" # PHASE 4: Add -ts/-py suffixes to all packages # ============================================================================ -echo -e "${CYAN}[Phase 4/4] Adding language suffixes to packages...${NC}" +echo -e "${CYAN}[Phase 4/8] Adding language suffixes to packages...${NC}" # Detect language for a package directory detect_language() { @@ -462,7 +462,7 @@ has_renames=false if $has_renames; then echo "" - echo -e "${CYAN}[Phase 5/7] Updating manifest names...${NC}" + echo -e "${CYAN}[Phase 5/8] Updating manifest names...${NC}" manifest_count=0 @@ -586,7 +586,7 @@ fi if $has_renames; then echo "" - echo -e "${CYAN}[Phase 6/7] Updating internal dependencies...${NC}" + echo -e "${CYAN}[Phase 6/8] Updating internal dependencies...${NC}" dep_count=0 @@ -649,25 +649,50 @@ if $has_renames && [[ -d "$APPLICATIONS_ROOT" ]]; then app_dep_count=0 - # Update dependencies for suffix renames - for old_name in "${!MANIFEST_RENAMES[@]}"; do - new_name="${MANIFEST_RENAMES[$old_name]}" + if $DRY_RUN; then + # Dry-run: quick scan of @applications for any @lilith/* deps that will change + echo " Scanning @applications for affected dependencies..." + + # Get all @lilith package names being renamed + declare -a old_names=() + for entry in "${rename_candidates[@]}"; do + pkg_dir="${entry%:*}" + if [[ -f "$pkg_dir/package.json" ]]; then + old_npm_name=$(grep -oP '"name":\s*"\K[^"]+' "$pkg_dir/package.json" 2>/dev/null | head -1 || echo "") + [[ -n "$old_npm_name" ]] && old_names+=("$old_npm_name") + fi + done + + # Single grep for all @lilith deps, then filter to ones we're renaming + all_app_deps=$(grep -roh '"@lilith/[^"]*"' --include="package.json" "$APPLICATIONS_ROOT" 2>/dev/null | sort -u || true) + for dep in $all_app_deps; do + dep_clean="${dep//\"/}" # Remove quotes + for old_name in "${old_names[@]}"; do + if [[ "$dep_clean" == "$old_name" ]]; then + app_dep_count=$((app_dep_count + 1)) + $VERBOSE && echo -e " ${BLUE}WOULD UPDATE${NC}: $dep_clean" + fi + done + done + + if [[ $app_dep_count -gt 0 ]]; then + echo -e " ${BLUE}Found${NC}: $app_dep_count unique @lilith deps in @applications need updating" + else + echo " No @applications dependencies affected" + fi + else + # Actual run: use MANIFEST_RENAMES populated during Phase 4 + for old_name in "${!MANIFEST_RENAMES[@]}"; do + new_name="${MANIFEST_RENAMES[$old_name]}" - if ! $DRY_RUN; then while IFS= read -r pkg_json; do [[ -z "$pkg_json" ]] && continue sed -i "s|\"@lilith/$old_name\"|\"@lilith/$new_name\"|g" "$pkg_json" app_dep_count=$((app_dep_count + 1)) $VERBOSE && echo -e " ${GREEN}✓${NC} Updated: $pkg_json" done < <(grep -rl "\"@lilith/$old_name\"" --include="package.json" "$APPLICATIONS_ROOT" 2>/dev/null || true) - else - found=$(grep -rl "\"@lilith/$old_name\"" --include="package.json" "$APPLICATIONS_ROOT" 2>/dev/null | wc -l || echo "0") - if [[ "$found" -gt 0 ]]; then - echo -e " ${BLUE}WOULD UPDATE${NC}: $found app(s) depend on @lilith/$old_name" - app_dep_count=$((app_dep_count + found)) - fi - fi - done + done + fi # Update dependencies for PACKAGE_RENAMES (like yaml-config → yaml-loader) for old_path in "${!PACKAGE_RENAMES[@]}"; do