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