lanch.sh 11.6 KB
Newer Older
wenliang999's avatar
wenliang999 已提交
1 2 3 4 5
#!/bin/bash


function SCRIPT_RUN(){
	local SCRIPT_NAME=${BASH_SOURCE[0]##*/}
wenliang999's avatar
wenliang999 已提交
6
	local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}} >/dev/null 1>/dev/null 2>/dev/null; fi; pwd))
wenliang999's avatar
wenliang999 已提交
7 8 9 10 11 12 13
	#[ "$0" == "${BASH_SOURCE[0]}" ] && echo -e "\033[1;31m[ERROR](${BASH_SOURCE[0]##*/}) Using the shell \"source\" command to this script.\033[0m \033[0;33msource ${BASH_SOURCE[0]##*/}\033[0m" && return

	echo "SCRIPT_PATH=${SCRIPT_PATH}"


	# -------- -------- -------- -------- -------- -------- -------- -------- -------- --------
	local LANCH_MINI_VERSION="1.0.0"
wenliang999's avatar
wenliang999 已提交
14
	local LANCH_MINI_REPO_FILE="https://gitcode.net/codefast/standard/lanch_script/-/raw/dev/master/kernal/${SCRIPT_NAME}"
wenliang999's avatar
wenliang999 已提交
15 16

	[[   " $@ " =~ " --help " ]] && echo "${SCRIPT_NAME}, ver=${LANCH_MINI_VERSION} (${LANCH_MINI_REPO_FILE})" && return
wenliang999's avatar
wenliang999 已提交
17 18 19 20 21 22 23 24 25 26
	if [[   " $@ " =~ " --releasesync " ]] ; then
		DATE_CURR=$(date "+%Y.%m.%d_%H.%M.%S")
		rm /tmp/LANCH_MINI_TEMP_${DATE_CURR} -rf;
		mkdir -p /tmp/LANCH_MINI_TEMP_${DATE_CURR}
		wget ${LANCH_MINI_REPO_FILE} -P /tmp/LANCH_MINI_TEMP_${DATE_CURR}
		chmod +x /tmp/LANCH_MINI_TEMP_${DATE_CURR}/${LANCH_MINI_REPO_FILE##*/}
		mv /tmp/LANCH_MINI_TEMP_${DATE_CURR}/${LANCH_MINI_REPO_FILE##*/} ${SCRIPT_PATH}/${SCRIPT_NAME}
		rm /tmp/LANCH_MINI_TEMP_${DATE_CURR} -rf;
		return
	fi
wenliang999's avatar
wenliang999 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308



	LANCH_MINI_FIND_PATH=${SCRIPT_PATH}/lanch_script

	LANCH_MINI_KEYWORD_RULE0_NAME="lanch_name" 
	LANCH_MINI_KEYWORD_RULE0_ID__="lanch_id"
	LANCH_MINI_KEYWORD_RULE0_HELP="lanch_help"
	LANCH_MINI_KEYWORD_RULE0_ARGV="lanch_argv"

	# ----------------------------------------------------------------------------------------------------
	# lanch_name : build_aarch64
	# lanch_id   : 21
	# lanch_help : 编译aarch64版本
	# lanch_argv : [INIT] 编译初始化(执行cmake)(默认不执行)
	# lanch_argv : [CLEAN]编译清除(make clean)
	# lanch_argv : [DEL]  编译删除(rm build_dir)
	# ----------------------------------------------------------------------------------------------------
	LANCH_MINI_KEYWORD_RULE1_NAME="# lanch_name=" 
	LANCH_MINI_KEYWORD_RULE1_ID00="# lanch_id00="
	LANCH_MINI_KEYWORD_RULE1_ID__="# lanch_id  ="
	LANCH_MINI_KEYWORD_RULE1_HELP="# lanch_help="
	LANCH_MINI_KEYWORD_RULE1_ARGV="# lanch_argv="

	LANCH_MINI_KEYWORD_RULE2_NAME="# lanch_name:" 
	LANCH_MINI_KEYWORD_RULE2_ID00="# lanch_id00:"
	LANCH_MINI_KEYWORD_RULE2_ID__="# lanch_id  :"
	LANCH_MINI_KEYWORD_RULE2_HELP="# lanch_help:"
	LANCH_MINI_KEYWORD_RULE2_ARGV="# lanch_argv:"

	LANCH_MINI_KEYWORD_RULE3_NAME="# lanch_name : " 
	LANCH_MINI_KEYWORD_RULE3_ID00="# lanch_id00 : "
	LANCH_MINI_KEYWORD_RULE3_ID__="# lanch_id   : "
	LANCH_MINI_KEYWORD_RULE3_HELP="# lanch_help : "
	LANCH_MINI_KEYWORD_RULE3_ARGV="# lanch_argv : "


	LANCH_MINI_ENABLE_NAME_USE_FILENAME=0


	unset LANCH_MINI_LIST_NAME         #脚本标题
	unset LANCH_MINI_LIST_ID00         #脚本序号
	unset LANCH_MINI_LIST_HELP         #脚本说明信息
	unset LANCH_MINI_LIST_ARGV         #脚本参数
	unset LANCH_MINI_LIST_FILE         #脚本文件名
	unset LANCH_MINI_LIST_NUM          #脚本数量
	unset LANCH_MINI_LIST_ID00_MAX     #脚本序号.数值最大值
	unset LANCH_MINI_LIST_NAME_SIZEMAX #脚本标题.长度最大值

	LANCH_MINI_LIST_NUM=0
	LANCH_MINI_LIST_ID00_MAX=0          
	LANCH_MINI_LIST_NAME_SIZEMAX=0


	function LANCH_MINI_FUNCTION__LOADING()
	{
		lanch_find_file=$(find ${LANCH_MINI_FIND_PATH} -maxdepth 1 -type f -name "*.sh")
		
		unset LANCH_MINI_LIST_BAK_FILE
		unset LANCH_MINI_LIST_BAK_NAME
		unset LANCH_MINI_LIST_BAK_ID00
		unset LANCH_MINI_LIST_BAK_HELP
		unset LANCH_MINI_LIST_BAK_ARGV
		LANCH_MINI_LIST_BAK_NUM=0
		
		for lanch_one_file in ${lanch_find_file};  do   

			lanch_one_name=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_NAME}|${LANCH_MINI_KEYWORD_RULE2_NAME}|${LANCH_MINI_KEYWORD_RULE3_NAME}")
			lanch_one_id00=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_ID00}|${LANCH_MINI_KEYWORD_RULE2_ID00}|${LANCH_MINI_KEYWORD_RULE3_ID00} | ${LANCH_MINI_KEYWORD_RULE1_ID__}|${LANCH_MINI_KEYWORD_RULE2_ID__}|${LANCH_MINI_KEYWORD_RULE3_ID__}")
			lanch_one_help=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_HELP}|${LANCH_MINI_KEYWORD_RULE2_HELP}|${LANCH_MINI_KEYWORD_RULE3_HELP}")
			lanch_one_argv=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_ARGV}|${LANCH_MINI_KEYWORD_RULE2_ARGV}|${LANCH_MINI_KEYWORD_RULE3_ARGV}")


			lanch_one_name=${lanch_one_name//"${LANCH_MINI_KEYWORD_RULE1_NAME}"/}
			lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE1_ID00}"/}
			lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE1_ID__}"/}
			lanch_one_help=${lanch_one_help//"${LANCH_MINI_KEYWORD_RULE1_HELP}"/}
			lanch_one_argv=${lanch_one_argv//"${LANCH_MINI_KEYWORD_RULE1_ARGV}"/}
			
			lanch_one_name=${lanch_one_name//"${LANCH_MINI_KEYWORD_RULE2_NAME}"/}
			lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE2_ID00}"/}
			lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE2_ID__}"/}
			lanch_one_help=${lanch_one_help//"${LANCH_MINI_KEYWORD_RULE2_HELP}"/}
			lanch_one_argv=${lanch_one_argv//"${LANCH_MINI_KEYWORD_RULE2_ARGV}"/}
			
			lanch_one_name=${lanch_one_name//"${LANCH_MINI_KEYWORD_RULE3_NAME}"/}
			lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE3_ID00}"/}
			lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE3_ID__}"/}
			lanch_one_help=${lanch_one_help//"${LANCH_MINI_KEYWORD_RULE3_HELP}"/}
			lanch_one_argv=${lanch_one_argv//"${LANCH_MINI_KEYWORD_RULE3_ARGV}"/}

			

			
			## 如果没有lanch_name使用文件名
			if [ ${LANCH_MINI_ENABLE_NAME_USE_FILENAME} == 1 ]; then
				if [ ! ${lanch_one_name} ]; then
					lanch_one_name=${lanch_one_file##*/}
					lanch_one_name=${lanch_one_name%.*}
				fi
			fi
			
			## LANCH_ID00重名
			if [ "${LANCH_MINI_LIST_ID00[lanch_one_id00]}" == "${lanch_one_id00}" ]; then
				lanch_one_id00=
			fi
			

			## 如果有lanch_name,认为是有效脚本
			if [ "${lanch_one_name}" ]; then
				## 如果有lanch_id00,存入有效脚本list;否则存入备份list
				if [ ${lanch_one_id00} ]; then

					LANCH_MINI_LIST_FILE[lanch_one_id00]=${lanch_one_file}
					LANCH_MINI_LIST_NAME[lanch_one_id00]=${lanch_one_name}
					LANCH_MINI_LIST_ID00[lanch_one_id00]=${lanch_one_id00}
					LANCH_MINI_LIST_HELP[lanch_one_id00]=${lanch_one_help}
					LANCH_MINI_LIST_ARGV[lanch_one_id00]=${lanch_one_argv}
					LANCH_MINI_LIST_NUM=`expr $LANCH_MINI_LIST_NUM + 1`
					
					if [ ${LANCH_MINI_LIST_ID00_MAX} -lt ${lanch_one_id00} ]; then
						LANCH_MINI_LIST_ID00_MAX=${lanch_one_id00}
					fi				
					if [ ${LANCH_MINI_LIST_NAME_SIZEMAX} -lt ${#lanch_one_name} ]; then
						LANCH_MINI_LIST_NAME_SIZEMAX=${#lanch_one_name}
					fi
				else
					LANCH_MINI_LIST_BAK_FILE[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_file}
					LANCH_MINI_LIST_BAK_NAME[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_name}
					LANCH_MINI_LIST_BAK_ID00[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_id00}
					LANCH_MINI_LIST_BAK_HELP[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_help}
					LANCH_MINI_LIST_BAK_ARGV[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_argv}
					LANCH_MINI_LIST_BAK_NUM=`expr $LANCH_MINI_LIST_BAK_NUM + 1`
				fi
			fi
			
		
		done   

		## 备份list导入有效脚本list
		for((index =0;index<${LANCH_MINI_LIST_BAK_NUM}; index++)); do
			lanch_one_file=${LANCH_MINI_LIST_BAK_FILE[index]##*/}
			lanch_one_name=${LANCH_MINI_LIST_BAK_NAME[index]##*/}
			lanch_one_id00=${LANCH_MINI_LIST_BAK_ID00[index]}
			lanch_one_help=${LANCH_MINI_LIST_BAK_HELP[index]}
			lanch_one_argv=${LANCH_MINI_LIST_BAK_ARGV[index]}
			
			for((index_1=0;index_1<=${LANCH_MINI_LIST_ID00_MAX};index_1++)); do
				if [ ! ${LANCH_MINI_LIST_ID00[index_1]} ]; then
					lanch_one_id00=${index_1}
						LANCH_MINI_LIST_FILE[lanch_one_id00]=${lanch_one_file}
						LANCH_MINI_LIST_NAME[lanch_one_id00]=${lanch_one_name}
						LANCH_MINI_LIST_ID00[lanch_one_id00]=${lanch_one_id00}
						LANCH_MINI_LIST_HELP[lanch_one_id00]=${lanch_one_help}
						LANCH_MINI_LIST_ARGV[lanch_one_id00]=${lanch_one_argv}
						LANCH_MINI_LIST_NUM=`expr $LANCH_MINI_LIST_NUM + 1`

						if [ ${LANCH_MINI_LIST_ID00_MAX} -lt ${lanch_one_id00} ]; then
							LANCH_MINI_LIST_ID00_MAX=${lanch_one_id00}
						fi
						if [ ${LANCH_MINI_LIST_NAME_SIZEMAX} -lt ${#lanch_one_name} ]; then
							LANCH_MINI_LIST_NAME_SIZEMAX=${#lanch_one_name}
						fi
					break
				fi
			done	
		
		done  	
		
		unset lanch_find_file
		unset LANCH_MINI_LIST_BAK_FILE
		unset LANCH_MINI_LIST_BAK_NAME
		unset LANCH_MINI_LIST_BAK_ID00
		unset LANCH_MINI_LIST_BAK_HELP
		unset LANCH_MINI_LIST_BAK_ARGV
		unset LANCH_MINI_LIST_BAK_NUM
	}
	function LANCH_MINI_FUNCTION__INFO()
	{
		echo "LANCH SCRIPT LIST [${LANCH_MINI_LIST_NUM}]:"			
		
		unset INFO_TOTAL
				
		SCRIPT_ID00MAX_LEN=${#LANCH_MINI_LIST_ID00_MAX}
		
		unset INFO_TAB_SPACE
		for((i=0;i<${SCRIPT_ID00MAX_LEN}+${LANCH_MINI_LIST_NAME_SIZEMAX}+4;i++)); do
			INFO_TAB_SPACE="${INFO_TAB_SPACE} "
		done	
		for((index=0;index<=${LANCH_MINI_LIST_ID00_MAX};index++)); do
			#去除回车$(echo ${})
			SCRIPT_FILE=${LANCH_MINI_LIST_FILE[index]##*/}
			SCRIPT_NAME=${LANCH_MINI_LIST_NAME[index]}
			SCRIPT_ID00=${LANCH_MINI_LIST_ID00[index]}
			SCRIPT_HELP=${LANCH_MINI_LIST_HELP[index]}
			SCRIPT_ARGV=${LANCH_MINI_LIST_ARGV[index]}

			
			if [ ${SCRIPT_ID00} ]; then			
				SCRIPT_NAME_LEN=${#SCRIPT_NAME}
				SCRIPT_ID00_LEN=${#SCRIPT_ID00}
				SCRIPT_ARGV_LEN=${#SCRIPT_ARGV}
				
				SCRIPT_ID00_PACKMAX=${SCRIPT_ID00}
				for((i=${SCRIPT_ID00_LEN};i<${SCRIPT_ID00MAX_LEN};i++)); do
					SCRIPT_ID00_PACKMAX=" ${SCRIPT_ID00_PACKMAX}"
				done
				SCRIPT_NAME_PACKMAX=${SCRIPT_NAME}
				for((i=${SCRIPT_NAME_LEN};i<${LANCH_MINI_LIST_NAME_SIZEMAX};i++)); do
					SCRIPT_NAME_PACKMAX="${SCRIPT_NAME_PACKMAX} "
				done			
					
				INFO_ONE="\033[0;35m[${SCRIPT_ID00_PACKMAX}]\033[0m \033[0;32m${SCRIPT_NAME_PACKMAX}\033[0m \033[0;33m说明:${SCRIPT_HELP}\033[0m"
				if [ ${SCRIPT_ARGV_LEN} -gt 1 ]; then		
					SCRIPT_ARGV_MODE=1
					if [ ${SCRIPT_ARGV_MODE} == 1 ]; then		
						echo "${SCRIPT_ARGV}" > tmp.txt
						while read SCRIPT_ARGV_LINE
						do 
							INFO_ONE="${INFO_ONE}\n${INFO_TAB_SPACE}\033[0;36m参数:${SCRIPT_ARGV_LINE}\033[0m"
						done < tmp.txt
						rm tmp.txt
					else
						SCRIPT_ARGV_LINE1=$(echo ${SCRIPT_ARGV})
						#INFO_ONE="${INFO_ONE}\n${INFO_TAB_SPACE}\033[0;36mUsage:${SCRIPT_ARGV_LINE1}\033[0m"
						INFO_ONE="${INFO_ONE} \033[0;36mUsage:${SCRIPT_ARGV_LINE1}\033[0m"
					fi
				fi
				INFO_TOTAL="${INFO_TOTAL}${INFO_ONE}\n"
			fi
		done  
		echo -en "${INFO_TOTAL}"
	}


	#解析
	LANCH_MINI_FUNCTION__LOADING

	#输入信息,脚本选择
	if [ $1 ]; then
		LANCH_SELECT=$1
		shift
		LANCH_ARGV=$@
	else
		LANCH_MINI_FUNCTION__INFO
		echo "请选择"
		read LANCH_SELECT		

		if [ ! ${LANCH_SELECT} ]; then
			exit
		fi

		SCRIPT_ARGV=${LANCH_MINI_LIST_ARGV[LANCH_SELECT]}
		SCRIPT_ARGV_LEN=${#SCRIPT_ARGV}
		if [ ${SCRIPT_ARGV_LEN} -gt 1 ]; then		
				echo "${SCRIPT_ARGV}" > tmp.txt
				INFO_ONE="\033[0;36m参数:\033[0m"
				while read SCRIPT_ARGV_LINE
				do 
					INFO_ONE="${INFO_ONE}\n\033[0;36m   ${SCRIPT_ARGV_LINE}\033[0m"
				done < tmp.txt
				rm tmp.txt
				echo -e "${INFO_ONE}"
				
				echo "请输入参数"
				read LANCH_ARGV
		fi		
	fi
	COMMAND_LINE="${LANCH_MINI_LIST_FILE[${LANCH_SELECT}]} ${LANCH_ARGV}"

	#输入信息,脚本确认
	echo -e "已选择: "
	echo -e "   \033[1;35m[${LANCH_SELECT}] \033[0m\033[1;32m${LANCH_MINI_LIST_NAME[${LANCH_SELECT}]}\033[0m"
	echo -e "   \033[0;36m${COMMAND_LINE}\033[0m"

	#执行
	${COMMAND_LINE}

}

function SCRIPT_DEBUGING(){
	local SCRIPT_NAME=${BASH_SOURCE[0]##*/}
wenliang999's avatar
wenliang999 已提交
309
	local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}} >/dev/null 1>/dev/null 2>/dev/null; fi; pwd))
wenliang999's avatar
wenliang999 已提交
310 311 312 313 314
}


[[ ! " $@ " =~ " debuging " ]] && SCRIPT_RUN $@
[[   " $@ " =~ " debuging " ]] && SCRIPT_DEBUGING $@
wenliang999's avatar
wenliang999 已提交
315