import argparse
import sys
import os
import shutil
import subprocess
INTERFACE_PATH = "interface/sdk-js"
PROCESS_INTEROP = "interface/sdk-js/build-tools/process_label_noninterop.js"
PROCESS_GLOBAL_IMPORT = "interface/sdk-js/build-tools/process_global_import.js"
def process_interop(options, sub_input, sub_output, export_flag):
nodejs = os.path.abspath(options.node_js)
tool = os.path.abspath(os.path.join(options.source_root_dir, PROCESS_INTEROP))
cwd_dir = os.path.abspath(os.path.join(
options.source_root_dir, INTERFACE_PATH))
intermediates_output = os.path.abspath(options.intermediates_output)
if options.is_pre == "true":
intermediates_output = os.path.dirname(os.path.abspath(options.intermediates_output))
input_dir = intermediates_output + sub_input
output_dir = intermediates_output + sub_output
os.makedirs(output_dir, exist_ok=True)
process = subprocess.run([nodejs, tool, "--input", input_dir,
"--output", output_dir, "--export", export_flag], shell=False,
cwd=os.path.abspath(os.path.join(
options.source_root_dir, cwd_dir)),
stdout=subprocess.PIPE)
return process
def delete_directory(dir_path):
if not os.path.exists(dir_path):
return
if not os.path.isdir(dir_path):
return
try:
shutil.rmtree(dir_path)
except OSError as e:
return
def process_global_import(options, sub_input, sub_output, export_flag):
nodejs = os.path.abspath(options.node_js)
tool = os.path.abspath(os.path.join(options.source_root_dir, PROCESS_GLOBAL_IMPORT))
cwd_dir = os.path.abspath(os.path.join(
options.source_root_dir, INTERFACE_PATH))
intermediates_output = os.path.abspath(options.intermediates_output)
if options.is_pre == "true":
intermediates_output = os.path.dirname(os.path.abspath(options.intermediates_output))
input_dir = intermediates_output + sub_input
output_dir = intermediates_output + sub_output
os.makedirs(output_dir, exist_ok=True)
process = subprocess.run([nodejs, tool, "--input", input_dir,
"--output", output_dir, "--export", export_flag], shell=False,
cwd=os.path.abspath(os.path.join(
options.source_root_dir, cwd_dir)),
stdout=subprocess.PIPE)
return process
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--intermediates-output', required=True)
parser.add_argument('--source-root-dir', required=True)
parser.add_argument('--node-js', required=True)
parser.add_argument('--is-pre', required=True)
options = parser.parse_args()
if options.is_pre == "true":
process_interop(options, "/ohos_dynamic_two/api", "/ohos_dynamic_two/api", "false")
process_interop(options, "/ohos_dynamic_two/component", "/ohos_dynamic_two/component", "true")
process_global_import(options, "/ohos_dynamic_two/api", "/ohos_dynamic_two/api", "false")
else:
process_global_import(options, "/dynamic-interop/api", "/dynamic-interop/api", "true")
delete_path = os.path.join(os.path.abspath(options.intermediates_output), "dynamic-interop", "component")
delete_directory(delete_path)
process_interop(options, "/static-interop/declaration/api", "/static-interop/declaration/api", "false")
if __name__ == '__main__':
sys.exit(main())