Use CSV-separated outputs @ get-changed-files @ CI (#105151)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
This commit is contained in:
Sviatoslav Sydorenko 2023-06-21 12:42:59 +02:00 committed by GitHub
parent 9c44656feb
commit eaa6702280
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 21 deletions

View File

@ -87,21 +87,9 @@ jobs:
with:
filter: |
Doc/**
# Temporarily skip paths with spaces
# (i.e. "C API", "Core and Builtins")
# to avoid "Error: One of your files includes a space".
# Pending https://github.com/python/core-workflow/issues/186
# Misc/**
Misc/NEWS.d/next/Build/**
Misc/NEWS.d/next/Documentation/**
Misc/NEWS.d/next/IDLE/**
Misc/NEWS.d/next/Library/**
Misc/NEWS.d/next/Security/**
Misc/NEWS.d/next/Tests/**
Misc/NEWS.d/next/Tools-Demos/**
Misc/NEWS.d/next/Windows/**
Misc/NEWS.d/next/macOS/**
Misc/**
.github/workflows/reusable-docs.yml
format: csv # works for paths with spaces
- name: Check for docs changes
if: >-
github.event_name == 'pull_request'

View File

@ -38,12 +38,14 @@ jobs:
uses: Ana06/get-changed-files@v2.2.0
with:
filter: "Doc/**"
format: csv # works for paths with spaces
- name: 'Build changed files in nit-picky mode'
if: github.event_name == 'pull_request'
continue-on-error: true
run: |
set -Eeuo pipefail
# Mark files the pull request modified
touch ${{ steps.changed_files.outputs.added_modified }}
python Doc/tools/touch-clean-files.py --clean '${{ steps.changed_files.outputs.added_modified }}'
# Build docs with the '-n' (nit-picky) option; convert warnings to annotations
make -C Doc/ PYTHON=../python SPHINXOPTS="-q -n --keep-going" html 2>&1 |
python Doc/tools/warnings-to-gh-actions.py

View File

@ -3,7 +3,9 @@
Touch files that must pass Sphinx nit-picky mode
so they are rebuilt and we can catch regressions.
"""
import argparse
import csv
import sys
from pathlib import Path
wrong_directory_msg = "Must run this script from the repo root"
@ -28,14 +30,33 @@ ALL_RST = {
rst for rst in Path("Doc/").rglob("*.rst") if rst.parts[1] not in EXCLUDE_SUBDIRS
}
with Path("Doc/tools/.nitignore").open() as clean_files:
DIRTY = {
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument("-c", "--clean", help="Comma-separated list of clean files")
args = parser.parse_args()
if args.clean:
clean_files = next(csv.reader([args.clean]))
CLEAN = {
Path(filename.strip())
for filename in clean_files
if filename.strip() and not filename.startswith("#")
if Path(filename.strip()).is_file()
}
CLEAN = ALL_RST - DIRTY - EXCLUDE_FILES
elif args.clean is not None:
print(
"Not touching any files: an empty string `--clean` arg value passed.",
)
sys.exit(0)
else:
with Path("Doc/tools/.nitignore").open() as ignored_files:
IGNORED = {
Path(filename.strip())
for filename in ignored_files
if filename.strip() and not filename.startswith("#")
}
CLEAN = ALL_RST - IGNORED - EXCLUDE_FILES
print("Touching:")
for filename in sorted(CLEAN):