From 3b0da512a5149e5df52fb3300415acde1f5aa200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Wed, 3 May 2017 16:59:27 +0200 Subject: [PATCH] px_process_module_doc: add --no-validation flag and make sure the command failed if there's a validation error. --- Tools/px4moduledoc/srcparser.py | 5 +++++ Tools/px_process_module_doc.py | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Tools/px4moduledoc/srcparser.py b/Tools/px4moduledoc/srcparser.py index 63eb518167..d02dfb7ef5 100644 --- a/Tools/px4moduledoc/srcparser.py +++ b/Tools/px4moduledoc/srcparser.py @@ -244,6 +244,7 @@ class SourceParser(object): def __init__(self): self._modules = {} # all found modules: key is the module name + self._consistency_checks_failure = False # one or more checks failed def Parse(self, scope, contents): """ @@ -336,6 +337,7 @@ class SourceParser(object): print("Warning: documentation inconsistency in %s:" % scope) print(" Documented options : %s" % sorted_module_options) print(" Options found in getopt(): %s" % sorted_getopt_args) + self._consistency_checks_failure = True # now check the commands: search for strcmp(argv[i], "command". @@ -357,6 +359,7 @@ class SourceParser(object): if not command in doc_commands: print("Warning: undocumented command '%s' in %s" %(command, scope)) + self._consistency_checks_failure = True def _parse_arguments(self, contents, start_index): @@ -438,6 +441,8 @@ class SourceParser(object): return next_position, args + def HasValidationFailure(self): + return self._consistency_checks_failure def GetModuleGroups(self): """ diff --git a/Tools/px_process_module_doc.py b/Tools/px_process_module_doc.py index e2b7ba4448..43467624d5 100755 --- a/Tools/px_process_module_doc.py +++ b/Tools/px_process_module_doc.py @@ -63,9 +63,9 @@ def main(): metavar="DIRECTORY", help="Markdown output directory" " (default DIRECTORY: .)") + parser.add_argument('--no-validation', action='store_true', help="do not fail if consistency checks fail") parser.add_argument('-v', '--verbose', action='store_true', help="verbose output") - args = parser.parse_args() # Check for valid command @@ -84,8 +84,13 @@ def main(): if not scanner.ScanDir(args.src_path, parser): sys.exit(1) + if not args.no_validation and parser.HasValidationFailure(): + print("Error: validation failed") + sys.exit(1) + module_groups = parser.GetModuleGroups() + # Output to Markdown/HTML tables if args.markdown: out = markdownout.MarkdownTablesOutput(module_groups)