name: Validate Extensions Catalog on: push: branches: [main] paths: - 'ods/extensions/library/services/*/manifest.yaml' - 'ods/scripts/generate-extensions-catalog.py' - 'ods/config/extensions-catalog.json' pull_request: branches: [main] paths: - 'ods/extensions/library/services/*/manifest.yaml' - 'ods/scripts/generate-extensions-catalog.py' - 'ods/config/extensions-catalog.json' permissions: contents: read jobs: catalog-freshness: name: Check catalog is up-to-date runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set up Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version: "3.12" - name: Install PyYAML run: pip install pyyaml - name: Regenerate catalog and diff run: | cp ods/config/extensions-catalog.json /tmp/catalog-before.json python ods/scripts/generate-extensions-catalog.py # Compare ignoring generated_at timestamp (changes every run) jq 'del(.generated_at)' /tmp/catalog-before.json > /tmp/a.json jq 'del(.generated_at)' ods/config/extensions-catalog.json > /tmp/b.json if ! diff -q /tmp/a.json /tmp/b.json >/dev/null 2>&1; then diff /tmp/a.json /tmp/b.json || true echo "::error::extensions-catalog.json is out of date. Run: python ods/scripts/generate-extensions-catalog.py" exit 1 fi