remove some duplicated code (#656)
diff --git a/analysis_options.yaml b/analysis_options.yaml
index a747c44..1a9208e 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -14,6 +14,7 @@
linter:
rules:
+ - await_only_futures
- directives_ordering
- prefer_final_fields
- prefer_final_in_for_each
diff --git a/lib/src/sdk_manager.dart b/lib/src/sdk_manager.dart
index af9a071..1e38eae 100644
--- a/lib/src/sdk_manager.dart
+++ b/lib/src/sdk_manager.dart
@@ -15,7 +15,7 @@
static Sdk get sdk => _sdk ?? (_sdk = PlatformSdk());
static FlutterSdk get flutterSdk =>
- _flutterSdk ?? (_flutterSdk = FlutterSdk());
+ _flutterSdk ?? (_flutterSdk = FlutterSdk(flutterSdkPath));
static void setSdk(Sdk value) {
_sdk = sdk;
@@ -64,29 +64,30 @@
String get sdkPath => path.dirname(path.dirname(Platform.resolvedExecutable));
}
-/// The Flutter SDK is asuumed to be available at `./flutter-sdk/`.
-final flutterSdkPath =
- Directory(path.join(Directory.current.path, 'flutter-sdk'));
+String get flutterSdkPath => path.join(Directory.current.path, 'flutter-sdk');
/// Represents a Flutter SDK installation (which includes its own version of the
/// Dart SDK) present on the server.
class FlutterSdk extends Sdk {
+ final String flutterSdkPath;
+
String _versionFull = '';
String _flutterVersion = '';
+ FlutterSdk(this.flutterSdkPath);
+
@override
Future<void> init() async {
_versionFull =
- (await File(path.join(sdkPath, 'version')).readAsString()).trim();
+ (File(path.join(sdkPath, 'version')).readAsStringSync()).trim();
_flutterVersion =
- (await File(path.join(flutterSdkPath.path, 'version')).readAsString())
- .trim();
+ (File(path.join(flutterSdkPath, 'version')).readAsStringSync()).trim();
}
@override
String get sdkPath => path.join(flutterBinPath, 'cache', 'dart-sdk');
- String get flutterBinPath => path.join(flutterSdkPath.path, 'bin');
+ String get flutterBinPath => path.join(flutterSdkPath, 'bin');
@override
String get versionFull => _versionFull;
@@ -94,8 +95,6 @@
String get flutterVersion => _flutterVersion;
}
-// TODO: Have an option to skip git calls (for testing)?
-// TODO(devoncarew): Collapse this with the other SDK managers.
class DownloadingSdkManager {
DownloadingSdkManager();
@@ -111,7 +110,7 @@
/// `flutter-sdk-version.yaml` file.
///
/// Note that this is an expensive operation.
- Future<DownloadedFlutterSdk> createFromConfigFile() async {
+ Future<FlutterSdk> createFromConfigFile() async {
final Map<String, Object> sdkConfig = getSdkConfigInfo();
// flutter_sdk:
@@ -134,7 +133,7 @@
return createUsingFlutterVersion(version: config['version'] as String);
} else {
// Clone the repo if necessary but don't do any other setup.
- return _cloneSdkIfNecessary();
+ return (await _cloneSdkIfNecessary()).asFlutterSdk();
}
}
@@ -142,10 +141,10 @@
/// channel.
///
/// Note that this is an expensive operation.
- Future<DownloadedFlutterSdk> createUsingFlutterChannel({
+ Future<FlutterSdk> createUsingFlutterChannel({
@required String channel,
}) async {
- final DownloadedFlutterSdk sdk = await _cloneSdkIfNecessary();
+ final _DownloadedFlutterSdk sdk = await _cloneSdkIfNecessary();
// git checkout master
await sdk.checkout('master');
@@ -160,17 +159,17 @@
// git pull
await sdk.pull();
- return sdk;
+ return sdk.asFlutterSdk();
}
/// Create a Flutter SDK in `flutter-sdk/` that tracks a specific Flutter
/// version.
///
/// Note that this is an expensive operation.
- Future<DownloadedFlutterSdk> createUsingFlutterVersion({
+ Future<FlutterSdk> createUsingFlutterVersion({
@required String version,
}) async {
- final DownloadedFlutterSdk sdk = await _cloneSdkIfNecessary();
+ final _DownloadedFlutterSdk sdk = await _cloneSdkIfNecessary();
// git checkout master
await sdk.checkout('master');
@@ -179,11 +178,11 @@
// git checkout 1.25.0-8.1.pre
await sdk.checkout(version);
- return sdk;
+ return sdk.asFlutterSdk();
}
- Future<DownloadedFlutterSdk> _cloneSdkIfNecessary() async {
- final DownloadedFlutterSdk sdk = DownloadedFlutterSdk();
+ Future<_DownloadedFlutterSdk> _cloneSdkIfNecessary() async {
+ final _DownloadedFlutterSdk sdk = _DownloadedFlutterSdk(flutterSdkPath);
if (!Directory(sdk.flutterSdkPath).existsSync()) {
// This takes perhaps ~20 seconds.
@@ -203,22 +202,23 @@
}
}
-class DownloadedFlutterSdk extends Sdk {
- @override
+class _DownloadedFlutterSdk {
+ final String flutterSdkPath;
+
+ _DownloadedFlutterSdk(this.flutterSdkPath);
+
Future<void> init() async {
// flutter --version takes ~28s
await _execLog('bin/flutter', ['--version'], flutterSdkPath);
}
- @override
+ FlutterSdk asFlutterSdk() => FlutterSdk(flutterSdkPath);
+
String get sdkPath => path.join(flutterSdkPath, 'bin/cache/dart-sdk');
- @override
String get versionFull =>
File(path.join(sdkPath, 'version')).readAsStringSync().trim();
- String get flutterSdkPath => path.join(Directory.current.path, 'flutter-sdk');
-
String get flutterVersion =>
File(path.join(flutterSdkPath, 'version')).readAsStringSync().trim();
diff --git a/tool/grind.dart b/tool/grind.dart
index f51df71..7c0c66f 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -161,7 +161,7 @@
// run flutter pub get
await runWithLogging(
- path.join(flutterSdkPath.path, 'bin', 'flutter'),
+ path.join(flutterSdkPath, 'bin', 'flutter'),
arguments: ['pub', 'get'],
workingDirectory: dir.path,
);
@@ -197,7 +197,7 @@
// Make sure flutter-sdk/bin/cache/flutter_web_sdk/flutter_web_sdk/kernel/flutter_ddc_sdk.dill
// is installed.
await runWithLogging(
- path.join(flutterSdkPath.path, 'bin', 'flutter'),
+ path.join(flutterSdkPath, 'bin', 'flutter'),
arguments: ['precache', '--web'],
workingDirectory: dir.path,
);
@@ -205,10 +205,10 @@
// Build the artifacts using DDC:
// dart-sdk/bin/dartdevc -s kernel/flutter_ddc_sdk.dill
// --modules=amd package:flutter/animation.dart ...
- final compilerPath = path.join(
- flutterSdkPath.path, 'bin', 'cache', 'dart-sdk', 'bin', 'dartdevc');
- final dillPath = path.join(flutterSdkPath.path, 'bin', 'cache',
- 'flutter_web_sdk', 'flutter_web_sdk', 'kernel', 'flutter_ddc_sdk.dill');
+ final compilerPath =
+ path.join(flutterSdkPath, 'bin', 'cache', 'dart-sdk', 'bin', 'dartdevc');
+ final dillPath = path.join(flutterSdkPath, 'bin', 'cache', 'flutter_web_sdk',
+ 'flutter_web_sdk', 'kernel', 'flutter_ddc_sdk.dill');
final args = <String>[
'-s',
@@ -229,7 +229,7 @@
final artifactsDir = getDir('artifacts');
await artifactsDir.create();
- final sdkJsPath = path.join(flutterSdkPath.path,
+ final sdkJsPath = path.join(flutterSdkPath,
'bin/cache/flutter_web_sdk/flutter_web_sdk/kernel/amd/dart_sdk.js');
copy(getFile(sdkJsPath), artifactsDir);
@@ -245,7 +245,7 @@
@Task('Delete, re-download, and reinitialize the Flutter submodule.')
void setupFlutterSdk() async {
- await flutterSdkPath.delete(recursive: true);
+ await Directory(flutterSdkPath).delete(recursive: true);
final info = DownloadingSdkManager.getSdkConfigInfo();
print('Flutter SDK configuration: $info\n');
@@ -255,7 +255,7 @@
// Set up the Flutter SDK the way dart-services needs it.
- final flutterBinFlutter = path.join(flutterSdkPath.path, 'bin', 'flutter');
+ final flutterBinFlutter = path.join(flutterSdkPath, 'bin', 'flutter');
await runWithLogging(
flutterBinFlutter,
arguments: ['doctor'],
diff --git a/tool/update_sdk.dart b/tool/update_sdk.dart
index 583f98d..c375be6 100644
--- a/tool/update_sdk.dart
+++ b/tool/update_sdk.dart
@@ -12,7 +12,7 @@
print('configuration: $info\n');
final DownloadingSdkManager sdkManager = DownloadingSdkManager();
- final DownloadedFlutterSdk sdk = await sdkManager.createFromConfigFile();
+ final FlutterSdk sdk = await sdkManager.createFromConfigFile();
print('\nSDK setup complete (${sdk.flutterSdkPath}).');
}