hookehuyr

refactor(deploy): 使用函数替换关联数组以提高兼容性

将环境列表从关联数组改为函数实现,以兼容更多shell版本。同时提取获取所有环境的逻辑到单独函数,提高代码可维护性。
Showing 1 changed file with 26 additions and 15 deletions
...@@ -29,15 +29,25 @@ print_error() { ...@@ -29,15 +29,25 @@ print_error() {
29 } 29 }
30 30
31 # 支持的环境列表 31 # 支持的环境列表
32 -declare -A ENVIRONMENTS 32 +# 使用函数方式实现环境映射,兼容更多shell版本
33 -ENVIRONMENTS["dev"]="开发环境" 33 +get_environment_name() {
34 -ENVIRONMENTS["oa"]="OA环境" 34 + case "$1" in
35 -ENVIRONMENTS["mituo"]="弥陀寺环境" 35 + "dev") echo "开发环境" ;;
36 -ENVIRONMENTS["guanzong"]="观宗寺环境" 36 + "oa") echo "OA环境" ;;
37 -ENVIRONMENTS["baorong"]="包容寺环境" 37 + "mituo") echo "弥陀寺环境" ;;
38 -ENVIRONMENTS["taishan"]="泰山寺环境" 38 + "guanzong") echo "观宗寺环境" ;;
39 -ENVIRONMENTS["xys"]="西园寺环境" 39 + "baorong") echo "包容寺环境" ;;
40 -ENVIRONMENTS["zentea"]="Zentea环境" 40 + "taishan") echo "泰山寺环境" ;;
41 + "xys") echo "西园寺环境" ;;
42 + "zentea") echo "Zentea环境" ;;
43 + *) echo "" ;;
44 + esac
45 +}
46 +
47 +# 获取所有支持的环境列表
48 +get_all_environments() {
49 + echo "dev oa mituo guanzong baorong taishan xys zentea"
50 +}
41 51
42 # 显示帮助信息 52 # 显示帮助信息
43 show_help() { 53 show_help() {
...@@ -47,8 +57,8 @@ show_help() { ...@@ -47,8 +57,8 @@ show_help() {
47 echo " ./deploy.sh [环境1] [环境2] [环境3] ..." 57 echo " ./deploy.sh [环境1] [环境2] [环境3] ..."
48 echo "" 58 echo ""
49 echo "支持的环境:" 59 echo "支持的环境:"
50 - for env in "${!ENVIRONMENTS[@]}"; do 60 + for env in $(get_all_environments); do
51 - echo " $env - ${ENVIRONMENTS[$env]}" 61 + echo " $env - $(get_environment_name "$env")"
52 done 62 done
53 echo "" 63 echo ""
54 echo "示例:" 64 echo "示例:"
...@@ -61,9 +71,10 @@ show_help() { ...@@ -61,9 +71,10 @@ show_help() {
61 # 检查环境是否有效 71 # 检查环境是否有效
62 validate_environment() { 72 validate_environment() {
63 local env=$1 73 local env=$1
64 - if [[ ! ${ENVIRONMENTS[$env]+_} ]]; then 74 + local env_name=$(get_environment_name "$env")
75 + if [[ -z "$env_name" ]]; then
65 print_error "不支持的环境: $env" 76 print_error "不支持的环境: $env"
66 - print_info "支持的环境: ${!ENVIRONMENTS[*]}" 77 + print_info "支持的环境: $(get_all_environments)"
67 return 1 78 return 1
68 fi 79 fi
69 return 0 80 return 0
...@@ -156,7 +167,7 @@ main() { ...@@ -156,7 +167,7 @@ main() {
156 167
157 if [[ "$1" == "all" ]]; then 168 if [[ "$1" == "all" ]]; then
158 # 部署到所有环境 169 # 部署到所有环境
159 - environments=("${!ENVIRONMENTS[@]}") 170 + environments=($(get_all_environments))
160 print_info "将部署到所有环境: ${environments[*]}" 171 print_info "将部署到所有环境: ${environments[*]}"
161 else 172 else
162 # 验证指定的环境 173 # 验证指定的环境
...@@ -174,7 +185,7 @@ main() { ...@@ -174,7 +185,7 @@ main() {
174 echo "" 185 echo ""
175 print_warning "即将部署到以下环境:" 186 print_warning "即将部署到以下环境:"
176 for env in "${environments[@]}"; do 187 for env in "${environments[@]}"; do
177 - echo " - $env (${ENVIRONMENTS[$env]})" 188 + echo " - $env ($(get_environment_name "$env"))"
178 done 189 done
179 echo "" 190 echo ""
180 read -p "确认继续? (y/N): " -n 1 -r 191 read -p "确认继续? (y/N): " -n 1 -r
......