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
0 commit comments