def main(): # Parse command line arguments parser = argparse.ArgumentParser( description="Process parameter documentation.") parser.add_argument( "-s", "--src-path", default=["../src"], metavar="PATH", nargs='*', help="one or more paths to source files to scan for parameters") parser.add_argument("-x", "--xml", nargs='?', const="parameters.xml", metavar="FILENAME", help="Create XML file" " (default FILENAME: parameters.xml)") parser.add_argument("-i", "--inject-xml", nargs='?', const="parameters_injected.xml", metavar="FILENAME", help="Inject additional param XML file" " (default FILENAME: parameters_injected.xml)") parser.add_argument("-b", "--board", nargs='?', const="", metavar="BOARD", help="Board to create xml parameter xml for") parser.add_argument("-m", "--markdown", nargs='?', const="parameters.md", metavar="FILENAME", help="Create Markdown file" " (default FILENAME: parameters.md)") parser.add_argument('-v', '--verbose', action='store_true', help="verbose output") parser.add_argument( "-o", "--overrides", default="{}", metavar="OVERRIDES", help="a dict of overrides in the form of a json string") args = parser.parse_args() # Check for valid command if not (args.xml or args.markdown): print("Error: You need to specify at least one output method!\n") parser.print_usage() sys.exit(1) # Initialize source scanner and parser scanner = srcscanner.SourceScanner() parser = srcparser.SourceParser() # Scan directories, and parse the files if (args.verbose): print("Scanning source path " + str(args.src_path)) if not scanner.ScanDir(args.src_path, parser): sys.exit(1) if not parser.Validate(): sys.exit(1) param_groups = parser.GetParamGroups() if len(param_groups) == 0: print("Warning: no parameters found") override_dict = json.loads(args.overrides) if len(override_dict.keys()) > 0: for group in param_groups: for param in group.GetParams(): name = param.GetName() if name in override_dict.keys(): val = str(override_dict[param.GetName()]) param.default = val print("OVERRIDING {:s} to {:s}!!!!!".format(name, val)) # Output to XML file if args.xml: if args.verbose: print("Creating XML file " + args.xml) cur_dir = os.path.dirname(os.path.realpath(__file__)) out = xmlout.XMLOutput(param_groups, args.board, os.path.join(cur_dir, args.inject_xml)) out.Save(args.xml) # Output to Markdown/HTML tables if args.markdown: out = markdownout.MarkdownTablesOutput(param_groups) if args.markdown: print("Creating markdown file " + args.markdown) out.Save(args.markdown)
def main(): # Parse command line arguments parser = argparse.ArgumentParser( description="Process parameter documentation.") parser.add_argument("-s", "--src-path", default="../src", metavar="PATH", help="path to source files to scan for parameters") parser.add_argument("-x", "--xml", nargs='?', const="parameters.xml", metavar="FILENAME", help="Create XML file" " (default FILENAME: parameters.xml)") parser.add_argument("-b", "--board", nargs='?', const="", metavar="BOARD", help="Board to create xml parameter xml for") parser.add_argument("-w", "--wiki", nargs='?', const="parameters.wiki", metavar="FILENAME", help="Create DokuWiki file" " (default FILENAME: parameters.wiki)") parser.add_argument("-u", "--wiki-update", nargs='?', const="firmware:parameters", metavar="PAGENAME", help="Update DokuWiki page" " (default PAGENAME: firmware:parameters)") parser.add_argument("--wiki-url", default="https://pixhawk.org", metavar="URL", help="DokuWiki URL" " (default: https://pixhawk.org)") parser.add_argument("--wiki-user", default=os.environ.get('XMLRPCUSER', None), metavar="USERNAME", help="DokuWiki XML-RPC user name" " (default: $XMLRPCUSER environment variable)") parser.add_argument("--wiki-pass", default=os.environ.get('XMLRPCPASS', None), metavar="PASSWORD", help="DokuWiki XML-RPC user password" " (default: $XMLRPCUSER environment variable)") parser.add_argument( "--wiki-summary", metavar="SUMMARY", default="Automagically updated parameter documentation from code.", help="DokuWiki page edit summary") args = parser.parse_args() # Check for valid command if not (args.xml or args.wiki or args.wiki_update): print("Error: You need to specify at least one output method!\n") parser.print_usage() sys.exit(1) # Initialize source scanner and parser scanner = srcscanner.SourceScanner() parser = srcparser.SourceParser() # Scan directories, and parse the files print("Scanning source path " + args.src_path) if not scanner.ScanDir(args.src_path, parser): sys.exit(1) if not parser.Validate(): sys.exit(1) param_groups = parser.GetParamGroups() # Output to XML file if args.xml: print("Creating XML file " + args.xml) out = xmlout.XMLOutput(param_groups, args.board) out.Save(args.xml) # Output to DokuWiki tables if args.wiki or args.wiki_update: out = dokuwikiout.DokuWikiTablesOutput(param_groups) if args.wiki: print("Creating wiki file " + args.wiki) out.Save(args.wiki) if args.wiki_update: if args.wiki_user and args.wiki_pass: print("Updating wiki page " + args.wiki_update) xmlrpc = dokuwikirpc.get_xmlrpc(args.wiki_url, args.wiki_user, args.wiki_pass) xmlrpc.wiki.putPage(args.wiki_update, out.output, {'sum': args.wiki_summary}) else: print( "Error: You need to specify DokuWiki XML-RPC username and password!" ) print("All done!")
def main(): # Parse command line arguments parser = argparse.ArgumentParser( description="Process parameter documentation.") parser.add_argument("-s", "--src-path", default="../src", metavar="PATH", help="path to source files to scan for parameters") parser.add_argument("-x", "--xml", nargs='?', const="parameters.xml", metavar="FILENAME", help="Create XML file" " (default FILENAME: parameters.xml)") parser.add_argument( "-i", "--inject-xml", nargs='?', const="../Tools/parameters_injected.xml", metavar="FILENAME", help="Inject additional param XML file" " (default FILENAME: ../Tools/parameters_injected.xml)") parser.add_argument("-b", "--board", nargs='?', const="", metavar="BOARD", help="Board to create xml parameter xml for") parser.add_argument("-w", "--wiki", nargs='?', const="parameters.wiki", metavar="FILENAME", help="Create DokuWiki file" " (default FILENAME: parameters.wiki)") parser.add_argument("-u", "--wiki-update", nargs='?', const="firmware:parameters", metavar="PAGENAME", help="Update DokuWiki page" " (default PAGENAME: firmware:parameters)") parser.add_argument("--wiki-url", default="https://pixhawk.org", metavar="URL", help="DokuWiki URL" " (default: https://pixhawk.org)") parser.add_argument("--wiki-user", default=os.environ.get('XMLRPCUSER', None), metavar="USERNAME", help="DokuWiki XML-RPC user name" " (default: $XMLRPCUSER environment variable)") parser.add_argument("--wiki-pass", default=os.environ.get('XMLRPCPASS', None), metavar="PASSWORD", help="DokuWiki XML-RPC user password" " (default: $XMLRPCUSER environment variable)") parser.add_argument( "--wiki-summary", metavar="SUMMARY", default="Automagically updated parameter documentation from code.", help="DokuWiki page edit summary") parser.add_argument('-v', '--verbose', action='store_true', help="verbose output") parser.add_argument( "-o", "--overrides", default="{}", metavar="OVERRIDES", help="a dict of overrides in the form of a json string") parser.add_argument('--modules', default=None, action='store', help="list of compiled modules") args = parser.parse_args() # Check for valid command if not (args.xml or args.wiki or args.wiki_update): print("Error: You need to specify at least one output method!\n") parser.print_usage() sys.exit(1) # Initialize source scanner and parser scanner = srcscanner.SourceScanner() parser = srcparser.SourceParser() # Scan directories, and parse the files if (args.verbose): print("Scanning source path " + args.src_path) if args.modules is not None: if not scanner.ScanDir( [os.path.join(args.src_path, p) for p in args.modules.split(',')], parser): sys.exit(1) else: if not scanner.ScanDir([args.src_path], parser): sys.exit(1) if not parser.Validate(): sys.exit(1) param_groups = parser.GetParamGroups() if len(param_groups) == 0: print("Warning: no parameters found") override_dict = json.loads(args.overrides) if len(override_dict.keys()) > 0: for group in param_groups: for param in group.GetParams(): name = param.GetName() if name in override_dict.keys(): val = str(override_dict[param.GetName()]) param.default = val print("OVERRIDING {:s} to {:s}!!!!!".format(name, val)) # Output to XML file if args.xml: if args.verbose: print("Creating XML file " + args.xml) out = xmlout.XMLOutput(param_groups, args.board, os.path.join(args.src_path, args.inject_xml)) out.Save(args.xml) # Output to DokuWiki tables if args.wiki or args.wiki_update: out = dokuwikiout.DokuWikiTablesOutput(param_groups) if args.wiki: print("Creating wiki file " + args.wiki) out.Save(args.wiki) if args.wiki_update: if args.wiki_user and args.wiki_pass: print("Updating wiki page " + args.wiki_update) xmlrpc = dokuwikirpc.get_xmlrpc(args.wiki_url, args.wiki_user, args.wiki_pass) xmlrpc.wiki.putPage(args.wiki_update, out.output, {'sum': args.wiki_summary}) else: print( "Error: You need to specify DokuWiki XML-RPC username and password!" )
def main(): # Parse command line arguments parser = argparse.ArgumentParser( description="Process parameter documentation.") parser.add_argument("-s", "--src-path", default="../src", metavar="PATH", help="path to source files to scan for parameters") parser.add_argument("-x", "--xml", nargs='?', const="parameters.xml", metavar="FILENAME", help="Create XML file" " (default FILENAME: parameters.xml)") parser.add_argument( "-i", "--inject-xml", nargs='?', const="../Tools/parameters_injected.xml", metavar="FILENAME", help="Inject additional param XML file" " (default FILENAME: ../Tools/parameters_injected.xml)") parser.add_argument("-b", "--board", nargs='?', const="", metavar="BOARD", help="Board to create xml parameter xml for") parser.add_argument("-w", "--wiki", nargs='?', const="parameters.wiki", metavar="FILENAME", help="Create DokuWiki file" " (default FILENAME: parameters.wiki)") parser.add_argument("-u", "--wiki-update", nargs='?', const="firmware:parameters", metavar="PAGENAME", help="Update DokuWiki page" " (default PAGENAME: firmware:parameters)") parser.add_argument("--wiki-url", default="https://pixhawk.org", metavar="URL", help="DokuWiki URL" " (default: https://pixhawk.org)") parser.add_argument("--wiki-user", default=os.environ.get('XMLRPCUSER', None), metavar="USERNAME", help="DokuWiki XML-RPC user name" " (default: $XMLRPCUSER environment variable)") parser.add_argument("--wiki-pass", default=os.environ.get('XMLRPCPASS', None), metavar="PASSWORD", help="DokuWiki XML-RPC user password" " (default: $XMLRPCUSER environment variable)") parser.add_argument( "--wiki-summary", metavar="SUMMARY", default="Automagically updated parameter documentation from code.", help="DokuWiki page edit summary") parser.add_argument('-v', '--verbose', action='store_true', help="verbose output") parser.add_argument('--scope', default=None, action='store', help="pass the scope (list of compiled modules)") args = parser.parse_args() # Check for valid command if not (args.xml or args.wiki or args.wiki_update): print("Error: You need to specify at least one output method!\n") parser.print_usage() sys.exit(1) # Initialize source scanner and parser scanner = srcscanner.SourceScanner() parser = srcparser.SourceParser() # Scan directories, and parse the files if (args.verbose): print("Scanning source path " + args.src_path) use_scope = False cmake_scope = scope.Scope() if args.scope: with codecs.open(args.scope, 'r', 'utf-8') as f: try: contents = f.read() f.close() cmake_parser = cmakeparser.CMakeParser() cmake_parser.Parse(cmake_scope, contents) use_scope = True except: use_scope = False pass if use_scope and len(cmake_scope.scope) > 0: if not scanner.ScanDir( [os.path.join(args.src_path, p) for p in cmake_scope.scope], parser): sys.exit(1) else: if not scanner.ScanDir([args.src_path], parser): sys.exit(1) if not parser.Validate(): sys.exit(1) param_groups = parser.GetParamGroups() if len(param_groups) == 0: print("Warning: no parameters found") # Output to XML file if args.xml: if args.verbose: print("Creating XML file " + args.xml) out = xmlout.XMLOutput(param_groups, args.board, os.path.join(args.src_path, args.inject_xml)) out.Save(args.xml) # Output to DokuWiki tables if args.wiki or args.wiki_update: out = dokuwikiout.DokuWikiTablesOutput(param_groups) if args.wiki: print("Creating wiki file " + args.wiki) out.Save(args.wiki) if args.wiki_update: if args.wiki_user and args.wiki_pass: print("Updating wiki page " + args.wiki_update) xmlrpc = dokuwikirpc.get_xmlrpc(args.wiki_url, args.wiki_user, args.wiki_pass) xmlrpc.wiki.putPage(args.wiki_update, out.output, {'sum': args.wiki_summary}) else: print( "Error: You need to specify DokuWiki XML-RPC username and password!" )