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