Quarto Extensions Updater

Keep the Quarto extensions of a repository up to date, the way Dependabot keeps dependencies up to date.

A GitHub Action that scans the extension directories of a repository, updates the extensions that moved, and opens a pull request for each one.

quarto add owner/name@latest, on a schedule

A GitHub Action that reads the _extensions directories of a repository, compares every installed extension against the Quarto extensions registry, updates the ones that moved, and opens a pull request per extension with the release notes attached. It runs on a schedule, on demand, or in dry-run mode when all that is wanted is a report.

What a run produces

🚀 Starting Quarto Extensions Updater...
Fetching extensions registry from: https://m.canouil.dev/quarto-extensions/extensions.json
Successfully fetched 359 extensions from registry
Found 3 extension manifests
Checking 3 extensions for updates...
Update available for mcanouil/iconify: 3.0.0 → 3.0.2
Update available for quarto-ext/lightbox: 0.1.1 → 0.1.2
mcanouil/gitlink is up to date (0.3.0)
📊 Summary: Created/updated 2 PR(s)
🎉 Successfully completed!

Each pull request carries the diff of a single extension, the release notes pulled from the upstream repository, and the update type as a label. A later run that finds the same version again leaves the open pull request alone rather than adding a duplicate.

Minimal workflow

name: Update Quarto Extensions

on:
  schedule:
    - cron: "0 0 * * *"
  workflow_dispatch:

permissions:
  contents: write
  pull-requests: write

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7

      - name: Setup Quarto
        uses: quarto-dev/quarto-actions/setup@v2
        with:
          version: "release"

      - uses: mcanouil/quarto-extensions-updater@v2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

Quarto itself does the installing, so the setup step is required.

What it can do

Next steps

  • Getting started covers the requirements, the first run, and what the action does step by step.
  • Reference documents every input and output, and each behaviour in detail.
Back to top