Initial project
This commit is contained in:
77
scripts/bump_sdk.sh
Executable file
77
scripts/bump_sdk.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
# 批量升级 Dart / Flutter SDK 版本约束
|
||||
#
|
||||
# 无参数:从官方拉最新稳定版,Dart + Flutter 一起升级:
|
||||
# melos run sdk:bump
|
||||
#
|
||||
# 只升 Dart(Flutter 下限不变):
|
||||
# melos run sdk:bump -- --dart 3.12.0
|
||||
#
|
||||
# 只升 Flutter 下限(Dart 不变):
|
||||
# melos run sdk:bump -- --flutter 3.40.0
|
||||
#
|
||||
# 手动指定两者(CI 固定版本):
|
||||
# melos run sdk:bump -- --dart 3.12.0 --flutter 3.40.0
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DART_VERSION=""
|
||||
FLUTTER_VERSION=""
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--dart) DART_VERSION="$2"; shift 2 ;;
|
||||
--flutter) FLUTTER_VERSION="$2"; shift 2 ;;
|
||||
*) echo "Unknown argument: $1"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 无参数:从官方接口获取最新稳定版本,Dart + Flutter 一起升级
|
||||
if [[ -z "$DART_VERSION" ]] && [[ -z "$FLUTTER_VERSION" ]]; then
|
||||
OS_TYPE="macos"
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
OS_TYPE="linux"
|
||||
fi
|
||||
|
||||
RELEASES_URL="https://storage.googleapis.com/flutter_infra_release/releases/releases_${OS_TYPE}.json"
|
||||
echo "Fetching latest stable Flutter version from flutter.dev..."
|
||||
|
||||
RELEASES_JSON=$(curl -sf "$RELEASES_URL") || {
|
||||
echo "Error: Failed to fetch Flutter releases from $RELEASES_URL"
|
||||
exit 1
|
||||
}
|
||||
|
||||
read -r FLUTTER_VERSION DART_VERSION <<< "$(echo "$RELEASES_JSON" | python3 - <<'PY'
|
||||
import json, sys, re
|
||||
d = json.load(sys.stdin)
|
||||
stable_hash = d["current_release"]["stable"]
|
||||
release = next(r for r in d["releases"] if r["hash"] == stable_hash)
|
||||
flutter_ver = release["version"].lstrip("v")
|
||||
dart_ver = re.search(r"[\d]+\.[\d]+\.[\d]+", release["dart_sdk_version"]).group()
|
||||
print(flutter_ver, dart_ver)
|
||||
PY
|
||||
)"
|
||||
fi
|
||||
|
||||
PUBSPECS=$(find . \
|
||||
-name "pubspec.yaml" \
|
||||
! -path "*/.dart_tool/*" \
|
||||
! -path "*/build/*" \
|
||||
! -path "*/.pub-cache/*")
|
||||
|
||||
if [[ -n "$DART_VERSION" ]]; then
|
||||
echo "Dart SDK : ^$DART_VERSION"
|
||||
echo "$PUBSPECS" | xargs sed -i '' \
|
||||
"s/sdk: \^[0-9][0-9.]*[0-9]/sdk: ^$DART_VERSION/g"
|
||||
fi
|
||||
|
||||
if [[ -n "$FLUTTER_VERSION" ]]; then
|
||||
echo "Flutter SDK : >=$FLUTTER_VERSION"
|
||||
echo "$PUBSPECS" | xargs sed -i '' \
|
||||
"s/flutter: '>=[0-9][0-9.]*[0-9]'/flutter: '>=$FLUTTER_VERSION'/g"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Running dart pub get..."
|
||||
dart pub get
|
||||
echo "Done."
|
||||
Reference in New Issue
Block a user