From 7fc5f446329ffe8852f82bf93dbb433d4ace1cd2 Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Mon, 10 Feb 2025 14:45:51 +0100 Subject: [PATCH] Automatically update descriptions on Docker Hub --- .github/workflows/dockerhub-description.yaml | 53 ++++++++++++++++++++ docs/scripts/short-description.lua | 24 +++++++++ 2 files changed, 77 insertions(+) create mode 100644 .github/workflows/dockerhub-description.yaml create mode 100644 docs/scripts/short-description.lua diff --git a/.github/workflows/dockerhub-description.yaml b/.github/workflows/dockerhub-description.yaml new file mode 100644 index 0000000..eb8e671 --- /dev/null +++ b/.github/workflows/dockerhub-description.yaml @@ -0,0 +1,53 @@ +name: Update Docker Hub Description +on: + push: + branches: + - main + paths: + - versions.md + - README.md + - docs/**/* + + workflow_dispatch: + +jobs: + updateDescriptions: + name: Update description + runs-on: ubuntu-latest + strategy: + matrix: + image: + - minimal + - core + - latex + - extra + - typst + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup pandoc + uses: pandoc/actions/setup@v1 + + - name: Short description + id: config + run: | + printf 'short_description=%s\n' \ + "$(pandoc lua docs/scripts/short-description.lua \ + ${{ matrix.image }})" \ + >> $GITHUB_OUTPUT + + + - name: Generate README files + run: | + make docs-${{ matrix.image }} > /tmp/README.${{ matrix.image }}.md + + - name: Update ${{ matrix.image }} + uses: peter-evans/dockerhub-description@e98e4d1628a5f3be2be7c231e50981aee98723ae + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + repository: pandoc/${{ matrix.image }} + readme-filepath: /tmp/README.${{ matrix.image }}.md + short-description: ${{ steps.config.outputs.short_description }} diff --git a/docs/scripts/short-description.lua b/docs/scripts/short-description.lua new file mode 100644 index 0000000..72cc626 --- /dev/null +++ b/docs/scripts/short-description.lua @@ -0,0 +1,24 @@ +--- short-description.lua: get the short description for a repository +--- Author: Albert Krewinkel +--- License: MIT + +local io = require 'io' +local pandoc = require 'pandoc' + +local stringify = pandoc.utils.stringify + +--- Command-line arguments +local arg = arg + +--- The image type / repository name +local repo = assert(arg[1], "Repository name is required") +local inputfile = arg[2] or 'docs/short-descriptions.md' +local fh = io.open(inputfile, 'r') +local contents = fh:read('a') +fh:close() + +local doc = pandoc.read(contents) + +assert(doc.meta[repo], "No description found for repository " .. repo) + +print(stringify(doc.meta[repo]))