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_ci
176e7c69efSopenharmony_ci#npm
186e7c69efSopenharmony_cinpm config set @ohos:registry=https://repo.harmonyos.com/npm/
196e7c69efSopenharmony_ci
206e7c69efSopenharmony_cidate_time=`date +"%Y%m%d%H%M%S"`
216e7c69efSopenharmony_ciCUR_PATH=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)
226e7c69efSopenharmony_ciBASE_PATH=$(dirname ${CUR_PATH})
236e7c69efSopenharmony_ciTEMP_SDK_PAK=${BASE_PATH}/temp_sdk_${date_time}
246e7c69efSopenharmony_ci
256e7c69efSopenharmony_ciarg_url=""
266e7c69efSopenharmony_ciarg_sdk_path=""
276e7c69efSopenharmony_ciarg_api_version=""
286e7c69efSopenharmony_ciarg_help="0"
296e7c69efSopenharmony_ci
306e7c69efSopenharmony_cifunction clear_dir(){
316e7c69efSopenharmony_ci        if [ ! -d "$1" ]; then
326e7c69efSopenharmony_ci                mkdir -p $1
336e7c69efSopenharmony_ci        else
346e7c69efSopenharmony_ci                rm -rf $1/*
356e7c69efSopenharmony_ci        fi
366e7c69efSopenharmony_ci}
376e7c69efSopenharmony_ci
386e7c69efSopenharmony_cifunction get_sdk_type(){
396e7c69efSopenharmony_ci	sdk_url=${1}
406e7c69efSopenharmony_ci	is_public=$(echo ${sdk_url} | grep "\-public")
416e7c69efSopenharmony_ci	if [[ ${is_public} != "" ]]; then
426e7c69efSopenharmony_ci                arg_sdk_type="public"
436e7c69efSopenharmony_ci		return
446e7c69efSopenharmony_ci        fi
456e7c69efSopenharmony_ci        is_full=$(echo ${sdk_url} | grep "\-full")
466e7c69efSopenharmony_ci        if [[ ${is_full} != "" ]]; then
476e7c69efSopenharmony_ci                arg_sdk_type="full"
486e7c69efSopenharmony_ci        fi
496e7c69efSopenharmony_ci	arg_sdk_type="unknown"
506e7c69efSopenharmony_ci}
516e7c69efSopenharmony_ci
526e7c69efSopenharmony_ci
536e7c69efSopenharmony_cifunction print_help() {
546e7c69efSopenharmony_ci  cat <<EOF
556e7c69efSopenharmony_ci  use update_sdk [options] <mainclass> [args...]
566e7c69efSopenharmony_ci
576e7c69efSopenharmony_ci    --url=[sdk url]
586e7c69efSopenharmony_ci    --sdk_path=[public sdk absolute address]
596e7c69efSopenharmony_ci
606e7c69efSopenharmony_ci    --help  - prints help screen
616e7c69efSopenharmony_ci
626e7c69efSopenharmony_ciEOF
636e7c69efSopenharmony_ci}
646e7c69efSopenharmony_ci
656e7c69efSopenharmony_cifunction parse_arguments() {
666e7c69efSopenharmony_ci        local helperKey="";
676e7c69efSopenharmony_ci        local helperValue="";
686e7c69efSopenharmony_ci        local current="";
696e7c69efSopenharmony_ci
706e7c69efSopenharmony_ci        while [ "$1" != "" ]; do
716e7c69efSopenharmony_ci                current=$1;
726e7c69efSopenharmony_ci                helperKey=${current#*--};
736e7c69efSopenharmony_ci                helperKey=${helperKey%%=*};
746e7c69efSopenharmony_ci                helperKey=$(echo "$helperKey" | tr '-' '_');
756e7c69efSopenharmony_ci                helperValue=${current#*=};
766e7c69efSopenharmony_ci                if [ "$helperValue" == "$current" ]; then
776e7c69efSopenharmony_ci                        helperValue="1";
786e7c69efSopenharmony_ci                fi
796e7c69efSopenharmony_ci                # echo "eval arg_$helperKey=\"$helperValue\"";
806e7c69efSopenharmony_ci
816e7c69efSopenharmony_ci                eval "arg_$helperKey=\"$helperValue\"";
826e7c69efSopenharmony_ci                shift
836e7c69efSopenharmony_ci        done
846e7c69efSopenharmony_ci}
856e7c69efSopenharmony_ci
866e7c69efSopenharmony_ciparse_arguments ${@};
876e7c69efSopenharmony_ci
886e7c69efSopenharmony_ciif [ "$arg_help" != "0" ]; then
896e7c69efSopenharmony_ci        print_help;
906e7c69efSopenharmony_ci        exit 1;
916e7c69efSopenharmony_cifi
926e7c69efSopenharmony_ci
936e7c69efSopenharmony_ciif [ "${arg_url}" == "" ]; then
946e7c69efSopenharmony_ci        echo "--url is not null"
956e7c69efSopenharmony_ci        exit 1;
966e7c69efSopenharmony_cifi
976e7c69efSopenharmony_ci
986e7c69efSopenharmony_ciif [ "${arg_sdk_path}" == "" ]; then
996e7c69efSopenharmony_ci        echo "--sdk_path is not null"
1006e7c69efSopenharmony_ci        exit 1;
1016e7c69efSopenharmony_cifi
1026e7c69efSopenharmony_ci
1036e7c69efSopenharmony_ci
1046e7c69efSopenharmony_ci
1056e7c69efSopenharmony_ci# 添加交互式判断 sdk目录是否删除 判空等操作
1066e7c69efSopenharmony_ciclear_dir ${arg_sdk_path}
1076e7c69efSopenharmony_ciclear_dir ${TEMP_SDK_PAK}
1086e7c69efSopenharmony_cicd ${TEMP_SDK_PAK}
1096e7c69efSopenharmony_ciwget ${arg_url}
1106e7c69efSopenharmony_ci
1116e7c69efSopenharmony_cifor z in `ls`
1126e7c69efSopenharmony_cido
1136e7c69efSopenharmony_ci	if [ "${z##*.}" == "gz" ]; then
1146e7c69efSopenharmony_ci                tar -zxf ${z}
1156e7c69efSopenharmony_ci        fi
1166e7c69efSopenharmony_cidone
1176e7c69efSopenharmony_ci
1186e7c69efSopenharmony_cisource_path=""
1196e7c69efSopenharmony_cifor z in ${TEMP_SDK_PAK}/*
1206e7c69efSopenharmony_cido
1216e7c69efSopenharmony_ci        if [ -d ${z}/linux ]; then
1226e7c69efSopenharmony_ci                source_path=${z}
1236e7c69efSopenharmony_ci        fi
1246e7c69efSopenharmony_cidone
1256e7c69efSopenharmony_cicd ${source_path}/linux/
1266e7c69efSopenharmony_cifor z in `ls`
1276e7c69efSopenharmony_cido
1286e7c69efSopenharmony_ci	if [ "${z##*.}" != "zip" ]; then
1296e7c69efSopenharmony_ci		continue
1306e7c69efSopenharmony_ci        fi
1316e7c69efSopenharmony_ci	echo "unzip ${z}ing..."
1326e7c69efSopenharmony_ci	unzip -oq ${z}
1336e7c69efSopenharmony_cidone
1346e7c69efSopenharmony_ci
1356e7c69efSopenharmony_ciif [ "${arg_api_version}" == "" ]; then
1366e7c69efSopenharmony_ci	for z in ${source_path}/linux/*
1376e7c69efSopenharmony_ci	do
1386e7c69efSopenharmony_ci        	if [ "${z##*.}" == "zip" ]; then
1396e7c69efSopenharmony_ci                	continue
1406e7c69efSopenharmony_ci        	fi
1416e7c69efSopenharmony_ci        	if [ -f "${z}" ]; then
1426e7c69efSopenharmony_ci                	continue
1436e7c69efSopenharmony_ci        	fi
1446e7c69efSopenharmony_ci		if [ -f "${z}/oh-uni-package.json" ]; then
1456e7c69efSopenharmony_ci			arg_api_version=$(cat ${z}/oh-uni-package.json | grep "apiVersion")
1466e7c69efSopenharmony_ci			break
1476e7c69efSopenharmony_ci		fi
1486e7c69efSopenharmony_ci	done
1496e7c69efSopenharmony_cifi
1506e7c69efSopenharmony_ciecho "apiVersion is ${arg_api_version##*:}"
1516e7c69efSopenharmony_citarget_path=${arg_sdk_path}
1526e7c69efSopenharmony_cifor z in ${source_path}/linux/*
1536e7c69efSopenharmony_cido
1546e7c69efSopenharmony_ci	if [ "${z##*.}" == "zip" ]; then
1556e7c69efSopenharmony_ci		continue
1566e7c69efSopenharmony_ci	fi
1576e7c69efSopenharmony_ci	if [ -f "${z}" ]; then
1586e7c69efSopenharmony_ci                continue
1596e7c69efSopenharmony_ci        fi
1606e7c69efSopenharmony_ci	echo "moving... ${z} to ${target_path}"
1616e7c69efSopenharmony_ci	mv ${z} ${target_path}/
1626e7c69efSopenharmony_ci	if [ ${z##*/} == "ets" ]; then
1636e7c69efSopenharmony_ci		echo "ets npm install"
1646e7c69efSopenharmony_ci		cd ${target_path}/${z##*/}/build-tools/ets-loader
1656e7c69efSopenharmony_ci		npm install > /dev/null 2>&1
1666e7c69efSopenharmony_ci	fi
1676e7c69efSopenharmony_ci	if [ ${z##*/} == "js" ]; then
1686e7c69efSopenharmony_ci		echo "js npm install"
1696e7c69efSopenharmony_ci                cd ${target_path}/${z##*/}/build-tools/ace-loader
1706e7c69efSopenharmony_ci                npm install > /dev/null 2>&1
1716e7c69efSopenharmony_ci        fi
1726e7c69efSopenharmony_ci
1736e7c69efSopenharmony_cidone
1746e7c69efSopenharmony_cirm -rf ${TEMP_SDK_PAK}
1756e7c69efSopenharmony_ci
1766e7c69efSopenharmony_ciecho "sdk undate success.."
1776e7c69efSopenharmony_ciexit 0
178