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, SyntacticValidationStage 10from scenario_config.xml_loader import XMLLoadStage 11 12from .pyodide import ( 13 convert_result, write_temp_file, 14 nuc11_board, board_xml_schema_path 15) 16 17 18def main(board): 19 pipeline = PipelineEngine(["board_path", "schema_path", "datachecks_path"]) 20 pipeline.add_stages([ 21 ValidatorConstructionByFileStage(), 22 XMLLoadStage("board"), 23 SyntacticValidationStage(etree_tag = "board"), 24 ]) 25 26 try: 27 with TemporaryDirectory() as tmpdir: 28 write_temp_file(tmpdir, { 29 'board.xml': board 30 }) 31 board_file_path = Path(tmpdir) / 'board.xml' 32 33 obj = PipelineObject( 34 board_path=board_file_path, 35 schema_path=board_xml_schema_path, 36 datachecks_path=None 37 ) 38 pipeline.run(obj) 39 40 validate_result = obj.get("syntactic_errors") 41 return "\n\n".join(map(lambda x: x["message"], validate_result)) 42 except Exception as e: 43 return str(e) 44 45 46def test(): 47 print(main(nuc11_board)) 48 49 50if __name__ == '__main__': 51 test() 52