diff options
author | Vlad Serebrennikov <serebrennikov.vladislav@gmail.com> | 2025-01-07 13:39:42 +0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-07 13:39:42 +0400 |
commit | cf23549edd0ac971600ceea1bb7f1454566b00a3 (patch) | |
tree | 46f4caf9d61e49fbd9a847b45a0536232043cbed /clang | |
parent | 2db7b314da367e1a6bf8cf34df16f9ad5ad62f5e (diff) | |
download | llvm-cf23549edd0ac971600ceea1bb7f1454566b00a3.zip llvm-cf23549edd0ac971600ceea1bb7f1454566b00a3.tar.gz llvm-cf23549edd0ac971600ceea1bb7f1454566b00a3.tar.bz2 |
[clang] Improve `make_cxx_dr_status` behavior when error occurs (#121785)
One of our contributors got confused by the behavior of the script when
they incorrectly specified the status of a CWG issue
(https://github.com/llvm/llvm-project/pull/102857/files#r1904264872),
and this is an attempt to reduce the confusion:
- script doesn't write anything to disk unless everything is good;
- error messages are prefixed with (a very familiar) `error:` to make it
more obvious that a fatal error occurred.
Diffstat (limited to 'clang')
-rwxr-xr-x | clang/www/make_cxx_dr_status | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status index e0885fd..05de961 100755 --- a/clang/www/make_cxx_dr_status +++ b/clang/www/make_cxx_dr_status @@ -83,8 +83,8 @@ else: status_map = collect_tests() drs = get_issues(issue_list_path) -out_file = open(output, 'w') -out_file.write('''\ +out_html = [] +out_html.append('''\ <!DOCTYPE html> <!-- This file is auto-generated by make_cxx_dr_status. Do not modify. --> <html> @@ -149,7 +149,7 @@ def availability(issue): unresolved_status = unresolved_status_match.group(1) proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready|ready) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status) if proposed_resolution_match is None: - raise AvailabilityError('Issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.issue, unresolved_status)) + raise AvailabilityError('error: issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.issue, unresolved_status)) proposed_resolution = proposed_resolution_match.group(2) status = status[:-1-len(proposed_resolution)] status = status[:-1-len(unresolved_status)] @@ -236,7 +236,7 @@ def availability(issue): avail = 'Duplicate of <a href="#%s">%s</a>' % (dup, dup) _, avail_style, _, _ = availability(dup) else: - raise AvailabilityError('Unknown status %s for issue %s' % (status, dr.issue)) + raise AvailabilityError('error: unknown status %s for issue %s' % (status, dr.issue)) return (avail + avail_suffix, avail_style, unresolved_status, details) count = {} @@ -266,7 +266,7 @@ for dr in drs: else: if unresolved_status != dr.status: availability_error_occurred = True - print("Issue %s is marked '%s', which differs from CWG index status '%s'" \ + print("error: issue %s is marked '%s', which differs from CWG index status '%s'" \ % (dr.issue, unresolved_status, dr.status)) continue else: @@ -280,7 +280,7 @@ for dr in drs: if unresolved_status: availability_error_occurred = True - print("Issue %s is marked '%s', even though it is resolved in CWG index" \ + print("error: issue %s is marked '%s', even though it is resolved in CWG index" \ % (dr.issue, unresolved_status)) continue @@ -296,7 +296,7 @@ for dr in drs: <summary>{avail}</summary> {details} </details>''' - out_file.write(f''' + out_html.append(f''' <tr{row_style} id="{dr.issue}"> <td><a href="https://cplusplus.github.io/CWG/issues/{dr.issue}.html">{dr.issue}</a></td> <td>{dr.status}</td> @@ -310,12 +310,14 @@ if availability_error_occurred: for status, num in sorted(count.items()): print("%s: %s" % (status, num), file=sys.stderr) -out_file.write('''\ +out_html.append('''\ </table> </div> </body> </html> ''') -out_file.close() +out_file = open(output, 'w') +out_file.write(''.join(out_html)) +out_file.close() |