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:
28
28
contents : read
29
29
30
30
concurrency :
31
- group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
31
+ group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-reusable
32
32
cancel-in-progress : true
33
33
34
34
jobs :
37
37
runs-on : ubuntu-latest
38
38
timeout-minutes : 10
39
39
outputs :
40
+ run-docs : ${{ steps.docs-changes.outputs.run-docs || false }}
40
41
run_tests : ${{ steps.check.outputs.run_tests }}
41
42
run_hypothesis : ${{ steps.check.outputs.run_hypothesis }}
42
43
config_hash : ${{ steps.config_hash.outputs.hash }}
79
80
id : config_hash
80
81
run : |
81
82
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
82
106
83
107
check_abi :
84
108
name : ' Check if the ABI has changed'
Original file line number Diff line number Diff line change 1
1
name : Docs
2
2
3
3
on :
4
+ workflow_call :
4
5
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'
29
6
30
7
permissions :
31
8
contents : read
@@ -61,12 +38,14 @@ jobs:
61
38
62
39
with :
63
40
filter : " Doc/**"
41
+ format : csv # works for paths with spaces
64
42
- name : ' Build changed files in nit-picky mode'
65
43
if : github.event_name == 'pull_request'
66
44
continue-on-error : true
67
45
run : |
46
+ set -Eeuo pipefail
68
47
# 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 }}'
70
49
# Build docs with the '-n' (nit-picky) option; convert warnings to annotations
71
50
make -C Doc/ PYTHON=../python SPHINXOPTS="-q -n --keep-going" html 2>&1 |
72
51
python Doc/tools/warnings-to-gh-actions.py
Original file line number Diff line number Diff line change 3
3
Touch files that must pass Sphinx nit-picky mode
4
4
so they are rebuilt and we can catch regressions.
5
5
"""
6
-
6
+ import argparse
7
+ import csv
8
+ import sys
7
9
from pathlib import Path
8
10
9
11
wrong_directory_msg = "Must run this script from the repo root"
28
30
rst for rst in Path ("Doc/" ).rglob ("*.rst" ) if rst .parts [1 ] not in EXCLUDE_SUBDIRS
29
31
}
30
32
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 = {
33
43
Path (filename .strip ())
34
44
for filename in clean_files
35
- if filename .strip () and not filename . startswith ( "#" )
45
+ if Path ( filename .strip ()). is_file ( )
36
46
}
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
39
60
40
61
print ("Touching:" )
41
62
for filename in sorted (CLEAN ):
You can’t perform that action at this time.
0 commit comments