Skip to content

Commit de93240

Browse files
marcarlclaude
andcommitted
Fix: YAML list corruption for forarbeten in frontmatter + export missing files
- sort_frontmatter.py: Fix forarbeten list output when value starts with spaces instead of newline, causing invalid YAML (forarbeten: - "item" on same line) - git-export-workflow.yml: In changed mode, also detect JSON files missing from latest export branch in se-lex/sfs (not just files changed in last 7 days) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 608e809 commit de93240

2 files changed

Lines changed: 44 additions & 7 deletions

File tree

.github/workflows/git-export-workflow.yml

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ jobs:
8787
8888
- name: Determine export filter
8989
id: export_filter
90+
env:
91+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9092
run: |
9193
EXPORT_MODE="${{ inputs.export_mode || 'changed' }}"
9294
echo "📋 Export-läge: $EXPORT_MODE"
@@ -103,23 +105,56 @@ jobs:
103105
echo "filter_type=none" >> $GITHUB_OUTPUT
104106
fi
105107
else
106-
# Exportera bara nya/ändrade filer sedan senaste veckan
108+
# Exportera nya/ändrade filer sedan senaste veckan
107109
SINCE_DATE=$(date -u -d '7 days ago' +'%Y-%m-%d')
108110
echo "🔍 Letar efter filer ändrade sedan: $SINCE_DATE"
109111
110112
# Hämta lista på ändrade JSON-filer från git log
111113
CHANGED_FILES=$(git log --since="$SINCE_DATE" --name-only --pretty=format: --diff-filter=AM -- data/sfs_json/ | grep -E '\.json$' | sort -u || true)
112114
115+
# Hitta också filer som saknas i senaste export-branch i se-lex/sfs
116+
echo "🔍 Söker efter filer som saknas i senaste export-branch..."
117+
LATEST_EXPORT=$(gh api "repos/se-lex/sfs/branches?per_page=100" \
118+
--jq '[.[] | select(.name | startswith("export-")) | .name] | sort | last' 2>/dev/null || echo "")
119+
120+
if [ -n "$LATEST_EXPORT" ]; then
121+
echo "📌 Senaste export-branch: $LATEST_EXPORT"
122+
# Hämta alla exporterade filnamn (utan år-prefix och .md-ändelse)
123+
EXPORTED_STEMS=$(gh api "repos/se-lex/sfs/git/trees/${LATEST_EXPORT}?recursive=1" \
124+
--jq '[.tree[] | select(.type=="blob") | .path | split("/") | last | gsub("\\.md$"; "")] | sort | .[]' \
125+
2>/dev/null || echo "")
126+
127+
# Alla lokala JSON-filer som stammar
128+
LOCAL_STEMS=$(find data/sfs_json -name "*.json" -printf "%f\n" | sed 's/\.json$//' | sort)
129+
130+
# Filer som finns lokalt men saknas i export-branch
131+
MISSING_FILES=$(comm -23 \
132+
<(echo "$LOCAL_STEMS") \
133+
<(echo "$EXPORTED_STEMS") \
134+
| grep -v '^$' \
135+
| sed 's|^|data/sfs_json/|; s/$/.json/' || true)
136+
137+
if [ -n "$MISSING_FILES" ]; then
138+
MISSING_COUNT=$(echo "$MISSING_FILES" | wc -l | tr -d ' ')
139+
echo "📦 Hittade $MISSING_COUNT filer som saknas i ${LATEST_EXPORT}"
140+
CHANGED_FILES=$(printf "%s\n%s" "$CHANGED_FILES" "$MISSING_FILES" | grep -v '^$' | sort -u)
141+
else
142+
echo "✅ Alla lokala filer finns redan i ${LATEST_EXPORT}"
143+
fi
144+
else
145+
echo "ℹ️ Ingen export-branch hittades i se-lex/sfs, exporterar bara ändrade filer"
146+
fi
147+
113148
if [ -z "$CHANGED_FILES" ]; then
114-
echo "⚠️ Inga nya/ändrade filer hittades sedan $SINCE_DATE"
149+
echo "⚠️ Inga filer att exportera"
115150
echo "changed_count=0" >> $GITHUB_OUTPUT
116151
echo "filter=" >> $GITHUB_OUTPUT
117152
echo "filter_type=none" >> $GITHUB_OUTPUT
118153
exit 0
119154
else
120-
# Räkna antal ändrade filer
155+
# Räkna antal filer
121156
CHANGED_COUNT=$(echo "$CHANGED_FILES" | wc -l | tr -d ' ')
122-
echo "✅ Hittade $CHANGED_COUNT nya/ändrade filer"
157+
echo "✅ Totalt $CHANGED_COUNT filer att exportera"
123158
124159
# Extrahera beteckningar från filnamn (sfs-YYYY-NNN.json -> YYYY:NNN)
125160
BETECKNINGAR=""
@@ -134,14 +169,14 @@ jobs:
134169
fi
135170
done <<< "$CHANGED_FILES"
136171
137-
echo "📋 Filter för ändrade dokument: $BETECKNINGAR"
172+
echo "📋 Filter för dokument: $BETECKNINGAR"
138173
echo "changed_count=$CHANGED_COUNT" >> $GITHUB_OUTPUT
139174
echo "filter=$BETECKNINGAR" >> $GITHUB_OUTPUT
140175
echo "filter_type=beteckningar" >> $GITHUB_OUTPUT
141176
142177
# Spara lista för debugging
143178
echo ""
144-
echo "Ändrade filer:"
179+
echo "Filer att exportera:"
145180
echo "$CHANGED_FILES"
146181
fi
147182
fi

formatters/sort_frontmatter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,10 @@ def sort_frontmatter_properties(frontmatter_content: str) -> str:
249249
if prop == 'andringsforfattningar':
250250
# Specialhantering för andringsforfattningar
251251
sorted_content.append(f"{prop}:{value}")
252-
elif prop == 'forarbeten' and value.startswith('\n'):
252+
elif prop == 'forarbeten' and (value.startswith('\n') or value.strip().startswith('-')):
253253
# Specialhantering för förarbeten som lista
254+
if not value.startswith('\n'):
255+
value = '\n' + value
254256
sorted_content.append(f"{prop}:{value}")
255257
else:
256258
sorted_content.append(f"{prop}: {value}")

0 commit comments

Comments
 (0)