16e7c69efSopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd. 26e7c69efSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 36e7c69efSopenharmony_ci# you may not use this file except in compliance with the License. 46e7c69efSopenharmony_ci# You may obtain a copy of the License at 56e7c69efSopenharmony_ci 66e7c69efSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 76e7c69efSopenharmony_ci 86e7c69efSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 96e7c69efSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 106e7c69efSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 116e7c69efSopenharmony_ci# See the License for the specific language governing permissions and 126e7c69efSopenharmony_ci# limitations under the License. 136e7c69efSopenharmony_ci 146e7c69efSopenharmony_ci#!/bin/bash 156e7c69efSopenharmony_ci 166e7c69efSopenharmony_ciCUR_PATH=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd) 176e7c69efSopenharmony_ciBASE_PATH=$(dirname ${CUR_PATH}) 186e7c69efSopenharmony_ci 196e7c69efSopenharmony_ci#时间统计 206e7c69efSopenharmony_cistartTime=`date +%Y%m%d-%H:%M:%S` 216e7c69efSopenharmony_cistartTime_s=`date +%s` 226e7c69efSopenharmony_ci 236e7c69efSopenharmony_ci#npm 246e7c69efSopenharmony_cinpm config set @ohos:registry=https://repo.harmonyos.com/npm/ 256e7c69efSopenharmony_ci 266e7c69efSopenharmony_ci#ohpm 276e7c69efSopenharmony_ci#ohpm config set @ohos:registry=https://repo.harmonyos.com/ohpm/ 286e7c69efSopenharmony_ci 296e7c69efSopenharmony_ciTEST_HAP_PATH=entry/build/default/outputs/ohosTest/entry-ohosTest-unsigned.hap 306e7c69efSopenharmony_ciHAP_PATH=entry/build/default/outputs/default/entry-default-unsigned.hap 316e7c69efSopenharmony_ciSTAGE_TEST_HAP_PATH=product/build/default/outputs/ohosTest/product-ohosTest-unsigned.hap 326e7c69efSopenharmony_ciSTAGE_HAP_PATH=product/build/default/outputs/default/product-default-unsigned.hap 336e7c69efSopenharmony_ciTIME=16 346e7c69efSopenharmony_ciRESOLVE=0 356e7c69efSopenharmony_ci 366e7c69efSopenharmony_ciarg_sign="true" 376e7c69efSopenharmony_ciarg_sdk_path=${BASE_PATH}/sdk 386e7c69efSopenharmony_ciarg_full_sdk_path=${BASE_PATH}/sdk-full 396e7c69efSopenharmony_ciarg_help="0" 406e7c69efSopenharmony_ciarg_compile_dir="" 416e7c69efSopenharmony_ciarg_jdk="" 426e7c69efSopenharmony_ciarg_node="" 436e7c69efSopenharmony_ciarg_ohpm="false" 446e7c69efSopenharmony_ciarg_p="" 456e7c69efSopenharmony_ci 466e7c69efSopenharmony_ciurl="" 476e7c69efSopenharmony_citag_url='url=' 486e7c69efSopenharmony_ciname="" 496e7c69efSopenharmony_citag_name='name=' 506e7c69efSopenharmony_cibranch="" 516e7c69efSopenharmony_citag_branch='branch=' 526e7c69efSopenharmony_cifull_list=() 536e7c69efSopenharmony_citag_full_list='fullSdkAssembleList=' 546e7c69efSopenharmony_cibasic_list=() 556e7c69efSopenharmony_citag_basic_list='basicSignList=' 566e7c69efSopenharmony_cicore_list=() 576e7c69efSopenharmony_citag_core_list='coreSignList=' 586e7c69efSopenharmony_cisystem_app_list=() 596e7c69efSopenharmony_citag_system_app_list='systemAppList=' 606e7c69efSopenharmony_cinormal_list=() 616e7c69efSopenharmony_cipublic_list=() 626e7c69efSopenharmony_ci#没测试用例 636e7c69efSopenharmony_cisimple_list=() 646e7c69efSopenharmony_ci 656e7c69efSopenharmony_cifunction print_help() { 666e7c69efSopenharmony_ci cat <<EOF 676e7c69efSopenharmony_ci use assembleHap [options] <mainclass> [args...] 686e7c69efSopenharmony_ci 696e7c69efSopenharmony_ci --p=config path 706e7c69efSopenharmony_ci --sign=true/false - Whether the signature (default:$arg_sign) 716e7c69efSopenharmony_ci --sdk_path=[public sdk absolute address] (default:$arg_sdk_path) 726e7c69efSopenharmony_ci --full_sdk_path=[full sdk absolute address] (default:$arg_full_sdk_path) 736e7c69efSopenharmony_ci --ohpm=true/false -whether use ohpm (default:$arg_ohpm) 746e7c69efSopenharmony_ci --help - prints help screen 756e7c69efSopenharmony_ci 766e7c69efSopenharmony_ciEOF 776e7c69efSopenharmony_ci} 786e7c69efSopenharmony_ci 796e7c69efSopenharmony_cifunction parse_arguments() { 806e7c69efSopenharmony_ci local helperKey=""; 816e7c69efSopenharmony_ci local helperValue=""; 826e7c69efSopenharmony_ci local current=""; 836e7c69efSopenharmony_ci 846e7c69efSopenharmony_ci while [ "$1" != "" ]; do 856e7c69efSopenharmony_ci current=$1; 866e7c69efSopenharmony_ci helperKey=${current#*--}; 876e7c69efSopenharmony_ci helperKey=${helperKey%%=*}; 886e7c69efSopenharmony_ci helperKey=$(echo "$helperKey" | tr '-' '_'); 896e7c69efSopenharmony_ci helperValue=${current#*=}; 906e7c69efSopenharmony_ci if [ "$helperValue" == "$current" ]; then 916e7c69efSopenharmony_ci helperValue="1"; 926e7c69efSopenharmony_ci fi 936e7c69efSopenharmony_ci # echo "eval arg_$helperKey=\"$helperValue\""; 946e7c69efSopenharmony_ci 956e7c69efSopenharmony_ci eval "arg_$helperKey=\"$helperValue\""; 966e7c69efSopenharmony_ci shift 976e7c69efSopenharmony_ci done 986e7c69efSopenharmony_ci} 996e7c69efSopenharmony_ci 1006e7c69efSopenharmony_ciparse_arguments ${@}; 1016e7c69efSopenharmony_ci 1026e7c69efSopenharmony_ciif [ "$arg_help" != "0" ]; then 1036e7c69efSopenharmony_ci print_help; 1046e7c69efSopenharmony_ci exit 1; 1056e7c69efSopenharmony_cifi 1066e7c69efSopenharmony_ci 1076e7c69efSopenharmony_ciif [ "$arg_p" == "" ]; then 1086e7c69efSopenharmony_ci echo "--p cannot be empty" 1096e7c69efSopenharmony_ci exit 1 1106e7c69efSopenharmony_cifi 1116e7c69efSopenharmony_ci 1126e7c69efSopenharmony_ciif [ "$arg_jdk" != "" ]; then 1136e7c69efSopenharmony_ci export JAVA_HOME=${arg_jdk} 1146e7c69efSopenharmony_ci export PATH=$JAVA_HOME/bin:$PATH 1156e7c69efSopenharmony_cifi 1166e7c69efSopenharmony_ci 1176e7c69efSopenharmony_ciif [ "$arg_node" != "" ]; then 1186e7c69efSopenharmony_ci export NODE_HOME=${arg_node} 1196e7c69efSopenharmony_ci export PATH=$NODE_HOME:$PATH 1206e7c69efSopenharmony_cifi 1216e7c69efSopenharmony_ci 1226e7c69efSopenharmony_cifunction clear_dir(){ 1236e7c69efSopenharmony_ci if [ ! -d "$1" ]; then 1246e7c69efSopenharmony_ci mkdir -p $1 1256e7c69efSopenharmony_ci else 1266e7c69efSopenharmony_ci rm -rf $1/* 1276e7c69efSopenharmony_ci fi 1286e7c69efSopenharmony_ci} 1296e7c69efSopenharmony_cifunction clear_file(){ 1306e7c69efSopenharmony_ci if [ -f "$1" ]; then 1316e7c69efSopenharmony_ci rm $1 1326e7c69efSopenharmony_ci fi 1336e7c69efSopenharmony_ci touch $1 1346e7c69efSopenharmony_ci} 1356e7c69efSopenharmony_ci 1366e7c69efSopenharmony_cifunction del_dir(){ 1376e7c69efSopenharmony_ci if [ -d "$1" ]; then 1386e7c69efSopenharmony_ci rm -rf $1/* 1396e7c69efSopenharmony_ci fi 1406e7c69efSopenharmony_ci} 1416e7c69efSopenharmony_cifunction del_file(){ 1426e7c69efSopenharmony_ci if [ -f "$1" ]; then 1436e7c69efSopenharmony_ci rm $1 1446e7c69efSopenharmony_ci fi 1456e7c69efSopenharmony_ci} 1466e7c69efSopenharmony_ci 1476e7c69efSopenharmony_cifunction is_project_root(){ 1486e7c69efSopenharmony_ci if [[ -f $1"/build-profile.json5" && -f $1"/hvigorfile.js" ]] || [[ -f $1"/build-profile.json5" && -f $1"/hvigorfile.ts" ]]; then 1496e7c69efSopenharmony_ci while read line 1506e7c69efSopenharmony_ci do 1516e7c69efSopenharmony_ci if [[ ${line} =~ "srcPath" ]]; then 1526e7c69efSopenharmony_ci pa=${line%\"*} 1536e7c69efSopenharmony_ci pa=${pa##*\".} 1546e7c69efSopenharmony_ci if [ -d "$1/AppScope" ]; then 1556e7c69efSopenharmony_ci is_entry=`cat $1${pa}/src/main/module.json5 | sed 's/ //g' | grep "\"type\":\"entry\""` 1566e7c69efSopenharmony_ci is_feature=`cat $1${pa}/src/main/module.json5 | sed 's/ //g' | grep "\"type\":\"feature\""` 1576e7c69efSopenharmony_ci if [[ "${is_entry}" != "" || "${is_feature}" != "" ]]; then 1586e7c69efSopenharmony_ci if [[ -d $1${pa}"/src/ohosTest" ]]; then 1596e7c69efSopenharmony_ci return 0 1606e7c69efSopenharmony_ci fi 1616e7c69efSopenharmony_ci fi 1626e7c69efSopenharmony_ci else 1636e7c69efSopenharmony_ci is_entry=`cat $1${pa}/src/main/config.json | sed 's/ //g' | grep "\"moduleType\":\"entry\""` 1646e7c69efSopenharmony_ci is_feature=`cat $1${pa}/src/main/config.json | sed 's/ //g' | grep "\"moduleType\":\"feature\""` 1656e7c69efSopenharmony_ci if [[ "${is_entry}" != "" || "${is_feature}" != "" ]]; then 1666e7c69efSopenharmony_ci if [[ -d $1${pa}"/src/ohosTest" ]]; then 1676e7c69efSopenharmony_ci return 0 1686e7c69efSopenharmony_ci fi 1696e7c69efSopenharmony_ci fi 1706e7c69efSopenharmony_ci fi 1716e7c69efSopenharmony_ci fi 1726e7c69efSopenharmony_ci done < $1"/build-profile.json5" 1736e7c69efSopenharmony_ci return 1 1746e7c69efSopenharmony_ci else 1756e7c69efSopenharmony_ci return 2 1766e7c69efSopenharmony_ci fi 1776e7c69efSopenharmony_ci} 1786e7c69efSopenharmony_ci 1796e7c69efSopenharmony_cifunction read_project(){ 1806e7c69efSopenharmony_ci if [ -d "$1" ] 1816e7c69efSopenharmony_ci then 1826e7c69efSopenharmony_ci # 是项目工程根目录则记录当前路径 否则递归判断 1836e7c69efSopenharmony_ci is_project_root $1 1846e7c69efSopenharmony_ci res=$? 1856e7c69efSopenharmony_ci if [ ${res} -eq 0 ]; then 1866e7c69efSopenharmony_ci public_list[${#public_list[*]}]=${1#*compile-tool/projects/${name}/} 1876e7c69efSopenharmony_ci elif [ ${res} -eq 1 ]; then 1886e7c69efSopenharmony_ci simple_list[${#simple_list[*]}]=${1#*compile-tool/projects/${name}/} 1896e7c69efSopenharmony_ci elif [ ${res} -eq 2 ]; then 1906e7c69efSopenharmony_ci for file in `ls $1` 1916e7c69efSopenharmony_ci do 1926e7c69efSopenharmony_ci read_project "${1}/${file}" 1936e7c69efSopenharmony_ci done 1946e7c69efSopenharmony_ci fi 1956e7c69efSopenharmony_ci fi 1966e7c69efSopenharmony_ci} 1976e7c69efSopenharmony_ci 1986e7c69efSopenharmony_cifunction exclude_full_project(){ 1996e7c69efSopenharmony_ci if [ ${#full_list[*]} -eq 0 ]; then 2006e7c69efSopenharmony_ci return 2016e7c69efSopenharmony_ci fi 2026e7c69efSopenharmony_ci diff_list=() 2036e7c69efSopenharmony_ci full_true_list=() 2046e7c69efSopenharmony_ci f=0 2056e7c69efSopenharmony_ci t=0 2066e7c69efSopenharmony_ci flag=0 2076e7c69efSopenharmony_ci for item1 in "${public_list[@]}"; do 2086e7c69efSopenharmony_ci for item2 in "${full_list[@]}"; do 2096e7c69efSopenharmony_ci if [[ "${item1}" == "${item2}" ]]; then 2106e7c69efSopenharmony_ci full_true_list[f]=${item2} 2116e7c69efSopenharmony_ci f=$((f+1)) 2126e7c69efSopenharmony_ci flag=1 2136e7c69efSopenharmony_ci break 2146e7c69efSopenharmony_ci fi 2156e7c69efSopenharmony_ci done 2166e7c69efSopenharmony_ci if [ ${flag} -eq 0 ]; then 2176e7c69efSopenharmony_ci diff_list[t]=${item1} 2186e7c69efSopenharmony_ci t=$((t+1)) 2196e7c69efSopenharmony_ci else 2206e7c69efSopenharmony_ci flag=0 2216e7c69efSopenharmony_ci fi 2226e7c69efSopenharmony_ci done 2236e7c69efSopenharmony_ci public_list=(${diff_list[@]}) 2246e7c69efSopenharmony_ci full_list=(${full_true_list[@]}) 2256e7c69efSopenharmony_ci echo "use public sdk project numbers = "${#public_list[@]} 2266e7c69efSopenharmony_ci echo "use full sdk project numbers = "${#full_list[@]} 2276e7c69efSopenharmony_ci} 2286e7c69efSopenharmony_ci 2296e7c69efSopenharmony_cifunction del_module_name(){ 2306e7c69efSopenharmony_ci local name=${1} 2316e7c69efSopenharmony_ci for i in "${!module_name[@]}" 2326e7c69efSopenharmony_ci do 2336e7c69efSopenharmony_ci if [[ "${module_name[i]}" == "${name}" ]]; then 2346e7c69efSopenharmony_ci unset module_name[i] 2356e7c69efSopenharmony_ci echo "移除"${name}" , 剩余 : "${module_name[@]} >> ${compile_result_error}/${hap}".log" 2>&1 2366e7c69efSopenharmony_ci return 0 2376e7c69efSopenharmony_ci fi 2386e7c69efSopenharmony_ci done 2396e7c69efSopenharmony_ci return 1 2406e7c69efSopenharmony_ci} 2416e7c69efSopenharmony_ci 2426e7c69efSopenharmony_cifunction load_dep(){ 2436e7c69efSopenharmony_ci local cur_m_n=${1} 2446e7c69efSopenharmony_ci local cur_module 2456e7c69efSopenharmony_ci for cur_module in ${module_list[@]} 2466e7c69efSopenharmony_ci do 2476e7c69efSopenharmony_ci if [[ "${cur_module}" =~ "${cur_m_n}" ]]; then 2486e7c69efSopenharmony_ci del_module_name ${cur_m_n} 2496e7c69efSopenharmony_ci for m_n_1 in ${module_name[@]} 2506e7c69efSopenharmony_ci do 2516e7c69efSopenharmony_ci rr=$(cat ${cur_module}"/package.json" | grep "${m_n_1}") 2526e7c69efSopenharmony_ci if [[ "${rr}" != "" ]]; then 2536e7c69efSopenharmony_ci load_dep ${m_n_1} 2546e7c69efSopenharmony_ci fi 2556e7c69efSopenharmony_ci done 2566e7c69efSopenharmony_ci cd ${cur_module} 2576e7c69efSopenharmony_ci echo ${cur_module}" 执行npm install" >> ${compile_result_error}/${hap}".log" 2>&1 2586e7c69efSopenharmony_ci npm i >> ${compile_result_error}/${hap}".log" 2>&1 2596e7c69efSopenharmony_ci fi 2606e7c69efSopenharmony_ci done 2616e7c69efSopenharmony_ci} 2626e7c69efSopenharmony_ci 2636e7c69efSopenharmony_cifunction load_oh_dep(){ 2646e7c69efSopenharmony_ci local cur_m_n=${1} 2656e7c69efSopenharmony_ci local cur_module 2666e7c69efSopenharmony_ci for cur_module in ${module_list[@]} 2676e7c69efSopenharmony_ci do 2686e7c69efSopenharmony_ci if [[ "${cur_module}" =~ "${cur_m_n}" ]]; then 2696e7c69efSopenharmony_ci del_module_name ${cur_m_n} 2706e7c69efSopenharmony_ci for m_n_1 in ${module_name[@]} 2716e7c69efSopenharmony_ci do 2726e7c69efSopenharmony_ci rr=$(cat ${cur_module}"/oh-package.json5" | grep "${m_n_1}") 2736e7c69efSopenharmony_ci if [[ "${rr}" != "" ]]; then 2746e7c69efSopenharmony_ci load_oh_dep ${m_n_1} 2756e7c69efSopenharmony_ci fi 2766e7c69efSopenharmony_ci done 2776e7c69efSopenharmony_ci cd ${cur_module} 2786e7c69efSopenharmony_ci echo ${cur_module}" 执行ohpm install" >> ${compile_result_error}/${hap}".log" 2>&1 2796e7c69efSopenharmony_ci if [[ -e "oh-package.json5" ]]; then 2806e7c69efSopenharmony_ci ohpm i >> ${compile_result_error}/${hap}".log" 2>&1 2816e7c69efSopenharmony_ci else 2826e7c69efSopenharmony_ci ohpm init >> ${compile_result_error}/${hap}".log" 2>&1 2836e7c69efSopenharmony_ci ohpm install >> ${compile_result_error}/${hap}".log" 2>&1 2846e7c69efSopenharmony_ci fi 2856e7c69efSopenharmony_ci fi 2866e7c69efSopenharmony_ci done 2876e7c69efSopenharmony_ci} 2886e7c69efSopenharmony_ci 2896e7c69efSopenharmony_ci 2906e7c69efSopenharmony_cifunction compile(){ 2916e7c69efSopenharmony_ci # echo "compile $1" 2926e7c69efSopenharmony_ci hap=${1////_} 2936e7c69efSopenharmony_ci project_path=${BASE_PATH}/projects/${name}/${1} 2946e7c69efSopenharmony_ci compile_result=${2} 2956e7c69efSopenharmony_ci compile_result_error=${3} 2966e7c69efSopenharmony_ci nosign_hap_result=${4} 2976e7c69efSopenharmony_ci compile_result_success=${5} 2986e7c69efSopenharmony_ci if [ ! -d "${project_path}" ]; then 2996e7c69efSopenharmony_ci echo "${project_path} 路径不存在" 3006e7c69efSopenharmony_ci return 3016e7c69efSopenharmony_ci fi 3026e7c69efSopenharmony_ci 3036e7c69efSopenharmony_ci if [ -e "${project_path}/local.properties" ]; then 3046e7c69efSopenharmony_ci rm ${project_path}"/local.properties" 3056e7c69efSopenharmony_ci fi 3066e7c69efSopenharmony_ci 3076e7c69efSopenharmony_ci # echo "sdk.dir="${arg_full_sdk_path} >> ${project_path}"/local.properties" 2>&1 3086e7c69efSopenharmony_ci cd ${project_path} 3096e7c69efSopenharmony_ci if [[ -e "${project_path}/package.json" ]]; then 3106e7c69efSopenharmony_ci sed -i 's/\"@ohos\/hypium\".*\.[0-9]*\"/\"@ohos\/hypium\": \"1.0.3\"/g' ./package.json 3116e7c69efSopenharmony_ci sed -i 's/\"@ohos\/hvigor-ohos-plugin\".*\.[0-9]*\"/\"@ohos\/hvigor-ohos-plugin\": \"1.3.1\"/g' ./package.json 3126e7c69efSopenharmony_ci sed -i 's/\"@ohos\/hvigor\".*\.[0-9]*\"/\"@ohos\/hvigor\": \"1.3.1\"/g' ./package.json 3136e7c69efSopenharmony_ci fi 3146e7c69efSopenharmony_ci module_list=() 3156e7c69efSopenharmony_ci module_name=() 3166e7c69efSopenharmony_ci out_module=() 3176e7c69efSopenharmony_ci bundle_name="" 3186e7c69efSopenharmony_ci while read line 3196e7c69efSopenharmony_ci do 3206e7c69efSopenharmony_ci if [[ ${line} =~ "srcPath" ]]; then 3216e7c69efSopenharmony_ci pa=${line%\"*} 3226e7c69efSopenharmony_ci pa=${pa##*\".} 3236e7c69efSopenharmony_ci module_list[${#module_list[*]}]=${project_path}${pa} 3246e7c69efSopenharmony_ci del_dir ${project_path}${pa}/node_modules 3256e7c69efSopenharmony_ci del_file ${project_path}${pa}/package-lock.json 3266e7c69efSopenharmony_ci del_dir ${project_path}${pa}/oh_modules 3276e7c69efSopenharmony_ci del_file ${project_path}${pa}/oh-package-lock.json5 3286e7c69efSopenharmony_ci module_name[${#module_name[*]}]=${pa} 3296e7c69efSopenharmony_ci if [ -d "${project_path}/AppScope" ]; then 3306e7c69efSopenharmony_ci cur_bundle_line=`cat ${project_path}/AppScope/app.json5 | grep "\"bundleName\""` 3316e7c69efSopenharmony_ci bundle_name=${cur_bundle_line%\"*} 3326e7c69efSopenharmony_ci bundle_name=${bundle_name##*\"} 3336e7c69efSopenharmony_ci # echo "bundleName : "${bundle_name} 3346e7c69efSopenharmony_ci is_entry=`cat ${project_path}${pa}/src/main/module.json5 | sed 's/ //g' | grep "\"type\":\"entry\""` 3356e7c69efSopenharmony_ci is_feature=`cat ${project_path}${pa}/src/main/module.json5 | sed 's/ //g' | grep "\"type\":\"feature\""` 3366e7c69efSopenharmony_ci if [[ "${is_entry}" != "" || "${is_feature}" != "" ]]; then 3376e7c69efSopenharmony_ci echo "hap输出module: "${project_path}${pa} >> ${compile_result_error}/${hap}".log" 2>&1 3386e7c69efSopenharmony_ci out_module[${#out_module[*]}]=${project_path}${pa} 3396e7c69efSopenharmony_ci fi 3406e7c69efSopenharmony_ci else 3416e7c69efSopenharmony_ci cur_bundle_line=`cat ${project_path}${pa}/src/main/config.json | grep "\"bundleName\""` 3426e7c69efSopenharmony_ci bundle_name=${cur_bundle_line%\"*} 3436e7c69efSopenharmony_ci bundle_name=${bundle_name##*\"} 3446e7c69efSopenharmony_ci # echo "bundleName : "${bundle_name} 3456e7c69efSopenharmony_ci is_entry=`cat ${project_path}${pa}/src/main/config.json | sed 's/ //g' | grep "\"moduleType\":\"entry\""` 3466e7c69efSopenharmony_ci is_feature=`cat ${project_path}${pa}/src/main/config.json | sed 's/ //g' | grep "\"moduleType\":\"feature\""` 3476e7c69efSopenharmony_ci if [[ "${is_entry}" != "" || "${is_feature}" != "" ]]; then 3486e7c69efSopenharmony_ci echo "hap输出module: "${project_path}${pa} >> ${compile_result_error}/${hap}".log" 2>&1 3496e7c69efSopenharmony_ci out_module[${#out_module[*]}]=${project_path}${pa} 3506e7c69efSopenharmony_ci fi 3516e7c69efSopenharmony_ci fi 3526e7c69efSopenharmony_ci fi 3536e7c69efSopenharmony_ci done < ${project_path}"/build-profile.json5" 3546e7c69efSopenharmony_ci 3556e7c69efSopenharmony_ci if [[ -e "${project_path}/oh-package.json5" ]]; then #如果是ohpm包管理方式 3566e7c69efSopenharmony_ci for module in ${module_list[@]} 3576e7c69efSopenharmony_ci do 3586e7c69efSopenharmony_ci del_module_name ${module##${project_path}} 3596e7c69efSopenharmony_ci if [ $? -eq 0 ]; then 3606e7c69efSopenharmony_ci for m_n in ${module_name[@]} 3616e7c69efSopenharmony_ci do 3626e7c69efSopenharmony_ci echo "查找 ${m_n} 是否是${module} 的依赖" >> ${compile_result_error}/${hap}".log" 2>&1 3636e7c69efSopenharmony_ci rr=$(cat ${module}"/oh-package.json5" | grep "${m_n}") 3646e7c69efSopenharmony_ci if [[ "${rr}" != "" ]]; then 3656e7c69efSopenharmony_ci echo "处理循环依赖 : "${m_n} >> ${compile_result_error}/${hap}".log" 2>&1 3666e7c69efSopenharmony_ci load_oh_dep ${m_n} 3676e7c69efSopenharmony_ci fi 3686e7c69efSopenharmony_ci 3696e7c69efSopenharmony_ci done 3706e7c69efSopenharmony_ci cd ${module} 3716e7c69efSopenharmony_ci echo ${module}" 执行ohpm install" >> ${compile_result_error}/${hap}".log" 2>&1 3726e7c69efSopenharmony_ci 3736e7c69efSopenharmony_ci if [[ -e "oh-package.json5" ]]; then 3746e7c69efSopenharmony_ci ohpm i >> ${compile_result_error}/${hap}".log" 2>&1 3756e7c69efSopenharmony_ci else 3766e7c69efSopenharmony_ci ohpm init >> ${compile_result_error}/${hap}".log" 2>&1 3776e7c69efSopenharmony_ci ohpm install >> ${compile_result_error}/${hap}".log" 2>&1 3786e7c69efSopenharmony_ci fi 3796e7c69efSopenharmony_ci 3806e7c69efSopenharmony_ci fi 3816e7c69efSopenharmony_ci done 3826e7c69efSopenharmony_ci else 3836e7c69efSopenharmony_ci for module in ${module_list[@]} 3846e7c69efSopenharmony_ci do 3856e7c69efSopenharmony_ci del_module_name ${module##${project_path}} 3866e7c69efSopenharmony_ci if [ $? -eq 0 ]; then 3876e7c69efSopenharmony_ci for m_n in ${module_name[@]} 3886e7c69efSopenharmony_ci do 3896e7c69efSopenharmony_ci echo "查找 ${m_n} 是否是${module} 的依赖" >> ${compile_result_error}/${hap}".log" 2>&1 3906e7c69efSopenharmony_ci rr=$(cat ${module}"/package.json" | grep "${m_n}") 3916e7c69efSopenharmony_ci if [[ "${rr}" != "" ]]; then 3926e7c69efSopenharmony_ci echo "处理循环依赖 : "${m_n} >> ${compile_result_error}/${hap}".log" 2>&1 3936e7c69efSopenharmony_ci load_dep ${m_n} 3946e7c69efSopenharmony_ci fi 3956e7c69efSopenharmony_ci 3966e7c69efSopenharmony_ci done 3976e7c69efSopenharmony_ci cd ${module} 3986e7c69efSopenharmony_ci echo ${module}" 执行npm install" >> ${compile_result_error}/${hap}".log" 2>&1 3996e7c69efSopenharmony_ci npm i >> ${compile_result_error}/${hap}".log" 2>&1 4006e7c69efSopenharmony_ci fi 4016e7c69efSopenharmony_ci done 4026e7c69efSopenharmony_ci 4036e7c69efSopenharmony_ci fi 4046e7c69efSopenharmony_ci 4056e7c69efSopenharmony_ci 4066e7c69efSopenharmony_ci cd ${project_path} 4076e7c69efSopenharmony_ci del_dir ${project_path}/node_modules 4086e7c69efSopenharmony_ci del_dir ${project_path}/oh_modules 4096e7c69efSopenharmony_ci del_file ${project_path}/package-lock.json 4106e7c69efSopenharmony_ci del_file ${project_path}/oh-package-lock.json5 4116e7c69efSopenharmony_ci echo ${project_path}" 执行npm install" >> ${compile_result_error}/${hap}".log" 2>&1 4126e7c69efSopenharmony_ci 4136e7c69efSopenharmony_ci if [[ -e "${project_path}/oh-package.json5" ]]; then 4146e7c69efSopenharmony_ci ohpm i >> ${compile_result_error}/${hap}".log" 2>&1 4156e7c69efSopenharmony_ci chmod +x hvigorw 4166e7c69efSopenharmony_ci ./hvigorw clean --no-daemon >> ${compile_result_error}/${hap}".log" 2>&1 4176e7c69efSopenharmony_ci else 4186e7c69efSopenharmony_ci npm install >> ${compile_result_error}/${hap}".log" 2>&1 4196e7c69efSopenharmony_ci node ./node_modules/@ohos/hvigor/bin/hvigor.js clean --no-daemon >> ${compile_result_error}/${hap}".log" 2>&1 4206e7c69efSopenharmony_ci fi 4216e7c69efSopenharmony_ci 4226e7c69efSopenharmony_ci 4236e7c69efSopenharmony_ci 4246e7c69efSopenharmony_ci rm -rf ${project_path}/sign_tool 4256e7c69efSopenharmony_ci cp -r ${BASE_PATH}/tool/sign_tool ${project_path} 4266e7c69efSopenharmony_ci 4276e7c69efSopenharmony_ci cd ${project_path}/sign_tool 4286e7c69efSopenharmony_ci if [[ $(echo ${basic_list[@]} | grep "${hap//_//}") != "" ]]; then 4296e7c69efSopenharmony_ci echo "${hap} 使用basic签名" >> ${compile_result_error}/${hap}".log" 2>&1 4306e7c69efSopenharmony_ci sed -i "s/\"normal\"/\"system_basic\"/g" ./UnsgnedReleasedProfileTemplate.json >> ${compile_result_error}/${hap}".log" 2>&1 4316e7c69efSopenharmony_ci elif [[ $(echo ${core_list[@]} | grep "${hap//_//}") != "" ]]; then 4326e7c69efSopenharmony_ci echo "${hap} 使用core签名" >> ${compile_result_error}/${hap}".log" 2>&1 4336e7c69efSopenharmony_ci sed -i "s/\"normal\"/\"system_core\"/g" ./UnsgnedReleasedProfileTemplate.json >> ${compile_result_error}/${hap}".log" 2>&1 4346e7c69efSopenharmony_ci fi 4356e7c69efSopenharmony_ci if [[ $(echo ${system_app_list[@]} | grep "${hap//_//}") != "" ]]; then 4366e7c69efSopenharmony_ci echo "${hap} 系统应用" >> ${compile_result_error}/${hap}".log" 2>&1 4376e7c69efSopenharmony_ci sed -i "s/\"hos_normal_app\"/\"hos_system_app\"/g" ./UnsgnedReleasedProfileTemplate.json >> ${compile_result_error}/${hap}".log" 2>&1 4386e7c69efSopenharmony_ci fi 4396e7c69efSopenharmony_ci if [ "${bundle_name}" != "" ]; then 4406e7c69efSopenharmony_ci echo "bundleName = ${bundle_name}" >> ${compile_result_error}/${hap}".log" 2>&1 4416e7c69efSopenharmony_ci sed -i "s/\"com.OpenHarmony.app.test\"/\"${bundle_name}\"/g" ./UnsgnedReleasedProfileTemplate.json >> ${compile_result_error}/${hap}".log" 2>&1 4426e7c69efSopenharmony_ci fi 4436e7c69efSopenharmony_ci 4446e7c69efSopenharmony_ci 4456e7c69efSopenharmony_ci sign_hap_num=0 4466e7c69efSopenharmony_ci for module in ${out_module[@]} 4476e7c69efSopenharmony_ci do 4486e7c69efSopenharmony_ci cd ${project_path} 4496e7c69efSopenharmony_ci cur_out_module_name=${module##*/} 4506e7c69efSopenharmony_ci if [[ -e "${project_path}/oh-package.json5" ]]; then 4516e7c69efSopenharmony_ci chmod +x hvigorw 4526e7c69efSopenharmony_ci ./hvigorw --mode module -p module=${cur_out_module_name} assembleHap --no-daemon >> ${compile_result_error}/${hap}".log" 2>&1 4536e7c69efSopenharmony_ci if [[ -d ${module}"/src/ohosTest" ]]; then 4546e7c69efSopenharmony_ci ./hvigorw --mode module -p module=${cur_out_module_name}@ohosTest assembleHap --no-daemon >> ${compile_result_error}/${hap}".log" 2>&1 4556e7c69efSopenharmony_ci fi 4566e7c69efSopenharmony_ci else 4576e7c69efSopenharmony_ci node ./node_modules/@ohos/hvigor/bin/hvigor.js --mode module -p module=${cur_out_module_name} assembleHap --no-daemon>> ${compile_result_error}/${hap}".log" 2>&1 4586e7c69efSopenharmony_ci if [[ -d ${module}"/src/ohosTest" ]]; then 4596e7c69efSopenharmony_ci node ./node_modules/@ohos/hvigor/bin/hvigor.js --mode module -p module=${cur_out_module_name}@ohosTest assembleHap --no-daemon>> ${compile_result_error}/${hap}".log" 2>&1 4606e7c69efSopenharmony_ci fi 4616e7c69efSopenharmony_ci fi 4626e7c69efSopenharmony_ci 4636e7c69efSopenharmony_ci is_sign=false 4646e7c69efSopenharmony_ci echo "module = ${module} , cur_out_module_name=${cur_out_module_name}" >> ${compile_result_error}/${hap}".log" 2>&1 4656e7c69efSopenharmony_ci if [ ! -d ${module}/build/default/outputs/default/ -o ! -d ${module}/build/default/outputs/ohosTest/ -a -d ${module}"/src/ohosTest" ]; then 4666e7c69efSopenharmony_ci echo "module = ${module}, assembleHap error !!!" >> ${compile_result_error}/${hap}".log" 2>&1 4676e7c69efSopenharmony_ci continue 4686e7c69efSopenharmony_ci fi 4696e7c69efSopenharmony_ci sign_hap_path="" 4706e7c69efSopenharmony_ci test_sign_hap_path="" 4716e7c69efSopenharmony_ci nosign_hap_path="" 4726e7c69efSopenharmony_ci test_nosign_hap_path="" 4736e7c69efSopenharmony_ci for out_file in `ls ${module}/build/default/outputs/default/` 4746e7c69efSopenharmony_ci do 4756e7c69efSopenharmony_ci if [[ "${out_file}" =~ "-unsigned.hap" ]]; then 4766e7c69efSopenharmony_ci echo "发现unsigned包 : "${out_file}",开始使用签名工具签名" >> ${compile_result_error}/${hap}".log" 2>&1 4776e7c69efSopenharmony_ci nosign_hap_path=${module}/build/default/outputs/default/${out_file} 4786e7c69efSopenharmony_ci sign_hap_path=${module}/build/default/outputs/default/${out_file/unsigned/signed} 4796e7c69efSopenharmony_ci cd ${project_path}/sign_tool 4806e7c69efSopenharmony_ci java -jar ${BASE_PATH}/tool/hap-sign-tool.jar sign-profile -keyAlias "openharmony application profile release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyProfileRelease.pem" -inFile "UnsgnedReleasedProfileTemplate.json" -keystoreFile "OpenHarmony.p12" -outFile "openharmony_sx.p7b" -keyPwd "123456" -keystorePwd "123456" >> ${compile_result_error}/${hap}".log" 2>&1 4816e7c69efSopenharmony_ci java -jar ${BASE_PATH}/tool/hap-sign-tool.jar sign-app -keyAlias "openharmony application release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "OpenHarmonyApplication.pem" -profileFile "openharmony_sx.p7b" -inFile "${nosign_hap_path}" -keystoreFile "OpenHarmony.p12" -outFile "${sign_hap_path}" -keyPwd "123456" -keystorePwd "123456" >> ${compile_result_error}/${hap}".log" 2>&1 4826e7c69efSopenharmony_ci fi 4836e7c69efSopenharmony_ci done 4846e7c69efSopenharmony_ci 4856e7c69efSopenharmony_ci if [[ -d ${module}"/src/ohosTest" ]]; then 4866e7c69efSopenharmony_ci for out_file in `ls ${module}/build/default/outputs/ohosTest/` 4876e7c69efSopenharmony_ci do 4886e7c69efSopenharmony_ci if [[ "${out_file}" =~ "-unsigned.hap" ]]; then 4896e7c69efSopenharmony_ci echo "发现unsigned包 : "${out_file}",开始使用签名工具签名" >> ${compile_result_error}/${hap}".log" 2>&1 4906e7c69efSopenharmony_ci test_nosign_hap_path=${module}/build/default/outputs/ohosTest/${out_file} 4916e7c69efSopenharmony_ci test_sign_hap_path=${module}/build/default/outputs/ohosTest/${out_file/unsigned/signed} 4926e7c69efSopenharmony_ci cd ${project_path}/sign_tool 4936e7c69efSopenharmony_ci java -jar ${BASE_PATH}/tool/hap-sign-tool.jar sign-profile -keyAlias "openharmony application profile release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyProfileRelease.pem" -inFile "UnsgnedReleasedProfileTemplate.json" -keystoreFile "OpenHarmony.p12" -outFile "openharmony_sx.p7b" -keyPwd "123456" -keystorePwd "123456" >> ${compile_result_error}/${hap}".log" 2>&1 4946e7c69efSopenharmony_ci java -jar ${BASE_PATH}/tool/hap-sign-tool.jar sign-app -keyAlias "openharmony application release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "OpenHarmonyApplication.pem" -profileFile "openharmony_sx.p7b" -inFile "${test_nosign_hap_path}" -keystoreFile "OpenHarmony.p12" -outFile "${test_sign_hap_path}" -keyPwd "123456" -keystorePwd "123456" >> ${compile_result_error}/${hap}".log" 2>&1 4956e7c69efSopenharmony_ci fi 4966e7c69efSopenharmony_ci done 4976e7c69efSopenharmony_ci fi 4986e7c69efSopenharmony_ci 4996e7c69efSopenharmony_ci if [[ ${sign_hap_path} != "" && -f ${sign_hap_path} && ( -f ${test_sign_hap_path} || ! -d ${module}"/src/ohosTest") ]]; then 5006e7c69efSopenharmony_ci cp ${sign_hap_path} ${compile_result}/${hap}_${cur_out_module_name}_signed.hap 5016e7c69efSopenharmony_ci cp ${nosign_hap_path} ${nosign_hap_result}/${hap}_${cur_out_module_name}_signed.hap 5026e7c69efSopenharmony_ci 5036e7c69efSopenharmony_ci if [[ -d ${module}"/src/ohosTest" ]]; then 5046e7c69efSopenharmony_ci cp ${test_sign_hap_path} ${compile_result}/${hap}_${cur_out_module_name}_ohosTest_signed.hap 5056e7c69efSopenharmony_ci cp ${test_nosign_hap_path} ${nosign_hap_result}/${hap}_${cur_out_module_name}_ohosTest_signed.hap 5066e7c69efSopenharmony_ci fi 5076e7c69efSopenharmony_ci sign_hap_num=$(expr ${sign_hap_num} + 1) 5086e7c69efSopenharmony_ci echo "${module} assembleHap success !!!" >> ${compile_result_error}/${hap}".log" 2>&1 5096e7c69efSopenharmony_ci else 5106e7c69efSopenharmony_ci echo "${module} assembleHap error !!!" >> ${compile_result_error}/${hap}".log" 2>&1 5116e7c69efSopenharmony_ci fi 5126e7c69efSopenharmony_ci done 5136e7c69efSopenharmony_ci if [[ ${#out_module[@]} == ${sign_hap_num} ]]; then 5146e7c69efSopenharmony_ci #rm ${compile_result_error}/${hap}".log" 5156e7c69efSopenharmony_ci mv ${compile_result_error}/${hap}.log ${compile_result_success}/${hap}.log 5166e7c69efSopenharmony_ci echo "success compile ${hap} !!! " 5176e7c69efSopenharmony_ci else 5186e7c69efSopenharmony_ci echo "error compile ${hap} QwQ ,log at ${compile_result_error}/${hap}.log" 5196e7c69efSopenharmony_ci fi 5206e7c69efSopenharmony_ci} 5216e7c69efSopenharmony_ci 5226e7c69efSopenharmony_ci 5236e7c69efSopenharmony_cifunction compile_project(){ 5246e7c69efSopenharmony_ci echo "use public sdk compile..." 5256e7c69efSopenharmony_ci project_path=${1} 5266e7c69efSopenharmony_ci project_name=${2} 5276e7c69efSopenharmony_ci COMPILE_RESULT=${BASE_PATH}/out/${project_name}/public-sdk/hap-out-with-nosigned 5286e7c69efSopenharmony_ci COMPILE_RESULT_ERROR=${BASE_PATH}/out/${project_name}/public-sdk/compile-error-log 5296e7c69efSopenharmony_ci COMPILE_RESULT_SUCCESS=${BASE_PATH}/out/${project_name}/public-sdk/compile-success-log 5306e7c69efSopenharmony_ci SIGN_RESULT=${BASE_PATH}/out/${project_name}/public-sdk/hap-out-with-signed 5316e7c69efSopenharmony_ci 5326e7c69efSopenharmony_ci clear_dir $COMPILE_RESULT 5336e7c69efSopenharmony_ci clear_dir $COMPILE_RESULT_ERROR 5346e7c69efSopenharmony_ci clear_dir $COMPILE_RESULT_SUCCESS 5356e7c69efSopenharmony_ci clear_dir $SIGN_RESULT 5366e7c69efSopenharmony_ci 5376e7c69efSopenharmony_ci 5386e7c69efSopenharmony_ci export OHOS_SDK_HOME=${arg_sdk_path} 5396e7c69efSopenharmony_ci export OHOS_BASE_SDK_HOME=${arg_sdk_path} 5406e7c69efSopenharmony_ci echo "OHOS_SDK_HOME="${OHOS_SDK_HOME} 5416e7c69efSopenharmony_ci echo "OHOS_BASE_SDK_HOME="${OHOS_BASE_SDK_HOME} 5426e7c69efSopenharmony_ci 5436e7c69efSopenharmony_ci EOF=0 5446e7c69efSopenharmony_ci curr=0 5456e7c69efSopenharmony_ci while [ $EOF -ne 1 ]; do 5466e7c69efSopenharmony_ci for ((i=1; i<=$TIME; i++)); do 5476e7c69efSopenharmony_ci if [ ${curr} -eq ${#public_list[@]} ]; then 5486e7c69efSopenharmony_ci EOF=1 5496e7c69efSopenharmony_ci break 5506e7c69efSopenharmony_ci fi 5516e7c69efSopenharmony_ci compile ${public_list[$curr]} ${SIGN_RESULT} ${COMPILE_RESULT_ERROR} ${COMPILE_RESULT} ${COMPILE_RESULT_SUCCESS} & 5526e7c69efSopenharmony_ci curr=$((curr+1)) 5536e7c69efSopenharmony_ci done 5546e7c69efSopenharmony_ci wait 5556e7c69efSopenharmony_ci done 5566e7c69efSopenharmony_ci} 5576e7c69efSopenharmony_ci 5586e7c69efSopenharmony_cifunction compile_project_full(){ 5596e7c69efSopenharmony_ci echo "use full sdk compile..." 5606e7c69efSopenharmony_ci project_path=${1} 5616e7c69efSopenharmony_ci project_name=${2} 5626e7c69efSopenharmony_ci COMPILE_RESULT=${BASE_PATH}/out/${project_name}/full-sdk/hap-out-with-nosigned 5636e7c69efSopenharmony_ci COMPILE_RESULT_ERROR=${BASE_PATH}/out/${project_name}/full-sdk/compile-error-log 5646e7c69efSopenharmony_ci COMPILE_RESULT_SUCCESS=${BASE_PATH}/out/${project_name}/full-sdk/compile-success-log 5656e7c69efSopenharmony_ci SIGN_RESULT=${BASE_PATH}/out/${project_name}/full-sdk/hap-out-with-signed 5666e7c69efSopenharmony_ci 5676e7c69efSopenharmony_ci clear_dir $COMPILE_RESULT 5686e7c69efSopenharmony_ci clear_dir $COMPILE_RESULT_ERROR 5696e7c69efSopenharmony_ci clear_dir $COMPILE_RESULT_SUCCESS 5706e7c69efSopenharmony_ci clear_dir $SIGN_RESULT 5716e7c69efSopenharmony_ci 5726e7c69efSopenharmony_ci export OHOS_SDK_HOME=${arg_full_sdk_path} 5736e7c69efSopenharmony_ci export OHOS_BASE_SDK_HOME=${arg_full_sdk_path} 5746e7c69efSopenharmony_ci echo "OHOS_SDK_HOME="${OHOS_SDK_HOME} 5756e7c69efSopenharmony_ci echo "OHOS_BASE_SDK_HOME="${OHOS_BASE_SDK_HOME} 5766e7c69efSopenharmony_ci 5776e7c69efSopenharmony_ci EOF=0 5786e7c69efSopenharmony_ci curr=0 5796e7c69efSopenharmony_ci while [ $EOF -ne 1 ]; do 5806e7c69efSopenharmony_ci for ((i=1; i<=$TIME; i++)); do 5816e7c69efSopenharmony_ci if [ ${curr} -eq ${#full_list[@]} ]; then 5826e7c69efSopenharmony_ci EOF=1 5836e7c69efSopenharmony_ci break 5846e7c69efSopenharmony_ci fi 5856e7c69efSopenharmony_ci compile ${full_list[$curr]} ${SIGN_RESULT} ${COMPILE_RESULT_ERROR} ${COMPILE_RESULT} ${COMPILE_RESULT_SUCCESS} & 5866e7c69efSopenharmony_ci curr=$((curr+1)) 5876e7c69efSopenharmony_ci done 5886e7c69efSopenharmony_ci wait 5896e7c69efSopenharmony_ci done 5906e7c69efSopenharmony_ci} 5916e7c69efSopenharmony_ci 5926e7c69efSopenharmony_cifunction load(){ 5936e7c69efSopenharmony_ci project_url=${1} 5946e7c69efSopenharmony_ci project_branch=${2} 5956e7c69efSopenharmony_ci project_name=${3} 5966e7c69efSopenharmony_ci if test -d ${BASE_PATH}/projects/${project_name} 5976e7c69efSopenharmony_ci then 5986e7c69efSopenharmony_ci echo "${project_name} exists,ready for update..." 5996e7c69efSopenharmony_ci cd ${BASE_PATH}/projects/${project_name} 6006e7c69efSopenharmony_ci git reset --hard origin/${project_branch} 6016e7c69efSopenharmony_ci git checkout -b ${project_branch} origin/${project_branch} 6026e7c69efSopenharmony_ci git checkout ${project_branch} 6036e7c69efSopenharmony_ci git lfs fetch origin ${project_branch} 6046e7c69efSopenharmony_ci git pull 6056e7c69efSopenharmony_ci else 6066e7c69efSopenharmony_ci echo "${project_name} dose not exist,ready to download..." 6076e7c69efSopenharmony_ci if [ ! -d ${BASE_PATH}/projects ]; then 6086e7c69efSopenharmony_ci mkdir -p ${BASE_PATH}/projects 6096e7c69efSopenharmony_ci fi 6106e7c69efSopenharmony_ci cd ${BASE_PATH}/projects 6116e7c69efSopenharmony_ci git lfs clone -b ${project_branch} ${project_url} ${project_name} 6126e7c69efSopenharmony_ci git checkout -b ${project_branch} origin/${project_branch} 6136e7c69efSopenharmony_ci fi 6146e7c69efSopenharmony_ci if [ -d "${BASE_PATH}/projects/${project_name}/${arg_compile_dir}" ]; then 6156e7c69efSopenharmony_ci read_project ${BASE_PATH}/projects/${project_name}/${arg_compile_dir} 6166e7c69efSopenharmony_ci exclude_full_project 6176e7c69efSopenharmony_ci compile_project ${BASE_PATH}/projects/${project_name} ${project_name} 6186e7c69efSopenharmony_ci compile_project_full ${BASE_PATH}/projects/${project_name} ${project_name} 6196e7c69efSopenharmony_ci fi 6206e7c69efSopenharmony_ci} 6216e7c69efSopenharmony_ci 6226e7c69efSopenharmony_ci 6236e7c69efSopenharmony_ciwhile read line 6246e7c69efSopenharmony_cido 6256e7c69efSopenharmony_ci if [[ ${line} == ${tag_url}* ]]; then 6266e7c69efSopenharmony_ci url=${line##*${tag_url}} 6276e7c69efSopenharmony_ci elif [[ ${line} == ${tag_branch}* ]]; then 6286e7c69efSopenharmony_ci branch=${line##*${tag_branch}} 6296e7c69efSopenharmony_ci elif [[ ${line} == ${tag_name}* ]]; then 6306e7c69efSopenharmony_ci name=${line##*${tag_name}} 6316e7c69efSopenharmony_ci elif [[ ${line} == ${tag_full_list}* ]]; then 6326e7c69efSopenharmony_ci temp_string=${line##*${tag_full_list}} 6336e7c69efSopenharmony_ci full_list=(${temp_string//;/ }) 6346e7c69efSopenharmony_ci elif [[ ${line} == ${tag_basic_list}* ]]; then 6356e7c69efSopenharmony_ci temp_string=${line##*${tag_basic_list}} 6366e7c69efSopenharmony_ci basic_list=(${temp_string//;/ }) 6376e7c69efSopenharmony_ci elif [[ ${line} == ${tag_core_list}* ]]; then 6386e7c69efSopenharmony_ci temp_string=${line##*${tag_core_list}} 6396e7c69efSopenharmony_ci core_list=(${temp_string//;/ }) 6406e7c69efSopenharmony_ci elif [[ ${line} == ${tag_system_app_list}* ]]; then 6416e7c69efSopenharmony_ci temp_string=${line##*${tag_system_app_list}} 6426e7c69efSopenharmony_ci system_app_list=(${temp_string//;/ }) 6436e7c69efSopenharmony_ci fi 6446e7c69efSopenharmony_cidone < ${arg_p} 6456e7c69efSopenharmony_ci 6466e7c69efSopenharmony_ciload ${url} ${branch} ${name} 6476e7c69efSopenharmony_ci 6486e7c69efSopenharmony_ciendTime=`date +%Y%m%d-%H:%M:%S` 6496e7c69efSopenharmony_ciendTime_s=`date +%s` 6506e7c69efSopenharmony_cisumTime=$[ $endTime_s - $startTime_s ] 6516e7c69efSopenharmony_ci 6526e7c69efSopenharmony_ciecho "$startTime ---> $endTime" "耗时:$sumTime seconds" 6536e7c69efSopenharmony_ciecho "| public-sdk--|-------------|-------------|-------------|-------------|-------------" 6546e7c69efSopenharmony_ciecho "| 仓库 | 项目数量 | 成功数量 | 失败数量 | Hap数量 | 签名成功 " 6556e7c69efSopenharmony_ciecho "|-------------|-------------|-------------|-------------|-------------" 6566e7c69efSopenharmony_ciecho "| ${name} | ${#public_list[@]} | $(ls -l ${BASE_PATH}/out/${name}/public-sdk/compile-success-log|grep "^-"|wc -l) | $(ls -l ${BASE_PATH}/out/${name}/public-sdk/compile-error-log|grep "^-"|wc -l) | "`expr $(ls -l ${BASE_PATH}/out/${name}/public-sdk/hap-out-with-nosigned|grep "^-"|wc -l) / 2`" | "`expr $(ls -l ${BASE_PATH}/out/${name}/public-sdk/hap-out-with-signed|grep "^-"|wc -l) / 2` 6576e7c69efSopenharmony_ciif (( $(ls -l ${BASE_PATH}/out/${name}/public-sdk/compile-error-log|grep "^-"|wc -l) > 0 )); then 6586e7c69efSopenharmony_ci echo "| 失败项目列表|-------------|-------------|-------------|-------------|-------------" 6596e7c69efSopenharmony_ci for z in `ls ${BASE_PATH}/out/${name}/public-sdk/compile-error-log` 6606e7c69efSopenharmony_ci do 6616e7c69efSopenharmony_ci z=${z//_//} 6626e7c69efSopenharmony_ci z=${z%.log} 6636e7c69efSopenharmony_ci echo "| "${z}" |" 6646e7c69efSopenharmony_ci done 6656e7c69efSopenharmony_cifi 6666e7c69efSopenharmony_ciecho "| 失败项目日志汇总地址|-------------|-------------|-------------|-------------------" 6676e7c69efSopenharmony_ciecho "| ${BASE_PATH}/out/${name}/public-sdk/compile-error-log" 6686e7c69efSopenharmony_ciecho "| full-sdk----|-------------|-------------|-------------|-------------|-------------" 6696e7c69efSopenharmony_ciecho "| 仓库 | 项目数量 | 成功数量 | 失败数量 | Hap数量 | 签名成功 " 6706e7c69efSopenharmony_ciecho "|-------------|-------------|-------------|-------------|-------------|-------------" 6716e7c69efSopenharmony_ciecho "| ${name} | ${#full_list[@]} | $(ls -l ${BASE_PATH}/out/${name}/full-sdk/compile-success-log|grep "^-"|wc -l) | $(ls -l ${BASE_PATH}/out/${name}/full-sdk/compile-error-log|grep "^-"|wc -l) | "`expr $(ls -l ${BASE_PATH}/out/${name}/full-sdk/hap-out-with-nosigned|grep "^-"|wc -l) / 2`" | "`expr $(ls -l ${BASE_PATH}/out/${name}/full-sdk/hap-out-with-signed|grep "^-"|wc -l) / 2` 6726e7c69efSopenharmony_ciif (( $(ls -l ${BASE_PATH}/out/${name}/full-sdk/compile-error-log|grep "^-"|wc -l) > 0 )); then 6736e7c69efSopenharmony_ci echo "| 失败项目列表|-------------|-------------|-------------|-------------|-------------" 6746e7c69efSopenharmony_ci for z in `ls ${BASE_PATH}/out/${name}/full-sdk/compile-error-log` 6756e7c69efSopenharmony_ci do 6766e7c69efSopenharmony_ci z=${z//_//} 6776e7c69efSopenharmony_ci z=${z%.log} 6786e7c69efSopenharmony_ci echo "| "${z}" |" 6796e7c69efSopenharmony_ci done 6806e7c69efSopenharmony_cifi 6816e7c69efSopenharmony_ciecho "| 失败项目日志汇总地址|-------------|-------------|-------------------" 6826e7c69efSopenharmony_ciecho "| ${BASE_PATH}/out/${name}/full-sdk/compile-error-log" 6836e7c69efSopenharmony_ciecho "|-------------|-------------|-------------|-------------|-------------" 6846e7c69efSopenharmony_ciecho "| 成功项目日志汇总地址|-------------|-------------|-------------------" 6856e7c69efSopenharmony_ciecho "| ${BASE_PATH}/out/${name}/full-sdk/compile-success-log" 6866e7c69efSopenharmony_ciecho "| 不含测试用例项目|-------------|-------------|-------------------" 6876e7c69efSopenharmony_ci for simple in ${simple_list[@]};do 6886e7c69efSopenharmony_ci echo "| "${simple}" |" 6896e7c69efSopenharmony_ci done 6906e7c69efSopenharmony_ciecho "|-------------|-------------|-------------|-------------|-------------" 6916e7c69efSopenharmony_ciecho "compile completed..." 692