[fiddle] Add PRESUBMIT rule to run tools/fiddle/make_all_examples_cpp.py
It will run this only if it detected a change to docs/examples
and runs fairly quickly.
Hopefully it avoids future bitrot like:
https://skia-review.googlesource.com/c/skia/+/423956
Change-Id: I8c6a54faa3a14dfb53260e03d4e6cc61e84b76cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/423976
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index c7a910c..43675cc 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -249,6 +249,29 @@
return results
+def _RegenerateAllExamplesCPP(input_api, output_api):
+ """Regenerates all_examples.cpp if an example was added or deleted."""
+ if not any(f.LocalPath().startswith('docs/examples/')
+ for f in input_api.AffectedFiles()):
+ return []
+ command_str = 'tools/fiddle/make_all_examples_cpp.py'
+ cmd = ['python', command_str]
+ if 0 != subprocess.call(cmd):
+ return [output_api.PresubmitError('`%s` failed' % ' '.join(cmd))]
+
+ results = []
+ git_diff_output = input_api.subprocess.check_output(
+ ['git', 'diff', '--no-ext-diff'])
+ if git_diff_output:
+ results += [output_api.PresubmitError(
+ 'Diffs found after running "%s":\n\n%s\n'
+ 'Please commit or discard the above changes.' % (
+ command_str,
+ git_diff_output,
+ )
+ )]
+ return results
+
def _CommonChecks(input_api, output_api):
"""Presubmit checks common to upload and commit."""
results = []
@@ -276,6 +299,7 @@
results.extend(_CheckIncludesFormatted(input_api, output_api))
results.extend(_CheckGNFormatted(input_api, output_api))
results.extend(_CheckGitConflictMarkers(input_api, output_api))
+ results.extend(_RegenerateAllExamplesCPP(input_api, output_api))
return results