+++ /dev/null
-# Copyright (C) 2018 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-
-from . import *
-from .. import *
-from .. import utils
-from ..request_types import *
-
-import os
-import shutil
-import subprocess
-
-def run(build_dirs, requests, common_vars, **kwargs):
- for bd in build_dirs:
- os.makedirs(bd.format(**common_vars), exist_ok=True)
- for request in requests:
- status = run_helper(request, common_vars, **kwargs)
- if status != 0:
- print("!!! ERROR executing above command line: exit code %d" % status)
- return 1
- print("All data build commands executed")
- return 0
-
-def run_helper(request, common_vars, is_windows, tool_dir, tool_cfg=None, **kwargs):
- if isinstance(request, PrintFileRequest):
- output_path = "{DIRNAME}/{FILENAME}".format(
- DIRNAME = utils.dir_for(request.output_file).format(**common_vars),
- FILENAME = request.output_file.filename,
- )
- print("Printing to file: %s" % output_path)
- with open(output_path, "w") as f:
- f.write(request.content)
- return 0
- if isinstance(request, CopyRequest):
- input_path = "{DIRNAME}/{FILENAME}".format(
- DIRNAME = utils.dir_for(request.input_file).format(**common_vars),
- FILENAME = request.input_file.filename,
- )
- output_path = "{DIRNAME}/{FILENAME}".format(
- DIRNAME = utils.dir_for(request.output_file).format(**common_vars),
- FILENAME = request.output_file.filename,
- )
- print("Copying file to: %s" % output_path)
- shutil.copyfile(input_path, output_path)
- return 0
- if isinstance(request, VariableRequest):
- # No-op
- return 0
-
- assert isinstance(request.tool, IcuTool)
- if is_windows:
- cmd_template = "{TOOL_DIR}/{TOOL}/{TOOL_CFG}/{TOOL}.exe {{ARGS}}".format(
- TOOL_DIR = tool_dir,
- TOOL_CFG = tool_cfg,
- TOOL = request.tool.name,
- **common_vars
- )
- else:
- cmd_template = "{TOOL_DIR}/{TOOL} {{ARGS}}".format(
- TOOL_DIR = tool_dir,
- TOOL = request.tool.name,
- **common_vars
- )
-
- if isinstance(request, RepeatedExecutionRequest):
- for loop_vars in utils.repeated_execution_request_looper(request):
- command_line = utils.format_repeated_request_command(
- request,
- cmd_template,
- loop_vars,
- common_vars
- )
- if is_windows:
- # Note: this / to \ substitution may be too aggressive?
- command_line = command_line.replace("/", "\\")
- print("Running: %s" % command_line)
- res = subprocess.run(command_line, shell=True)
- if res.returncode != 0:
- return res.returncode
- return 0
- if isinstance(request, SingleExecutionRequest):
- command_line = utils.format_single_request_command(
- request,
- cmd_template,
- common_vars
- )
- if is_windows:
- # Note: this / to \ substitution may be too aggressive?
- command_line = command_line.replace("/", "\\")
- print("Running: %s" % command_line)
- res = subprocess.run(command_line, shell=True)
- return res.returncode
- assert False