From 5dfec241e2f616a5c7c11c45c61d4dc0e6ef3eb5 Mon Sep 17 00:00:00 2001 From: Mat Sadowski Date: Tue, 1 Jul 2025 13:56:54 +0200 Subject: [PATCH 1/6] Add generate-readme.yaml file --- .github/workflows/generate-readme.yaml | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/generate-readme.yaml diff --git a/.github/workflows/generate-readme.yaml b/.github/workflows/generate-readme.yaml new file mode 100644 index 0000000..f6fa069 --- /dev/null +++ b/.github/workflows/generate-readme.yaml @@ -0,0 +1,29 @@ +name: Generate README + +on: + pull_request: + paths: + - .utils/generate_readme.py + - .github/workflows/generate-readme.yml + - "**/*.py" # Optional: regenerate README if Python files change + +jobs: + generate-readme: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt || true + + - name: Generate README + run: python .utils/generate_readme.py From 4e2b7994e84579c555fa151cfb35acd8d7761715 Mon Sep 17 00:00:00 2001 From: Mat Sadowski Date: Tue, 1 Jul 2025 14:00:35 +0200 Subject: [PATCH 2/6] Fail hard on frontmatter yaml errors in generate_readme.py --- .utils/generate_readme.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.utils/generate_readme.py b/.utils/generate_readme.py index a311641..84d46c3 100644 --- a/.utils/generate_readme.py +++ b/.utils/generate_readme.py @@ -36,7 +36,7 @@ def extract_metadata(readme_path): metadata = yaml.safe_load(match.group(1)) except yaml.YAMLError as e: print("Error parsing YAML metadata in", readme_path, ":", e) - return None + raise e return metadata From 42d47848eccc54cda64a019964e8c8ef66eb5cc4 Mon Sep 17 00:00:00 2001 From: Mat Sadowski Date: Tue, 1 Jul 2025 14:00:55 +0200 Subject: [PATCH 3/6] Fix gh action --- .github/workflows/generate-readme.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/generate-readme.yaml b/.github/workflows/generate-readme.yaml index f6fa069..e24aa29 100644 --- a/.github/workflows/generate-readme.yaml +++ b/.github/workflows/generate-readme.yaml @@ -1,11 +1,10 @@ -name: Generate README +name: Autogenerate README on: pull_request: paths: - .utils/generate_readme.py - .github/workflows/generate-readme.yml - - "**/*.py" # Optional: regenerate README if Python files change jobs: generate-readme: @@ -23,7 +22,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r requirements.txt || true + pip install -r .utils/requirements.txt || true - name: Generate README run: python .utils/generate_readme.py From 237ff5854d0ec110cbcdc041e8dcd91f95dcebbc Mon Sep 17 00:00:00 2001 From: Mat Sadowski Date: Tue, 1 Jul 2025 15:05:04 +0200 Subject: [PATCH 4/6] Make action ask to recreate readme.md by hand if needed --- .github/workflows/generate-readme.yaml | 8 ++++++++ CONTRIBUTING | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generate-readme.yaml b/.github/workflows/generate-readme.yaml index e24aa29..9598e66 100644 --- a/.github/workflows/generate-readme.yaml +++ b/.github/workflows/generate-readme.yaml @@ -26,3 +26,11 @@ jobs: - name: Generate README run: python .utils/generate_readme.py + + - name: Check for uncommitted README changes + run: | + git add README.md + git diff --cached --exit-code || { + echo "::error::README.md is out of date or modified manually. Please re-run the generate_readme script and commit the result."; + exit 1; + } diff --git a/CONTRIBUTING b/CONTRIBUTING index ce78843..3974c2e 100644 --- a/CONTRIBUTING +++ b/CONTRIBUTING @@ -18,5 +18,4 @@ To contribute a tutorial, please follow these steps: - `blog_post_url` - the url to blog post (optional) - `video_url` - the url to the video (optional) - `visualize_url` - the url to Foxglove visualization (optional) - -When creating a merge request, a GitHub action should automatically regenerate the README based on your metadata. To test it yourself, you can run the python script `.utils/generate_readme.py` in the root of this repo. +4. Regenerate the main README.md by running `python .utils/generate_readme.py` from the root of the repo (install `.utils/requirements.txt` if needed). From 17a7210570ca67842ff85454ed33bd37d054095e Mon Sep 17 00:00:00 2001 From: Mat Sadowski Date: Tue, 1 Jul 2025 16:21:24 +0200 Subject: [PATCH 5/6] Remove pull_requests paths from the action, don't force dep install success --- .github/workflows/generate-readme.yaml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/generate-readme.yaml b/.github/workflows/generate-readme.yaml index 9598e66..75351b9 100644 --- a/.github/workflows/generate-readme.yaml +++ b/.github/workflows/generate-readme.yaml @@ -1,10 +1,7 @@ name: Autogenerate README on: - pull_request: - paths: - - .utils/generate_readme.py - - .github/workflows/generate-readme.yml + pull_request: {} jobs: generate-readme: @@ -22,7 +19,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r .utils/requirements.txt || true + pip install -r .utils/requirements.txt - name: Generate README run: python .utils/generate_readme.py From 46653f852343a2a9787b8c2cea8bf99d2686b7e2 Mon Sep 17 00:00:00 2001 From: Mat Sadowski Date: Tue, 1 Jul 2025 16:26:18 +0200 Subject: [PATCH 6/6] Update contributing instructions --- CONTRIBUTING | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING b/CONTRIBUTING index 3974c2e..c1b03f6 100644 --- a/CONTRIBUTING +++ b/CONTRIBUTING @@ -18,4 +18,5 @@ To contribute a tutorial, please follow these steps: - `blog_post_url` - the url to blog post (optional) - `video_url` - the url to the video (optional) - `visualize_url` - the url to Foxglove visualization (optional) -4. Regenerate the main README.md by running `python .utils/generate_readme.py` from the root of the repo (install `.utils/requirements.txt` if needed). +4. Install generate_readme.py dependencies: `pip install -r .utils/requirements.txt` +5. Regenerate the main README.md by running `python .utils/generate_readme.py` from the root of the repo