10826e83eSopenharmony_ci#!/usr/bin/env python 20826e83eSopenharmony_ci# -*- coding: utf-8 -*- 30826e83eSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 40826e83eSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 50826e83eSopenharmony_ci# you may not use this file except in compliance with the License. 60826e83eSopenharmony_ci# You may obtain a copy of the License at 70826e83eSopenharmony_ci# 80826e83eSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 90826e83eSopenharmony_ci# 100826e83eSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 110826e83eSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 120826e83eSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130826e83eSopenharmony_ci# See the License for the specific language governing permissions and 140826e83eSopenharmony_ci# limitations under the License. 150826e83eSopenharmony_ci 160826e83eSopenharmony_ciimport sys 170826e83eSopenharmony_ciimport os 180826e83eSopenharmony_ciimport argparse 190826e83eSopenharmony_ciimport shutil 200826e83eSopenharmony_ci 210826e83eSopenharmony_ciWORK_SPACE = os.path.dirname(os.path.abspath(__file__)) 220826e83eSopenharmony_ciPROJECT_DIR = os.path.dirname(os.path.dirname(os.path.dirname(WORK_SPACE))) 230826e83eSopenharmony_ci 240826e83eSopenharmony_cisys.path.append(os.path.join(PROJECT_DIR, 'build')) 250826e83eSopenharmony_cisys.path.append(os.path.join(PROJECT_DIR, 'build/hb')) 260826e83eSopenharmony_cifrom hb.util import log_util # noqa: E402 270826e83eSopenharmony_cifrom scripts.util import file_utils # noqa: E402 280826e83eSopenharmony_cifrom scripts.util import build_utils # noqa: E402 290826e83eSopenharmony_ci 300826e83eSopenharmony_ciINTERFACE_DIR = os.path.join(WORK_SPACE, 'ohos_interface') 310826e83eSopenharmony_ciINTERFACE_INCLUDE_DIR = os.path.join(INTERFACE_DIR, 'include') 320826e83eSopenharmony_ciINTERFACE_OHOS_GLUE_DIR = os.path.join(INTERFACE_DIR, 'ohos_glue') 330826e83eSopenharmony_ci 340826e83eSopenharmony_cidef copy_dir(src_dir: str, dst_dir: str): 350826e83eSopenharmony_ci log_util.LogUtil.hb_info("begin to copy dir from '{}' to '{}'".format(src_dir, dst_dir)) 360826e83eSopenharmony_ci if os.path.isdir(dst_dir): 370826e83eSopenharmony_ci shutil.rmtree(dst_dir) 380826e83eSopenharmony_ci 390826e83eSopenharmony_ci if os.path.isdir(src_dir) and os.listdir(src_dir): 400826e83eSopenharmony_ci shutil.copytree(src_dir, dst_dir) 410826e83eSopenharmony_ci 420826e83eSopenharmony_ci source_files = [] 430826e83eSopenharmony_ci for root, dirs, files in os.walk(src_dir): 440826e83eSopenharmony_ci for name in files: 450826e83eSopenharmony_ci source_files.append(os.path.join(root, name)) 460826e83eSopenharmony_ci return source_files 470826e83eSopenharmony_ci 480826e83eSopenharmony_cidef copy_files(src_dir: str, dst_dir: str): 490826e83eSopenharmony_ci log_util.LogUtil.hb_info("begin to copy files from '{}' to '{}'".format(src_dir, dst_dir)) 500826e83eSopenharmony_ci source_files = [] 510826e83eSopenharmony_ci for item in os.listdir(src_dir): 520826e83eSopenharmony_ci src_file = os.path.join(src_dir, item) 530826e83eSopenharmony_ci dst_file = os.path.join(dst_dir, item) 540826e83eSopenharmony_ci if os.path.isfile(src_file): 550826e83eSopenharmony_ci source_files.append(src_file) 560826e83eSopenharmony_ci shutil.copy2(src_file, dst_file) 570826e83eSopenharmony_ci return source_files 580826e83eSopenharmony_ci 590826e83eSopenharmony_cidef copy_include(): 600826e83eSopenharmony_ci log_util.LogUtil.hb_info("begin to copy include dir") 610826e83eSopenharmony_ci nweb_include = os.path.join('ohos_nweb', 'include') 620826e83eSopenharmony_ci include_source_files = copy_files(os.path.join(INTERFACE_INCLUDE_DIR, 'ohos_nweb'), 630826e83eSopenharmony_ci os.path.join(WORK_SPACE, nweb_include)) 640826e83eSopenharmony_ci 650826e83eSopenharmony_ci adapter_include = os.path.join('ohos_adapter', 'interfaces') 660826e83eSopenharmony_ci include_source_files += copy_dir(os.path.join(INTERFACE_INCLUDE_DIR, 'ohos_adapter'), 670826e83eSopenharmony_ci os.path.join(WORK_SPACE, adapter_include)) 680826e83eSopenharmony_ci return include_source_files 690826e83eSopenharmony_ci 700826e83eSopenharmony_cidef copy_glue_base(glue_dir: str): 710826e83eSopenharmony_ci log_util.LogUtil.hb_info("begin to copy glue base dir") 720826e83eSopenharmony_ci base_dir = os.path.join(glue_dir, 'base') 730826e83eSopenharmony_ci base_source_files = copy_dir(os.path.join(INTERFACE_OHOS_GLUE_DIR, 'base'), base_dir) 740826e83eSopenharmony_ci 750826e83eSopenharmony_ci script_dir = os.path.join(glue_dir, 'scripts') 760826e83eSopenharmony_ci base_source_files += copy_dir(os.path.join(INTERFACE_OHOS_GLUE_DIR, 'scripts'), script_dir) 770826e83eSopenharmony_ci return base_source_files 780826e83eSopenharmony_ci 790826e83eSopenharmony_cidef copy_glue_module(glue_dir: str, module_name: str): 800826e83eSopenharmony_ci dir_name = 'ohos_' + module_name; 810826e83eSopenharmony_ci log_util.LogUtil.hb_info("begin to copy glue '{}' dir".format(dir_name)) 820826e83eSopenharmony_ci dst_dir = os.path.join(glue_dir, dir_name) 830826e83eSopenharmony_ci if os.path.isdir(dst_dir): 840826e83eSopenharmony_ci shutil.rmtree(dst_dir) 850826e83eSopenharmony_ci 860826e83eSopenharmony_ci src_dir = os.path.join(INTERFACE_OHOS_GLUE_DIR, dir_name) 870826e83eSopenharmony_ci module_source_files = copy_dir(os.path.join(src_dir, 'include'), os.path.join(dst_dir, 'include')) 880826e83eSopenharmony_ci module_source_files += copy_dir(os.path.join(os.path.join(src_dir, 'bridge'), 'webview'), 890826e83eSopenharmony_ci os.path.join(dst_dir, 'bridge')) 900826e83eSopenharmony_ci module_source_files += copy_dir(os.path.join(os.path.join(src_dir, 'cpptoc'), 'webview'), 910826e83eSopenharmony_ci os.path.join(dst_dir, 'cpptoc')) 920826e83eSopenharmony_ci module_source_files += copy_dir(os.path.join(os.path.join(src_dir, 'ctocpp'), 'webview'), 930826e83eSopenharmony_ci os.path.join(dst_dir, 'ctocpp')) 940826e83eSopenharmony_ci return module_source_files 950826e83eSopenharmony_ci 960826e83eSopenharmony_cidef main(): 970826e83eSopenharmony_ci parser = argparse.ArgumentParser() 980826e83eSopenharmony_ci parser.add_argument('--command-type', required=True) 990826e83eSopenharmony_ci parser.add_argument('--ohos-glue-dir', required=True) 1000826e83eSopenharmony_ci parser.add_argument('--outfile', required=True) 1010826e83eSopenharmony_ci parser.add_argument('--depfile', required=False) 1020826e83eSopenharmony_ci args = parser.parse_args() 1030826e83eSopenharmony_ci 1040826e83eSopenharmony_ci if args.command_type == "include": 1050826e83eSopenharmony_ci source_file_list = copy_include() 1060826e83eSopenharmony_ci elif args.command_type == "base": 1070826e83eSopenharmony_ci source_file_list = copy_glue_base(args.ohos_glue_dir) 1080826e83eSopenharmony_ci else: 1090826e83eSopenharmony_ci source_file_list = copy_glue_module(args.ohos_glue_dir, args.command_type) 1100826e83eSopenharmony_ci 1110826e83eSopenharmony_ci file_utils.write_file(args.outfile, '\n'.join(source_file_list)) 1120826e83eSopenharmony_ci 1130826e83eSopenharmony_ci if args.depfile: 1140826e83eSopenharmony_ci _dep_files = [] 1150826e83eSopenharmony_ci _dep_files.extend(source_file_list) 1160826e83eSopenharmony_ci _dep_files.sort() 1170826e83eSopenharmony_ci build_utils.write_depfile(args.depfile, 1180826e83eSopenharmony_ci args.outfile, 1190826e83eSopenharmony_ci _dep_files, 1200826e83eSopenharmony_ci add_pydeps=False) 1210826e83eSopenharmony_ci 1220826e83eSopenharmony_ciif __name__ == '__main__': 1230826e83eSopenharmony_ci sys.exit(main()) 1240826e83eSopenharmony_ci 125