|
11 | 11 | # pylint: enable=unused-import,ungrouped-imports
|
12 | 12 |
|
13 | 13 | import argparse
|
| 14 | +import json |
14 | 15 | import glob
|
15 | 16 | import math
|
16 | 17 | import os
|
17 | 18 | import pathlib
|
| 19 | +import urllib.request |
18 | 20 | import subprocess
|
19 | 21 | import sys
|
20 | 22 | import textwrap
|
@@ -157,12 +159,33 @@ def push_documents_to_gh_pages(*, src_dir: pathlib.Path, dst_branch: str = 'gh-p
|
157 | 159 |
|
158 | 160 | def subcommand_docs(*, jobs: int = 1) -> None:
|
159 | 161 | if 'GITHUB_ACTION' in os.environ and 'GITHUB_TOKEN' in os.environ:
|
160 |
| - if os.environ['GITHUB_REF'] == 'refs/heads/master': |
161 |
| - logger.info('generate documents...') |
162 |
| - onlinejudge_verify.documentation.main.main(jobs=jobs) |
| 162 | + # check it is kicked by "push" event |
| 163 | + if os.environ['GITHUB_EVENT_NAME'] != 'push': |
| 164 | + logger.info('This execution is not kicked from "push" event. Updating GitHub Pages is skipped.') |
| 165 | + return |
| 166 | + |
| 167 | + # check it is on the default branch. |
| 168 | + try: |
| 169 | + # /repos/{owner}/{repo} endpoint. See https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#get-a-repository |
| 170 | + req = urllib.request.Request(os.environ['GITHUB_API_URL'] + '/repos/' + os.environ['GITHUB_REPOSITORY']) |
| 171 | + req.add_header('authorization', 'Bearer ' + os.environ['GITHUB_TOKEN']) |
| 172 | + with urllib.request.urlopen(req) as fh: |
| 173 | + repos = json.loads(fh.read()) |
| 174 | + default_branch = repos['default_branch'] |
| 175 | + except Exception as e: |
| 176 | + logger.exception('failed to get the default branch: %s', e) |
| 177 | + logger.info('Updating GitHub Pages is skipped.') |
| 178 | + return |
| 179 | + if os.environ['GITHUB_REF'] == 'refs/heads/{}'.format(default_branch): |
| 180 | + logger.info('This execution is not on the default branch (the default is "refs/heads/%s" but the actual is "%s"). Updating GitHub Pages is skipped.', default_branch, os.environ['GITHUB_REF']) |
| 181 | + return |
| 182 | + |
| 183 | + # updating the GitHub Pages |
| 184 | + logger.info('generate documents...') |
| 185 | + onlinejudge_verify.documentation.main.main(jobs=jobs) |
163 | 186 |
|
164 |
| - logger.info('upload documents...') |
165 |
| - push_documents_to_gh_pages(src_dir=pathlib.Path('.verify-helper/markdown')) |
| 187 | + logger.info('upload documents...') |
| 188 | + push_documents_to_gh_pages(src_dir=pathlib.Path('.verify-helper/markdown')) |
166 | 189 |
|
167 | 190 | else:
|
168 | 191 | logger.info('generate documents...')
|
|
0 commit comments