def config_corrections(options, cfgname): """ overwrite configuration wiht options arguments @param options (Value) List of argparse options @param cfgname (string) Name of the configuration @return (dict) The configuration info """ CFGS.cfgname = cfgname cfg = CFGS.configs[cfgname] # still in lower case if options.val_root != '': cfg['val_root'] = options.val_root # parsing for proper naming CFGS.compute_vnv_info() print(' +> ' + cfgname + ': ' + ', '.join(cfg['VALIDATION'].keys())) if options.cleanup: cfg['REBUILD'] = 2 return cfg
def main(): """ Main program for the compilation of the documentation of the telemac-mascaret system """ # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # ~~ Reads config file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ print('\n\nLoading Options and Configurations\n'+'~'*72+'\n') parser = ArgumentParser( formatter_class=RawDescriptionHelpFormatter, description=('''\n By Default all the documentation are generated\n use the options --validation/reference/user/release/theory to compile only one ''')) parser = add_config_argument(parser) parser.add_argument( "-v", "--verbose", action="store_true", dest="verbose", default=False, help="Will display listing for all commands") parser.add_argument( "-m", "--modules", dest="modules", default='', help="specify the list modules (, separated), default is all of them") parser.add_argument( "-M", "--misc", dest="misc", default='', help="specify the list of misc documentation (, separated) to compile, " "default is all of them") parser.add_argument( "--validation", action="store_true", dest="validation", default=False, help="Will generate the validation documentation") parser.add_argument( "--case-list", dest="case_list", default='', help="List of cas to include in the validation documentation" "separated by ',' (default all of them)") parser.add_argument( "--reference", action="store_true", dest="reference", default=False, help="Will generate the reference documentation") parser.add_argument( "--user", action="store_true", dest="user", default=False, help="Will generate the user documentation") parser.add_argument( "--release", action="store_true", dest="release_note", default=False, help="Will generate the release note") parser.add_argument( "--theory", action="store_true", dest="theory_guide", default=False, help="Will generate the theory guide") parser.add_argument( "--clean", action="store_true", dest="cleanup", default=False, help="Will remove all temporary file generated by pdflatex") parser.add_argument( "--fullclean", action="store_true", dest="fullcleanup", default=False, help="Same as clean but removes the pdf as well") # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # ~~~~ Environment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ options = parser.parse_args() update_config(options) # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # ~~~~ Works for all configurations unless specified ~~~~~~~~~~~~~~~ # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # ~~~~ Compile the valiation documentation doall = not (options.validation or options.user or options.reference or options.release_note or options.theory_guide) cfg = CFGS.configs[CFGS.cfgname] # still in lower case root = CFGS.get_root() # Get what i to be compiled # By default everything if something is defined compiling only that if options.modules != '': module_list = options.modules.split(',') else: # all modules module_list = ['artemis', 'stbtel', 'sisyphe', 'postel3d', 'telemac2d', 'telemac3d', 'tomawac', 'waqtel', 'telapy', 'mascaret', 'gaia', 'nestor', 'khione'] if options.misc != '': misc_list = options.misc.split(',') module_list = [] else: # all docs misc_list = ['developer_guide', 'software_quality_plan', 'TelemacDocTemplate', 'git_guide', 'doxypydocs'] # If a module was specified or a specific documentation for modules # not compiling Misc documentation if options.modules != '' or not doall: misc_list = [] CFGS.compute_vnv_info() # Get version in config if it exist use trunk otherwise version = cfg.get('version', 'trunk') # Initialise output message output_mess = '\n\n' # Look on all the modules for the documentation for code_name in module_list: print('\nCompilation of the documentation for ' + code_name + '\n'+'~'*72) # list of what to do for the module todo = [] if options.validation or doall: if code_name not in ['telapy', 'mascaret']: # Building Validation LaTeX file doc_dir = path.join(root, 'documentation', code_name, 'validation') chdir(doc_dir) if options.case_list != '': list_of_case = options.case_list.split(',') else: list_of_case = list(cfg['VALIDATION'][code_name].keys()) list_of_case.remove('path') skiped_case = \ create_case_list_file( doc_dir, cfg['VALIDATION'][code_name]['path'], list_of_case, options.cleanup or options.fullcleanup) for case in skiped_case: output_mess += r' - /!\ Missing LaTeX file for ' + \ case+'\n' todo.append('validation') if options.reference or doall: if code_name not in ['telapy', 'mascaret', 'nestor']: # Path to the dictionary dictionary = path.join(root, 'sources', code_name, code_name+'.dico') # Path to latex File latex_file = path.join(root, 'documentation', code_name, 'reference', 'latex', 'Corpus.tex') # English only for now lng = '2' # Path to bin directory exe_path = path.join(\ root, 'builds', CFGS.cfgname, 'bin', 'damocles'+cfg['SYSTEM']['sfx_exe']) generate_ref_from_dict(\ exe_path, dictionary, latex_file, lng, options.cleanup or options.fullcleanup, options.verbose) todo.append('reference') if options.user or doall: if code_name not in ['mascaret']: # Normal Compilation of a LaTeX file todo.append('user') if options.theory_guide or doall: # theory guide only available for telemac3d if code_name in ['telemac3d', 'mascaret', 'waqtel']: todo.append('theory_guide') for doc_type in todo: print('\n ~> Compilation of the {} documentation'\ .format(doc_type)) doc_dir = path.join(root, 'documentation', code_name, doc_type) chdir(doc_dir) # Check if the file exist if path.exists(path.join(doc_dir, code_name + "_" + doc_type + ".tex")): compile_doc(doc_dir, code_name+'_'+doc_type, version, options.cleanup, options.fullcleanup, options.verbose) else: raise TelemacException(\ " - Error for {} {}, {}.tex " "not found ".format(code_name, path.basename(doc_dir), code_name+"_"+doc_type)) if not (options.cleanup or options.fullcleanup): output_mess += ' - Created %s_%s_%s.pdf\n' % \ (code_name, doc_type, version) # List of the other documentation print('\nCompilation of the documentation for Misc' + '\n'+'~'*72) for doc in misc_list: print('\n ~> Compilation of the {} documentation'.format(doc)) doc_dir = path.join(root, 'documentation', 'Misc', doc) if doc == 'notebook': notebook_dir = path.join(root, 'notebooks') generate_notebook_pdf(doc_dir, notebook_dir) elif doc in ['doxydocs', 'doxypydocs']: generate_doxygen(doc, options.verbose) else: chdir(doc_dir) if path.exists(path.join(doc_dir, doc + ".tex")): compile_doc(doc_dir, doc, version, options.cleanup, options.fullcleanup, options.verbose) else: raise TelemacException(\ " - Error in {}, {}.tex " "not found ".format(path.basename(doc_dir), doc)) if not (options.cleanup or options.fullcleanup) or \ doc not in ['notebooks', 'doxydocs', 'doxypydocs']: output_mess += ' - Created %s_%s.pdf\n' % \ (doc, version) print(output_mess) print('\n\n'+'~'*72) # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # ~~~~ Jenkins' success message ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ print('\n\nMy work is done\n\n') sys.exit(0)
def main(): """ Main program for the execution of damocles """ # ~~ Reads config file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ print('\n\nLoading Options and Configurations\n' + '~' * 72 + '\n') parser = ArgumentParser() parser = add_config_argument(parser) parser.add_argument(\ "-m", "--modules", dest="modules", default='', help="specify the list modules, default is "\ "taken from config file") parser.add_argument(\ "--dump", action="store_true", dest="dump", default=False, help="Will dump a reordered dictionary by rubrique") parser.add_argument(\ "--dump2", action="store_true", dest="dump2", default=False, help="Will dump a reordered dictionary by index") parser.add_argument(\ "--eficas", action="store_true", dest="eficas", default=False, help="Will generate the eficas Catalogue from the dictionary") parser.add_argument(\ "--latex", action="store_true", dest="latex", default=False, help="Will generate the LaTeX file for the reference manual") # ~~~~ Environment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ args = parser.parse_args() # path to the root # ~~~~ Works for all configurations unless specified ~~~~~~~~~~~~~~~ update_config(args) cfg = CFGS.configs[CFGS.cfgname] # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # Defining which modules to use if args.modules is '': module_list = [ 'artemis', 'postel3d', 'stbtel', 'sisyphe', 'telemac2d', 'telemac3d', 'tomawac', 'waqtel', 'gaia', 'khione' ] else: module_list = args.modules.split(';') # Identify Root value CFGS.compute_vnv_info() root = CFGS.get_root() exe_path = path.join(root, 'builds', CFGS.cfgname,\ 'bin', 'damocles'+\ cfg['SYSTEM']['sfx_exe']) # Looping on all modules for module in module_list: module_path = path.join(root, 'sources', module) if args.dump: input_dict = path.join(module_path, module + ".dico") output_dict = path.join(module_path, module + "2.dico") gen_dump(exe_path, input_dict, output_dict) if args.dump2: input_dict = path.join(module_path, module + ".dico") output_dict = path.join(module_path, module + "2.dico") gen_dump2(exe_path, input_dict, output_dict) if args.eficas: # Creating eficas folder and __init__ if it does not exists eficas_path = path.join(root, 'scripts', 'python3', 'eficas') if not path.exists(eficas_path): mkdir(eficas_path) with open(path.join(eficas_path, '__init__.py'), 'w') as fobj: fobj.write("#! /usr/bin/env python") fobj.write("# -*- coding: utf-8 -*") input_dict = path.join(module_path, module + ".dico") input_dep = path.join(module_path, module + ".dico.dep") fancy_module = module cata_name = path.join(eficas_path, fancy_module + "_cata_auto.py") enum_name = path.join(eficas_path, fancy_module + "_enum_auto.py") ts_path = eficas_path gen_cata(module.upper(), exe_path, input_dict, input_dep, cata_name, enum_name, ts_path + path.sep) if args.latex: input_dict = path.join(module_path, module + ".dico") latex_name = path.join(root, 'documentation', module, 'reference',\ 'latex', 'Corpus.tex') # English only lng = '2' gen_latex(exe_path, input_dict, latex_name, lng) # ~~~~ Compile the valiation documentation print('\n\n' + '~' * 72) # ~~~~ Jenkins' success message ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ print('\n\nMy work is done\n\n') sys.exit(0)