10826e83eSopenharmony_ci#!/bin/bash 20826e83eSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd. 30826e83eSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 40826e83eSopenharmony_ci# you may not use this file except in compliance with the License. 50826e83eSopenharmony_ci# You may obtain a copy of the License at 60826e83eSopenharmony_ci# 70826e83eSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 80826e83eSopenharmony_ci# 90826e83eSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 100826e83eSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 110826e83eSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120826e83eSopenharmony_ci# See the License for the specific language governing permissions and 130826e83eSopenharmony_ci# limitations under the License. 140826e83eSopenharmony_ci 150826e83eSopenharmony_ciset -e 160826e83eSopenharmony_ci 170826e83eSopenharmony_ciWORK_SPACE=$(cd $(dirname $0); pwd) 180826e83eSopenharmony_ci 190826e83eSopenharmony_ciCOMMOND_TYPE=$1 200826e83eSopenharmony_ciOHOS_GLUE_DIR=$2 210826e83eSopenharmony_ciOHOS_GLUE_LOG_DIR=$3 220826e83eSopenharmony_ci 230826e83eSopenharmony_ciINTERFACE_DIR=${WORK_SPACE}/ohos_interface 240826e83eSopenharmony_ciINTERFACE_INCLUDE_DIR=${INTERFACE_DIR}/include 250826e83eSopenharmony_ciINTERFACE_OHOS_GLUE_DIR=${INTERFACE_DIR}/ohos_glue 260826e83eSopenharmony_ci 270826e83eSopenharmony_cios_type=$(uname) 280826e83eSopenharmony_ciarch_type=$(uname -m) 290826e83eSopenharmony_ciif [ "$os_type" == "Darwin" ]; then 300826e83eSopenharmony_ci if [ "$arch_type" == "x86_64" ]; then 310826e83eSopenharmony_ci CLANG_FORMAT_DIR=${WORK_SPACE}/../../../prebuilts/clang/ohos/darwin-x86_64/llvm/bin 320826e83eSopenharmony_ci else 330826e83eSopenharmony_ci CLANG_FORMAT_DIR=${WORK_SPACE}/../../../prebuilts/clang/ohos/darwin-arm64/llvm/bin 340826e83eSopenharmony_ci fi 350826e83eSopenharmony_cielse 360826e83eSopenharmony_ci CLANG_FORMAT_DIR=${WORK_SPACE}/../../../prebuilts/clang/ohos/linux-${arch_type}/llvm/bin 370826e83eSopenharmony_cifi 380826e83eSopenharmony_ci 390826e83eSopenharmony_cihandle_copy_dir() { 400826e83eSopenharmony_ci local src_dir=$1 410826e83eSopenharmony_ci local dst_dir=$2 420826e83eSopenharmony_ci 430826e83eSopenharmony_ci local parent_dir=$(dirname ${dst_dir}) 440826e83eSopenharmony_ci [ -n "${dst_dir}" ] && rm -rf ${dst_dir} && mkdir -p ${parent_dir} 450826e83eSopenharmony_ci 460826e83eSopenharmony_ci if [ -d ${src_dir} ] && [ "$(ls -A ${src_dir})" ]; then 470826e83eSopenharmony_ci cp -rf ${src_dir} ${dst_dir} 480826e83eSopenharmony_ci else 490826e83eSopenharmony_ci echo "${src_dir} is not exist or empty" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 500826e83eSopenharmony_ci fi 510826e83eSopenharmony_ci} 520826e83eSopenharmony_ci 530826e83eSopenharmony_cihandle_copy_files() { 540826e83eSopenharmony_ci echo "begin to copy ohos glue files,module name is $1" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 550826e83eSopenharmony_ci 560826e83eSopenharmony_ci if [ "$1" = "base" ]; then 570826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/base ${OHOS_GLUE_DIR}/base 580826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/scripts ${OHOS_GLUE_DIR}/scripts 590826e83eSopenharmony_ci return 600826e83eSopenharmony_ci fi 610826e83eSopenharmony_ci 620826e83eSopenharmony_ci local dir_name=ohos_$1 630826e83eSopenharmony_ci rm -rf ${OHOS_GLUE_DIR}/${dir_name} && mkdir -p ${OHOS_GLUE_DIR}/${dir_name} 640826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/${dir_name}/include ${OHOS_GLUE_DIR}/${dir_name}/include 650826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/${dir_name}/bridge/webview ${OHOS_GLUE_DIR}/${dir_name}/bridge 660826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/${dir_name}/cpptoc/webview ${OHOS_GLUE_DIR}/${dir_name}/cpptoc 670826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/${dir_name}/ctocpp/webview ${OHOS_GLUE_DIR}/${dir_name}/ctocpp 680826e83eSopenharmony_ci} 690826e83eSopenharmony_ci 700826e83eSopenharmony_cihandle_copy_include() { 710826e83eSopenharmony_ci echo "begin to copy ohos interface files" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 720826e83eSopenharmony_ci 730826e83eSopenharmony_ci cp ${INTERFACE_INCLUDE_DIR}/ohos_nweb/* ${WORK_SPACE}/ohos_nweb/include 740826e83eSopenharmony_ci 750826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_INCLUDE_DIR}/ohos_adapter ${WORK_SPACE}/ohos_adapter/interfaces 760826e83eSopenharmony_ci} 770826e83eSopenharmony_ci 780826e83eSopenharmony_cihandle_copy_commond() { 790826e83eSopenharmony_ci local curr_time=$(date +"%Y-%m-%d %H:%M:%S") 800826e83eSopenharmony_ci echo "start time is ${curr_time}" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 810826e83eSopenharmony_ci echo "work space is ${WORK_SPACE}" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 820826e83eSopenharmony_ci echo "ohos glue dir is ${OHOS_GLUE_DIR}" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 830826e83eSopenharmony_ci 840826e83eSopenharmony_ci handle_copy_include 850826e83eSopenharmony_ci 860826e83eSopenharmony_ci handle_copy_files base 870826e83eSopenharmony_ci handle_copy_files nweb 880826e83eSopenharmony_ci handle_copy_files adapter 890826e83eSopenharmony_ci} 900826e83eSopenharmony_ci 910826e83eSopenharmony_cihandle_develop_commond() { 920826e83eSopenharmony_ci local ohos_glue_dir=${1}/${2} 930826e83eSopenharmony_ci [ -n "${ohos_glue_dir}" ] && rm -rf ${ohos_glue_dir} && mkdir -p ${ohos_glue_dir} 940826e83eSopenharmony_ci 950826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/base ${ohos_glue_dir}/base 960826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/scripts ${ohos_glue_dir}/scripts 970826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_nweb/include ${ohos_glue_dir}/ohos_nweb/include 980826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_nweb/bridge/${2} ${ohos_glue_dir}/ohos_nweb/bridge 990826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_nweb/cpptoc/${2} ${ohos_glue_dir}/ohos_nweb/cpptoc 1000826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_nweb/ctocpp/${2} ${ohos_glue_dir}/ohos_nweb/ctocpp 1010826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_adapter/include ${ohos_glue_dir}/ohos_adapter/include 1020826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_adapter/bridge/${2} ${ohos_glue_dir}/ohos_adapter/bridge 1030826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_adapter/cpptoc/${2} ${ohos_glue_dir}/ohos_adapter/cpptoc 1040826e83eSopenharmony_ci handle_copy_dir ${INTERFACE_OHOS_GLUE_DIR}/ohos_adapter/ctocpp/${2} ${ohos_glue_dir}/ohos_adapter/ctocpp 1050826e83eSopenharmony_ci 1060826e83eSopenharmony_ci local file_list=$(find ${ohos_glue_dir}/ohos_*/include -name "*.h") 1070826e83eSopenharmony_ci for file in $file_list 1080826e83eSopenharmony_ci do 1090826e83eSopenharmony_ci clang-format -style="{PointerAlignment: Right}" -i $file 1100826e83eSopenharmony_ci done 1110826e83eSopenharmony_ci 1120826e83eSopenharmony_ci python3 ${ohos_glue_dir}/scripts/translator.py ${2} 1130826e83eSopenharmony_ci 1140826e83eSopenharmony_ci file_list=$(find ${ohos_glue_dir} -type f \( -name "*.h" -o -name "*.cpp" \)) 1150826e83eSopenharmony_ci for file in $file_list 1160826e83eSopenharmony_ci do 1170826e83eSopenharmony_ci clang-format -style=file -i $file 1180826e83eSopenharmony_ci done 1190826e83eSopenharmony_ci} 1200826e83eSopenharmony_ci 1210826e83eSopenharmony_cihandle_translate_commond() { 1220826e83eSopenharmony_ci OHOS_GLUE_MODULE=$1 1230826e83eSopenharmony_ci if [ "${OHOS_GLUE_MODULE}" = "base" ]; then 1240826e83eSopenharmony_ci return 1250826e83eSopenharmony_ci fi 1260826e83eSopenharmony_ci 1270826e83eSopenharmony_ci local curr_time=$(date +"%Y-%m-%d %H:%M:%S") 1280826e83eSopenharmony_ci echo "start time is ${curr_time}" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 1290826e83eSopenharmony_ci echo "begin to translate ohos glue file,module name is ${OHOS_GLUE_MODULE}" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 1300826e83eSopenharmony_ci 1310826e83eSopenharmony_ci local dir_name=ohos_${OHOS_GLUE_MODULE} 1320826e83eSopenharmony_ci local file_list=$(find ${OHOS_GLUE_DIR}/${dir_name}/include -name "*.h") 1330826e83eSopenharmony_ci for file in $file_list 1340826e83eSopenharmony_ci do 1350826e83eSopenharmony_ci ${CLANG_FORMAT_DIR}/clang-format -style="{PointerAlignment: Right}" -i $file 1360826e83eSopenharmony_ci done 1370826e83eSopenharmony_ci 1380826e83eSopenharmony_ci python3 ${OHOS_GLUE_DIR}/scripts/translator.py webview $dir_name >> ${OHOS_GLUE_LOG_DIR}/prepare.log 1390826e83eSopenharmony_ci} 1400826e83eSopenharmony_ci 1410826e83eSopenharmony_cicase "${COMMOND_TYPE}" in 1420826e83eSopenharmony_ci "copy") 1430826e83eSopenharmony_ci handle_copy_commond 1440826e83eSopenharmony_ci ;; 1450826e83eSopenharmony_ci "develop") 1460826e83eSopenharmony_ci OHOS_GLUE_LOG_DIR=./ 1470826e83eSopenharmony_ci dir_name=$(date +"%Y%m%d%H%M%S") 1480826e83eSopenharmony_ci handle_develop_commond ${dir_name} webcore 1490826e83eSopenharmony_ci handle_develop_commond ${dir_name} webview 1500826e83eSopenharmony_ci ;; 1510826e83eSopenharmony_ci "translate") 1520826e83eSopenharmony_ci args=${@:4} 1530826e83eSopenharmony_ci handle_translate_commond $args 1540826e83eSopenharmony_ci ;; 1550826e83eSopenharmony_ci *) 1560826e83eSopenharmony_ci echo "commond ${COMMOND_TYPE} is invalid" >> ${OHOS_GLUE_LOG_DIR}/prepare.log 1570826e83eSopenharmony_ciesac 158