File tree Expand file tree Collapse file tree 3 files changed +56
-32
lines changed Expand file tree Collapse file tree 3 files changed +56
-32
lines changed Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ permissions:
2828 contents : read
2929
3030concurrency :
31- group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
31+ group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-reusable
3232 cancel-in-progress : true
3333
3434jobs :
3737 runs-on : ubuntu-latest
3838 timeout-minutes : 10
3939 outputs :
40+ run-docs : ${{ steps.docs-changes.outputs.run-docs || false }}
4041 run_tests : ${{ steps.check.outputs.run_tests }}
4142 run_hypothesis : ${{ steps.check.outputs.run_hypothesis }}
4243 config_hash : ${{ steps.config_hash.outputs.hash }}
7980 id : config_hash
8081 run : |
8182 echo "hash=${{ hashFiles('configure', 'configure.ac', '.github/workflows/build.yml') }}" >> $GITHUB_OUTPUT
83+ - name : Get a list of the changed documentation-related files
84+ if : github.event_name == 'pull_request'
85+ id : changed-docs-files
86+ 87+ with :
88+ filter : |
89+ Doc/**
90+ Misc/**
91+ .github/workflows/reusable-docs.yml
92+ format : csv # works for paths with spaces
93+ - name : Check for docs changes
94+ if : >-
95+ github.event_name == 'pull_request'
96+ && steps.changed-docs-files.outputs.added_modified_renamed != ''
97+ id : docs-changes
98+ run : |
99+ echo "run-docs=true" >> "${GITHUB_OUTPUT}"
100+
101+ check-docs :
102+ name : Docs
103+ needs : check_source
104+ if : fromJSON(needs.check_source.outputs.run-docs)
105+ uses : ./.github/workflows/reusable-docs.yml
82106
83107 check_abi :
84108 name : ' Check if the ABI has changed'
Original file line number Diff line number Diff line change 11name : Docs
22
33on :
4+ workflow_call :
45 workflow_dispatch :
5- # push:
6- # branches:
7- # - 'main'
8- # - '3.12'
9- # - '3.11'
10- # - '3.10'
11- # - '3.9'
12- # - '3.8'
13- # - '3.7'
14- # paths:
15- # - 'Doc/**'
16- pull_request :
17- branches :
18- - ' main'
19- - ' 3.12'
20- - ' 3.11'
21- - ' 3.10'
22- - ' 3.9'
23- - ' 3.8'
24- - ' 3.7'
25- paths :
26- - ' Doc/**'
27- - ' Misc/**'
28- - ' .github/workflows/doc.yml'
296
307permissions :
318 contents : read
@@ -61,12 +38,14 @@ jobs:
61386239 with :
6340 filter : " Doc/**"
41+ format : csv # works for paths with spaces
6442 - name : ' Build changed files in nit-picky mode'
6543 if : github.event_name == 'pull_request'
6644 continue-on-error : true
6745 run : |
46+ set -Eeuo pipefail
6847 # Mark files the pull request modified
69- touch ${{ steps.changed_files.outputs.added_modified }}
48+ python Doc/tools/ touch-clean-files.py --clean ' ${{ steps.changed_files.outputs.added_modified }}'
7049 # Build docs with the '-n' (nit-picky) option; convert warnings to annotations
7150 make -C Doc/ PYTHON=../python SPHINXOPTS="-q -n --keep-going" html 2>&1 |
7251 python Doc/tools/warnings-to-gh-actions.py
Original file line number Diff line number Diff line change 33Touch files that must pass Sphinx nit-picky mode
44so they are rebuilt and we can catch regressions.
55"""
6-
6+ import argparse
7+ import csv
8+ import sys
79from pathlib import Path
810
911wrong_directory_msg = "Must run this script from the repo root"
2830 rst for rst in Path ("Doc/" ).rglob ("*.rst" ) if rst .parts [1 ] not in EXCLUDE_SUBDIRS
2931}
3032
31- with Path ("Doc/tools/.nitignore" ).open () as clean_files :
32- DIRTY = {
33+
34+ parser = argparse .ArgumentParser (
35+ description = __doc__ , formatter_class = argparse .RawDescriptionHelpFormatter
36+ )
37+ parser .add_argument ("-c" , "--clean" , help = "Comma-separated list of clean files" )
38+ args = parser .parse_args ()
39+
40+ if args .clean :
41+ clean_files = next (csv .reader ([args .clean ]))
42+ CLEAN = {
3343 Path (filename .strip ())
3444 for filename in clean_files
35- if filename .strip () and not filename . startswith ( "#" )
45+ if Path ( filename .strip ()). is_file ( )
3646 }
37-
38- CLEAN = ALL_RST - DIRTY - EXCLUDE_FILES
47+ elif args .clean is not None :
48+ print (
49+ "Not touching any files: an empty string `--clean` arg value passed." ,
50+ )
51+ sys .exit (0 )
52+ else :
53+ with Path ("Doc/tools/.nitignore" ).open () as ignored_files :
54+ IGNORED = {
55+ Path (filename .strip ())
56+ for filename in ignored_files
57+ if filename .strip () and not filename .startswith ("#" )
58+ }
59+ CLEAN = ALL_RST - IGNORED - EXCLUDE_FILES
3960
4061print ("Touching:" )
4162for filename in sorted (CLEAN ):
You can’t perform that action at this time.
0 commit comments