From c8ac35b9d992776a73b8f6d0d9b929da5b8dcded Mon Sep 17 00:00:00 2001 From: Leo Farias Date: Mon, 27 Jul 2020 12:30:02 -0400 Subject: [PATCH] Added notice and env var for blocked storage_url (#99) --- CHANGELOG.md | 4 ++++ coverage_badge.svg | 6 +++--- lib/exceptions.dart | 5 ++++- lib/flutter/flutter_releases.dart | 8 +++++++- lib/flutter/flutter_tools.dart | 2 +- lib/src/version.dart | 2 +- pubspec.yaml | 2 +- 7 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5279079..f5f67f63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.1.5 + +- Added message with notice and fix if Flutter releases URL is blocked in your country. + ## 1.1.4 - Nested FVM config look up, to be used on monorepo projects, or nested directories. diff --git a/coverage_badge.svg b/coverage_badge.svg index 03724845..01c94481 100644 --- a/coverage_badge.svg +++ b/coverage_badge.svg @@ -8,13 +8,13 @@ - + coverage coverage - 71% - 71% + 70% + 70% diff --git a/lib/exceptions.dart b/lib/exceptions.dart index 470d716a..7528faad 100644 --- a/lib/exceptions.dart +++ b/lib/exceptions.dart @@ -1,3 +1,4 @@ +import 'package:fvm/flutter/flutter_releases.dart'; import 'package:fvm/utils/logger.dart'; /// Logs error for verbose output @@ -80,7 +81,9 @@ class ExceptionMissingChannelVersion implements Exception { /// Could not fetch Flutter releases class ExceptionCouldNotFetchReleases implements Exception { - final message = 'Could not fetch Flutter releases.'; + final message = + '''Failed to retrieve the Flutter SDK from: ${getReleasesUrl()}\n Fvm will use the value set on env FLUTTER_STORAGE_BASE_URL to check versions.\nif you're located in China, please see this page: + https://flutter.dev/community/china'''; /// Constructor ExceptionCouldNotFetchReleases(); diff --git a/lib/flutter/flutter_releases.dart b/lib/flutter/flutter_releases.dart index a804739a..dd503bf5 100644 --- a/lib/flutter/flutter_releases.dart +++ b/lib/flutter/flutter_releases.dart @@ -4,10 +4,16 @@ import 'dart:io'; import 'package:fvm/exceptions.dart'; import 'package:http/http.dart' as http; +const STORAGE_BASE_URL = 'https://storage.googleapis.com'; + /// Gets platform specific release URL String getReleasesUrl({String platform}) { platform ??= Platform.operatingSystem; - return 'https://storage.googleapis.com/flutter_infra/releases/releases_$platform.json'; + final envVars = Platform.environment; + + var storageUrl = envVars['FLUTTER_STORAGE_BASE_URL'] ?? STORAGE_BASE_URL; + + return '$storageUrl/flutter_infra/releases/releases_$platform.json'; } FlutterReleases cacheReleasesRes; diff --git a/lib/flutter/flutter_tools.dart b/lib/flutter/flutter_tools.dart index dccbf3b6..b332526f 100644 --- a/lib/flutter/flutter_tools.dart +++ b/lib/flutter/flutter_tools.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:fvm/constants.dart'; import 'package:fvm/exceptions.dart'; -import 'package:fvm/flutter/flutter_releases.dart'; + import 'package:fvm/utils/git.dart'; import 'package:fvm/utils/helpers.dart'; diff --git a/lib/src/version.dart b/lib/src/version.dart index 2d981bfd..fd9e0938 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1,2 +1,2 @@ // Generated code. Do not modify. -const packageVersion = '1.1.4'; +const packageVersion = '1.1.5'; diff --git a/pubspec.yaml b/pubspec.yaml index 3fada05e..a4525d78 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: fvm description: A simple cli to manage Flutter SDK versions per project. Support channels, releases, and local cache for fast switching between versions. -version: 1.1.4 +version: 1.1.5 homepage: https://github.com/leoafarias/fvm environment: