diff --git a/.github/workflows/update-themes-index.yml b/.github/workflows/update-themes-index.yml new file mode 100644 index 0000000..ca89541 --- /dev/null +++ b/.github/workflows/update-themes-index.yml @@ -0,0 +1,46 @@ +name: Update themes index + +on: + push: + branches: [gh-pages] + paths: + - 'themes/**' + - '!themes/index.json' + +jobs: + update-index: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + ref: gh-pages + + - name: Regenerate themes/index.json + run: | + python3 - << 'EOF' + import json, os + themes_root = 'themes' + result = {} + for cat in sorted(os.listdir(themes_root)): + cat_path = os.path.join(themes_root, cat) + if not os.path.isdir(cat_path): + continue + files = sorted(f for f in os.listdir(cat_path) if f.endswith('.yaml')) + themes = [{'slug': cat + '/' + f, 'label': f[:-5].replace('-', ' ')} for f in files] + if themes: + result[cat] = themes + with open('themes/index.json', 'w') as fh: + json.dump(result, fh, indent=2) + total = sum(len(v) for v in result.values()) + print(f'Updated: {len(result)} categories, {total} themes') + EOF + + - name: Commit and push + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add themes/index.json + git diff --cached --quiet || git commit -m "Auto-update themes/index.json" + git push