1#!/usr/bin/env python3
2__package__ = 'configurator.pyodide'
3
4import os
5from tempfile import TemporaryDirectory
6from pathlib import Path
7
8from launch_config.launch_cfg_gen import main as launch_cfg_gen_main
9
10from .pyodide import convert_result, nuc11_board, nuc11_scenario, write_temp_file
11
12
13def generate_launch_script(board, scenario, user_vm_id=0):
14    """
15
16    :param board: board xml text
17    :param scenario: scenario xml text
18    :param user_vm_id: the vm which you want to generate launch script, will generate all launch script if it set to zero
19    """
20    launch_scripts = {}
21    with TemporaryDirectory() as tmpdir:
22        # Write file to dir
23        write_temp_file(tmpdir, {
24            'board.xml': board,
25            'scenario.xml': scenario
26        })
27
28        # define path
29        board_file_path = Path(tmpdir) / 'board.xml'
30        scenario_file_path = Path(tmpdir) / 'scenario.xml'
31        launch_script_output_dir = Path(tmpdir) / 'output'
32
33        # generate launch script
34        launch_cfg_gen_main(board_file_path, scenario_file_path, user_vm_id, launch_script_output_dir)
35
36        # get output and convert it to {filename: content}
37        for filename in os.listdir(launch_script_output_dir):
38            abs_name = launch_script_output_dir / str(filename)
39            launch_scripts[filename] = open(abs_name, encoding='utf-8').read()
40    return convert_result(launch_scripts)
41
42
43main = generate_launch_script
44
45
46def test():
47    main(nuc11_board, nuc11_scenario)
48
49
50if __name__ == '__main__':
51    test()
52