搞个切换Flutter版本的脚本

211 阅读1分钟

1.我的环境是Mac 、zshrc

2.非 zshrc 的需要修改基本

3.FLUTTER_PATH123 需要修改成自己sdk的路径

4. zshrc中需要注释和解除注释的内容行,前面不要有空格

脚本代码

#!/bin/bash

printf "
#######################################################################
#                     FLutter SDK 版本切换脚本
#                             wkw
#                   【2.10.5】【3.17.2】【3.19.1】
#                  当前使用添加注释、删除注释的方法来切换
#######################################################################
"


ZSHRC_FILE="$HOME/.zshrc"
FLUTTER_PATH1="/Applications/_flutter/bin"
FLUTTER_PATH2="/Applications/_flutter_flutter/flutter_flutter/bin"
FLUTTER_GIT_URL="export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git"
FLUTTER_PATH3="/Applications/_flutter3.19.1/bin"

function comment_out_path {
    if grep -q "^export PATH=$1" "$ZSHRC_FILE"; then
        sed -i '' "s|^export PATH=$1:\$PATH|# export PATH=$1:\$PATH|" "$ZSHRC_FILE"
        if [[ $? -eq 0 ]]; then
            echo "     🐯🐯已注释: export PATH=$1:\$PATH"
        else
            echo "     🐯🐯未能注释: export PATH=$1:\$PATH"
        fi
    else
        echo "     🐯🐯未找到: export PATH=$1:\$PATH"
    fi
}

function uncomment_path {
    if grep -q "^# export PATH=$1" "$ZSHRC_FILE"; then
        sed -i '' "s|^# export PATH=$1:\$PATH|export PATH=$1:\$PATH|" "$ZSHRC_FILE"
        if [[ $? -eq 0 ]]; then
            echo "     🐯🐯已取消注释: export PATH=$1:\$PATH"
        else
            echo "     🐯🐯未能取消注释: export PATH=$1:\$PATH"
        fi
    else
        echo "     🐯🐯未找到注释: export PATH=$1:\$PATH"
    fi
}

function comment_out_git_url {
    if grep -q "^$FLUTTER_GIT_URL" "$ZSHRC_FILE"; then
        sed -i '' "s|^$FLUTTER_GIT_URL|# $FLUTTER_GIT_URL|" "$ZSHRC_FILE"
        if [[ $? -eq 0 ]]; then
            echo "     🐯🐯已注释: $FLUTTER_GIT_URL"
        else
            echo "     🐯🐯未能注释: $FLUTTER_GIT_URL"
        fi
    else
        echo "     🐯🐯未找到: $FLUTTER_GIT_URL"
    fi
}

function uncomment_git_url {
    if grep -q "^# $FLUTTER_GIT_URL" "$ZSHRC_FILE"; then
        sed -i '' "s|^# $FLUTTER_GIT_URL|$FLUTTER_GIT_URL|" "$ZSHRC_FILE"
        if [[ $? -eq 0 ]]; then
            echo "     🐯🐯已取消注释: $FLUTTER_GIT_URL"
        else
            echo "     🐯🐯未能取消注释: $FLUTTER_GIT_URL"
        fi
    else
        echo "     🐯🐯未找到注释: $FLUTTER_GIT_URL"
    fi
}

while :; do
  printf "
  🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯 选择你的FlutterSdk版本: 🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯
   1. ⚠️ 【Flutter】【2.10.5】 大象、驾多宝
   2. ⚠️ 【Flutter】【3.7.12】 ohos 鸿蒙适配版本
   3. ⚠️ 【Flutter】【3.19.1】 大象2.0
"
  read -p "   🐯🐯 == 请输入: " number
  if [[ ! ${number} =~ ^[1-3q]$ ]]; then
    echo "⚠️ 输入错误! 只允许输入 1 ~ 3 和 q"
  else
    case "$number" in
        1)
          echo "     <══════ 选择了 2.10.5 版本 ══════>"
          comment_out_path "$FLUTTER_PATH2"
          comment_out_path "$FLUTTER_PATH3"
          uncomment_path "$FLUTTER_PATH1"
          comment_out_git_url
          break
          ;;
        2)
          echo "     <══════ 选择了 3.7.12 版本  ══════>"
          comment_out_path "$FLUTTER_PATH1"
          comment_out_path "$FLUTTER_PATH3"
          uncomment_path "$FLUTTER_PATH2"
          uncomment_git_url
          break
          ;;
        3)
          echo "     <══════ 选择了 3.19.1 版本  ══════>"
          comment_out_path "$FLUTTER_PATH1"
          comment_out_path "$FLUTTER_PATH2"
          uncomment_path "$FLUTTER_PATH3"
          comment_out_git_url
          break
          ;;
        q)
          exit
          ;;
    esac
  fi
done

echo " "
echo "  <════════════ 修改完毕 ════════════>"
# 打印调试信息
echo " "
echo "  <══════ 重新加载 .zshrc 文件  ══════>"
source "$ZSHRC_FILE"



# 打印 .zshrc 文件内容
function print_content {
  while IFS= read -r line; do
    printf "  ║ %-120s \n" "$line"
  done < "$ZSHRC_FILE"
}
 echo " "
 echo "  <════════════════════════════当前 .zshrc 文件内容═════════════════════════════>"
 echo "  ╔════════════════════════════════════════════════════════════════════════════"
                print_content
 echo "  ╚════════════════════════════════════════════════════════════════════════════"
 
 echo " "
# 执行 flutter doctor
echo " <══════  执行 flutter doctor ══════>"
flutter doctor