From cb000cac905555b603d766919e009a4114520965 Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Tue, 23 Jun 2026 11:00:38 +0800 Subject: [PATCH] refactor(ci): encode line offsets in tracker markers Markers now self-document their position: 'OFFSET=N' means the target row is N lines below the marker. Workflow extracts offset dynamically via sed, no hardcoded values. Format: Co-Authored-By: Claude --- .github/workflows/gitea-tracker.yml | 24 +++++++++++++++--------- COMPATIBILITY.md | 4 ++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/gitea-tracker.yml b/.github/workflows/gitea-tracker.yml index 13f1084..4a2eaea 100644 --- a/.github/workflows/gitea-tracker.yml +++ b/.github/workflows/gitea-tracker.yml @@ -34,9 +34,11 @@ jobs: NEW_VERSION="${NEW_VERSION#v}" echo "New Gitea version: $NEW_VERSION" - # Read current max-tested: marker is above table, data row at marker + 3 - MARKER_LINE=$(grep -n 'TRACKER:QUICK-REF-MAX' COMPATIBILITY.md | cut -d: -f1) - CURRENT=$(sed -n "$((MARKER_LINE + 3))p" COMPATIBILITY.md | awk -F'|' '{gsub(/\*| /, "", $4); print $4}') + # Parse marker line AND embedded OFFSET to locate the data row + MARKER_INFO=$(grep -n 'TRACKER:QUICK-REF-MAX' COMPATIBILITY.md) + MARKER_LINE=$(echo "$MARKER_INFO" | cut -d: -f1) + OFFSET=$(echo "$MARKER_INFO" | sed 's/.*OFFSET=\([0-9]*\).*/\1/') + CURRENT=$(sed -n "$((MARKER_LINE + OFFSET))p" COMPATIBILITY.md | awk -F'|' '{gsub(/\*| /, "", $4); print $4}') echo "Current max tested: $CURRENT" echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT @@ -54,9 +56,11 @@ jobs: if: steps.version.outputs.skip != 'true' run: | NEW="${{ steps.version.outputs.new_version }}" - # Quick Reference data row is at marker + 3 (marker → header → separator → data) - MARKER=$(grep -n 'TRACKER:QUICK-REF-MAX' COMPATIBILITY.md | cut -d: -f1) - TARGET=$((MARKER + 3)) + # Parse marker line and embedded OFFSET to locate the data row + MARKER_INFO=$(grep -n 'TRACKER:QUICK-REF-MAX' COMPATIBILITY.md) + MARKER=$(echo "$MARKER_INFO" | cut -d: -f1) + OFFSET=$(echo "$MARKER_INFO" | sed 's/.*OFFSET=\([0-9]*\).*/\1/') + TARGET=$((MARKER + OFFSET)) # Update column 4 (Max Tested) and column 5 (Status) in the pipe-separated row awk -i inplace -F'|' -v OFS='|' -v ver="${NEW}" ' NR == '$TARGET' { $4 = " **" ver "** "; $5 = " ⏳ Pending Verification " } @@ -68,9 +72,11 @@ jobs: run: | NEW="${{ steps.version.outputs.new_version }}" TODAY=$(date +%Y-%m-%d) - # Insert new row at marker + 2 (marker → header → after separator) - MARKER=$(grep -n 'TRACKER:VERSION-INSERT' COMPATIBILITY.md | cut -d: -f1) - INSERT=$((MARKER + 2)) + # Parse marker line and embedded OFFSET for the insertion point + MARKER_INFO=$(grep -n 'TRACKER:VERSION-INSERT' COMPATIBILITY.md) + MARKER=$(echo "$MARKER_INFO" | cut -d: -f1) + OFFSET=$(echo "$MARKER_INFO" | sed 's/.*OFFSET=\([0-9]*\).*/\1/') + INSERT=$((MARKER + OFFSET)) ROW="| **${NEW}** | ${TODAY} | ⏳ Pending Verification | TBD |" sed -i "${INSERT}a ${ROW}" COMPATIBILITY.md diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md index 58e9465..30a1495 100644 --- a/COMPATIBILITY.md +++ b/COMPATIBILITY.md @@ -4,7 +4,7 @@ This document tracks the compatibility between **Gitea Mail Templates** releases ## Quick Reference - + | Template Release | Min Gitea | Max Tested Gitea | Status | |-----------------|-----------|-----------------|--------| | **v1.0.x** | **1.25.0** | **1.26.4** | ✅ Active | @@ -21,7 +21,7 @@ gitea --version ## Gitea Version History — Mail Template Impact - + | Gitea | Release Date | Mail Template Changes | Breaking? | |-------|-------------|----------------------|-----------| | **1.26.4** | 2026-06-21 | None — hotfix release | No |