1#!/usr/bin/env python3 2__package__ = 'configurator.pyodide' 3 4from pathlib import Path 5from tempfile import TemporaryDirectory 6 7from scenario_config.default_populator import DefaultValuePopulatingStage 8from scenario_config.pipeline import PipelineObject, PipelineEngine 9from scenario_config.validator import ValidatorConstructionByFileStage, SemanticValidationStage, \ 10 SyntacticValidationStage 11from scenario_config.lxml_loader import LXMLLoadStage 12 13from .pyodide import ( 14 convert_result, write_temp_file, 15 # Todo: add debug switch 16 # is_debug, 17 nuc11_board, nuc11_scenario, scenario_xml_schema_path, datachecks_xml_schema_path 18) 19 20 21def main(board, scenario): 22 pipeline = PipelineEngine(["board_path", "scenario_path", "schema_path", "datachecks_path"]) 23 stages = [ 24 ValidatorConstructionByFileStage(), 25 LXMLLoadStage("schema"), 26 27 LXMLLoadStage("board"), 28 LXMLLoadStage("scenario"), 29 DefaultValuePopulatingStage(), 30 SyntacticValidationStage(), 31 SemanticValidationStage(), 32 ] 33 34 pipeline.add_stages(stages) 35 with TemporaryDirectory() as tmpdir: 36 write_temp_file(tmpdir, { 37 'board.xml': board, 38 'scenario.xml': scenario 39 }) 40 board_file_path = Path(tmpdir) / 'board.xml' 41 scenario_file_path = Path(tmpdir) / 'scenario.xml' 42 43 obj = PipelineObject( 44 board_path=board_file_path, 45 scenario_path=scenario_file_path, 46 schema_path=scenario_xml_schema_path, 47 datachecks_path=datachecks_xml_schema_path 48 ) 49 pipeline.run(obj) 50 51 syntactic_errors = obj.get("syntactic_errors") 52 semantic_errors = obj.get("semantic_errors") 53 return convert_result({"syntactic_errors": syntactic_errors, "semantic_errors": semantic_errors}) 54 55 56def test(): 57 main(nuc11_board, nuc11_scenario) 58 59 60if __name__ == '__main__': 61 test() 62