Remove SdkManager (#688)

fixes: https://github.com/dart-lang/dart-pad/issues/1768
diff --git a/benchmark/bench.dart b/benchmark/bench.dart
index 936dca9..06af555 100644
--- a/benchmark/bench.dart
+++ b/benchmark/bench.dart
@@ -12,7 +12,7 @@
 import 'package:dart_services/src/common.dart';
 import 'package:dart_services/src/compiler.dart';
 import 'package:dart_services/src/protos/dart_services.pb.dart' as proto;
-import 'package:dart_services/src/sdk_manager.dart';
+import 'package:dart_services/src/sdk.dart';
 import 'package:logging/logging.dart';
 
 void main(List<String> args) async {
@@ -20,7 +20,7 @@
 
   final harness = BenchmarkHarness(asJson: json);
 
-  final compiler = Compiler(SdkManager.sdk);
+  final compiler = Compiler(Sdk());
 
   Logger.root.level = Level.WARNING;
   Logger.root.onRecord.listen((LogRecord record) {
diff --git a/bin/server_cloud_run.dart b/bin/server_cloud_run.dart
index 1f74f3e..3f3e9d6 100644
--- a/bin/server_cloud_run.dart
+++ b/bin/server_cloud_run.dart
@@ -8,10 +8,7 @@
 import 'dart:async';
 
 import 'package:dart_services/services_cloud_run.dart' as services_cloud_run;
-import 'package:dart_services/src/sdk_manager.dart';
 
 Future<void> main(List<String> args) async {
-  await SdkManager.sdk.init();
-
   return services_cloud_run.main(args);
 }
diff --git a/bin/server_dev.dart b/bin/server_dev.dart
index 50799e0..08df812 100644
--- a/bin/server_dev.dart
+++ b/bin/server_dev.dart
@@ -8,10 +8,7 @@
 import 'dart:async';
 
 import 'package:dart_services/services_dev.dart' as services_dev;
-import 'package:dart_services/src/sdk_manager.dart';
 
 Future<void> main(List<String> args) async {
-  await SdkManager.sdk.init();
-
   services_dev.main(args);
 }
diff --git a/lib/services_cloud_run.dart b/lib/services_cloud_run.dart
index 169e82c..060c018 100644
--- a/lib/services_cloud_run.dart
+++ b/lib/services_cloud_run.dart
@@ -16,7 +16,7 @@
 import 'src/common_server_api.dart';
 import 'src/common_server_impl.dart';
 import 'src/flutter_web.dart';
-import 'src/sdk_manager.dart';
+import 'src/sdk.dart';
 import 'src/server_cache.dart';
 import 'src/shelf_cors.dart' as shelf_cors;
 
@@ -53,7 +53,7 @@
 
   _logger.info('''Initializing dart-services:
     port: $port
-    sdkPath: ${SdkManager.sdk.sdkPath}
+    sdkPath: ${Sdk.sdkPath}
     redisServerUri: $redisServerUri
     Cloud Run Environment variables:
     $cloudRunEnvVars''');
diff --git a/lib/src/analysis_server.dart b/lib/src/analysis_server.dart
index dc76714..7b23cd7 100644
--- a/lib/src/analysis_server.dart
+++ b/lib/src/analysis_server.dart
@@ -18,7 +18,7 @@
 import 'protos/dart_services.pb.dart' as proto;
 import 'pub.dart';
 import 'scheduler.dart';
-import 'sdk_manager.dart';
+import 'sdk.dart';
 import 'utils.dart' as utils;
 
 final Logger _logger = Logger('analysis_server');
@@ -35,14 +35,14 @@
 const Duration _ANALYSIS_SERVER_TIMEOUT = Duration(seconds: 35);
 
 class DartAnalysisServerWrapper extends AnalysisServerWrapper {
-  DartAnalysisServerWrapper() : super(SdkManager.sdk.sdkPath);
+  DartAnalysisServerWrapper() : super(Sdk.sdkPath);
 
   @override
   String get _sourceDirPath => FlutterWebManager.dartTemplateProject.path;
 }
 
 class FlutterAnalysisServerWrapper extends AnalysisServerWrapper {
-  FlutterAnalysisServerWrapper() : super(SdkManager.sdk.sdkPath);
+  FlutterAnalysisServerWrapper() : super(Sdk.sdkPath);
 
   @override
   String get _sourceDirPath => FlutterWebManager.flutterTemplateProject.path;
diff --git a/lib/src/common_server_impl.dart b/lib/src/common_server_impl.dart
index ec53a84..c826d2e 100644
--- a/lib/src/common_server_impl.dart
+++ b/lib/src/common_server_impl.dart
@@ -18,7 +18,7 @@
 import 'common.dart';
 import 'compiler.dart';
 import 'protos/dart_services.pb.dart' as proto;
-import 'sdk_manager.dart';
+import 'sdk.dart';
 import 'server_cache.dart';
 
 const Duration _standardExpiration = Duration(hours: 1);
@@ -183,7 +183,7 @@
   Future<void> init() async {
     log.info('Beginning CommonServer init().');
     _analysisServers = AnalysisServersWrapper();
-    _compiler = Compiler(SdkManager.sdk);
+    _compiler = Compiler(Sdk());
 
     await _compiler.warmup();
     await _analysisServers.warmup();
@@ -277,18 +277,20 @@
               <String, String>{});
   }
 
-  Future<proto.VersionResponse> version(proto.VersionRequest _) =>
-      Future<proto.VersionResponse>.value(
-        proto.VersionResponse()
-          ..sdkVersion = SdkManager.sdk.version
-          ..sdkVersionFull = SdkManager.sdk.versionFull
-          ..runtimeVersion = vmVersion
-          ..servicesVersion = servicesVersion
-          ..appEngineVersion = _container.version
-          ..flutterDartVersion = SdkManager.sdk.version
-          ..flutterDartVersionFull = SdkManager.sdk.versionFull
-          ..flutterVersion = SdkManager.sdk.flutterVersion,
-      );
+  Future<proto.VersionResponse> version(proto.VersionRequest _) {
+    final sdk = Sdk();
+    return Future<proto.VersionResponse>.value(
+      proto.VersionResponse()
+        ..sdkVersion = sdk.version
+        ..sdkVersionFull = sdk.versionFull
+        ..runtimeVersion = vmVersion
+        ..servicesVersion = servicesVersion
+        ..appEngineVersion = _container.version
+        ..flutterDartVersion = sdk.version
+        ..flutterDartVersionFull = sdk.versionFull
+        ..flutterVersion = sdk.flutterVersion,
+    );
+  }
 
   Future<proto.CompileResponse> _compileDart2js(
     String source, {
diff --git a/lib/src/compiler.dart b/lib/src/compiler.dart
index 97d0578..f7bc73d 100644
--- a/lib/src/compiler.dart
+++ b/lib/src/compiler.dart
@@ -15,23 +15,23 @@
 import 'common.dart';
 import 'flutter_web.dart';
 import 'pub.dart';
-import 'sdk_manager.dart';
+import 'sdk.dart';
 
 Logger _logger = Logger('compiler');
 
 /// An interface to the dart2js compiler. A compiler object can process one
 /// compile at a time.
 class Compiler {
-  final FlutterSdk _sdk;
+  final Sdk _sdk;
   final FlutterWebManager _flutterWebManager;
   final String _dartdevcPath;
   final BazelWorkerDriver _ddcDriver;
 
   Compiler(this._sdk)
-      : _dartdevcPath = path.join(_sdk.sdkPath, 'bin', 'dartdevc'),
+      : _dartdevcPath = path.join(Sdk.sdkPath, 'bin', 'dartdevc'),
         _ddcDriver = BazelWorkerDriver(
             () => Process.start(
-                  path.join(_sdk.sdkPath, 'bin', 'dartdevc'),
+                  path.join(Sdk.sdkPath, 'bin', 'dartdevc'),
                   <String>['--persistent_worker'],
                 ),
             maxWorkers: 1),
@@ -82,7 +82,7 @@
       final mainJs = File(path.join(temp.path, '$kMainDart.js'));
       final mainSourceMap = File(path.join(temp.path, '$kMainDart.js.map'));
 
-      final dart2JSPath = path.join(_sdk.sdkPath, 'bin', 'dart2js');
+      final dart2JSPath = path.join(Sdk.sdkPath, 'bin', 'dart2js');
       _logger.info('About to exec: $dart2JSPath ${arguments.join(' ')}');
 
       final result = await Process.run(dart2JSPath, arguments,
@@ -152,7 +152,7 @@
           '-s',
           _flutterWebManager.summaryFilePath,
           '-s',
-          '${_sdk.flutterBinPath}/cache/flutter_web_sdk/flutter_web_sdk/kernel/flutter_ddc_sdk.dill'
+          '${Sdk.flutterBinPath}/cache/flutter_web_sdk/flutter_web_sdk/kernel/flutter_ddc_sdk.dill'
         ],
         ...['-o', path.join(temp.path, '$kMainDart.js')],
         ...['--module-name', 'dartpad_main'],
diff --git a/lib/src/sdk_manager.dart b/lib/src/sdk.dart
similarity index 81%
rename from lib/src/sdk_manager.dart
rename to lib/src/sdk.dart
index 03b30c5..5617c58 100644
--- a/lib/src/sdk_manager.dart
+++ b/lib/src/sdk.dart
@@ -10,22 +10,29 @@
 import 'package:path/path.dart' as path;
 import 'package:yaml/yaml.dart';
 
-/// Generally, this should be a singleton instance (it's a heavy-weight object).
-class SdkManager {
-  static FlutterSdk get sdk => _sdk ?? (_sdk = FlutterSdk(flutterSdkPath));
+class Sdk {
+  static Sdk _instance;
+  factory Sdk() => _instance ?? (_instance = Sdk._());
 
-  static void setSdk(FlutterSdk sdk) {
-    _sdk = sdk;
+  String _versionFull = '';
+  String _flutterVersion = '';
+
+  Sdk._() {
+    _versionFull =
+        (File(path.join(sdkPath, 'version')).readAsStringSync()).trim();
+    _flutterVersion =
+        (File(path.join(flutterSdkPath, 'version')).readAsStringSync()).trim();
   }
 
-  // The installed Flutter SDK.
-  static FlutterSdk _sdk;
-}
+  /// Get the path to the Flutter SDK.
+  static String get flutterSdkPath =>
+      path.join(Directory.current.path, 'flutter-sdk');
 
-abstract class Sdk {
-  /// Set up the sdk (download it if necessary, ...), and fail if there's an
-  /// error.
-  Future<void> init();
+  /// Get the path to the Dart SDK.
+  static String get sdkPath => path.join(flutterBinPath, 'cache', 'dart-sdk');
+
+  /// Get the path to the Flutter binaries.
+  static String get flutterBinPath => path.join(flutterSdkPath, 'bin');
 
   /// Report the current version of the SDK.
   String get version {
@@ -35,38 +42,6 @@
   }
 
   /// Report the current version of the SDK, including any `-dev` suffix.
-  String get versionFull;
-
-  /// Get the path to the sdk.
-  String get sdkPath;
-}
-
-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 =
-        (File(path.join(sdkPath, 'version')).readAsStringSync()).trim();
-    _flutterVersion =
-        (File(path.join(flutterSdkPath, 'version')).readAsStringSync()).trim();
-  }
-
-  @override
-  String get sdkPath => path.join(flutterBinPath, 'cache', 'dart-sdk');
-
-  String get flutterBinPath => path.join(flutterSdkPath, 'bin');
-
-  @override
   String get versionFull => _versionFull;
 
   String get flutterVersion => _flutterVersion;
@@ -87,7 +62,7 @@
   /// `flutter-sdk-version.yaml` file.
   ///
   /// Note that this is an expensive operation.
-  Future<FlutterSdk> createFromConfigFile() async {
+  Future<Sdk> createFromConfigFile() async {
     final sdkConfig = getSdkConfigInfo();
 
     // flutter_sdk:
@@ -109,7 +84,7 @@
       return createUsingFlutterVersion(version: config['version'] as String);
     } else {
       // Clone the repo if necessary but don't do any other setup.
-      return (await _cloneSdkIfNecessary()).asFlutterSdk();
+      return (await _cloneSdkIfNecessary()).asSdk();
     }
   }
 
@@ -117,7 +92,7 @@
   /// channel.
   ///
   /// Note that this is an expensive operation.
-  Future<FlutterSdk> createUsingFlutterChannel({
+  Future<Sdk> createUsingFlutterChannel({
     @required String channel,
   }) async {
     final sdk = await _cloneSdkIfNecessary();
@@ -135,14 +110,14 @@
     // git pull
     await sdk.pull();
 
-    return sdk.asFlutterSdk();
+    return sdk.asSdk();
   }
 
   /// Create a Flutter SDK in `flutter-sdk/` that tracks a specific Flutter
   /// version.
   ///
   /// Note that this is an expensive operation.
-  Future<FlutterSdk> createUsingFlutterVersion({
+  Future<Sdk> createUsingFlutterVersion({
     @required String version,
   }) async {
     final sdk = await _cloneSdkIfNecessary();
@@ -154,11 +129,14 @@
     // git checkout 1.25.0-8.1.pre
     await sdk.checkout(version);
 
-    return sdk.asFlutterSdk();
+    // Force downloading of Dart SDK before constructing the Sdk singleton.
+    await sdk.init();
+
+    return sdk.asSdk();
   }
 
   Future<_DownloadedFlutterSdk> _cloneSdkIfNecessary() async {
-    final sdk = _DownloadedFlutterSdk(flutterSdkPath);
+    final sdk = _DownloadedFlutterSdk(Sdk.flutterSdkPath);
 
     if (!Directory(sdk.flutterSdkPath).existsSync()) {
       // This takes perhaps ~20 seconds.
@@ -188,7 +166,7 @@
     await _execLog('bin/flutter', ['--version'], flutterSdkPath);
   }
 
-  FlutterSdk asFlutterSdk() => FlutterSdk(flutterSdkPath);
+  Sdk asSdk() => Sdk();
 
   String get sdkPath => path.join(flutterSdkPath, 'bin/cache/dart-sdk');
 
diff --git a/lib/src/server_cache.dart b/lib/src/server_cache.dart
index 79059eb..c697d2d 100644
--- a/lib/src/server_cache.dart
+++ b/lib/src/server_cache.dart
@@ -12,7 +12,7 @@
 import 'package:quiver/cache.dart';
 
 import 'common_server_impl.dart' show log;
-import 'sdk_manager.dart';
+import 'sdk.dart';
 
 abstract class ServerCache {
   Future<String> get(String key);
@@ -136,8 +136,10 @@
   ///
   /// We don't use the existing key directly so that different AppEngine
   /// versions using the same redis cache do not have collisions.
-  String _genKey(String key) =>
-      'server:$serverVersion:dart:${SdkManager.sdk.versionFull}:flutter:${SdkManager.sdk.flutterVersion}+$key';
+  String _genKey(String key) {
+    final sdk = Sdk();
+    return 'server:$serverVersion:dart:${sdk.versionFull}:flutter:${sdk.flutterVersion}+$key';
+  }
 
   @override
   Future<String> get(String key) async {
diff --git a/test/compiler_test.dart b/test/compiler_test.dart
index 003eaf9..c89fcad 100644
--- a/test/compiler_test.dart
+++ b/test/compiler_test.dart
@@ -6,7 +6,7 @@
 
 import 'package:dart_services/src/common.dart';
 import 'package:dart_services/src/compiler.dart';
-import 'package:dart_services/src/sdk_manager.dart';
+import 'package:dart_services/src/sdk.dart';
 import 'package:test/test.dart';
 
 void main() => defineTests();
@@ -16,9 +16,7 @@
 
   group('compiler', () {
     setUpAll(() async {
-      await SdkManager.sdk.init();
-
-      compiler = Compiler(SdkManager.sdk);
+      compiler = Compiler(Sdk());
       await compiler.warmup();
     });
 
diff --git a/test/flutter_analysis_server_test.dart b/test/flutter_analysis_server_test.dart
index 45fa67e..c0de77b 100644
--- a/test/flutter_analysis_server_test.dart
+++ b/test/flutter_analysis_server_test.dart
@@ -11,7 +11,6 @@
 import 'package:dart_services/src/common_server_api.dart';
 import 'package:dart_services/src/protos/dart_services.pbserver.dart';
 import 'package:dart_services/src/server_cache.dart';
-import 'package:dart_services/src/sdk_manager.dart';
 import 'package:test/test.dart';
 
 const counterApp = r'''
@@ -206,7 +205,6 @@
     AnalysisServerWrapper analysisServer;
 
     setUp(() async {
-      await SdkManager.sdk.init();
       analysisServer = FlutterAnalysisServerWrapper();
       await analysisServer.init();
       await analysisServer.warmup();
@@ -231,8 +229,6 @@
     AnalysisServersWrapper analysisServersWrapper;
 
     setUp(() async {
-      await SdkManager.sdk.init();
-
       analysisServersWrapper = AnalysisServersWrapper();
       await analysisServersWrapper.warmup();
     });
@@ -260,7 +256,6 @@
     _MockCache cache;
 
     setUp(() async {
-      await SdkManager.sdk.init();
       container = _MockContainer();
       cache = _MockCache();
       commonServerImpl = CommonServerImpl(container, cache);
diff --git a/test/flutter_web_test.dart b/test/flutter_web_test.dart
index 4fdf678..c8058fa 100644
--- a/test/flutter_web_test.dart
+++ b/test/flutter_web_test.dart
@@ -6,7 +6,6 @@
 import 'dart:io';
 
 import 'package:dart_services/src/flutter_web.dart';
-import 'package:dart_services/src/sdk_manager.dart';
 import 'package:path/path.dart' as path;
 import 'package:test/test.dart';
 
@@ -17,7 +16,6 @@
     FlutterWebManager flutterWebManager;
 
     setUp(() async {
-      await SdkManager.sdk.init();
       flutterWebManager = FlutterWebManager();
     });
 
@@ -55,7 +53,6 @@
     FlutterWebManager flutterWebManager;
 
     setUpAll(() async {
-      await SdkManager.sdk.init();
       flutterWebManager = FlutterWebManager();
     });
 
diff --git a/test/redis_cache_test.dart b/test/redis_cache_test.dart
index 232c1d7..5bdf855 100644
--- a/test/redis_cache_test.dart
+++ b/test/redis_cache_test.dart
@@ -8,7 +8,6 @@
 import 'dart:io';
 
 import 'package:dart_services/src/common_server_impl.dart';
-import 'package:dart_services/src/sdk_manager.dart';
 import 'package:dart_services/src/server_cache.dart';
 import 'package:logging/logging.dart';
 import 'package:pedantic/pedantic.dart';
@@ -48,7 +47,6 @@
     }
 
     setUpAll(() async {
-      await SdkManager.sdk.init();
       redisProcess = await startRedisProcessAndDrainIO(9501);
       log.onRecord.listen((LogRecord rec) {
         logMessages.add('${rec.level.name}: ${rec.time}: ${rec.message}');
diff --git a/tool/fuzz_driver.dart b/tool/fuzz_driver.dart
index 2b1b847..ba87400 100644
--- a/tool/fuzz_driver.dart
+++ b/tool/fuzz_driver.dart
@@ -16,7 +16,7 @@
 import 'package:dart_services/src/common.dart';
 import 'package:dart_services/src/common_server_impl.dart';
 import 'package:dart_services/src/compiler.dart' as comp;
-import 'package:dart_services/src/sdk_manager.dart';
+import 'package:dart_services/src/sdk.dart';
 import 'package:dart_services/src/server_cache.dart';
 import 'package:dart_services/src/protos/dart_services.pb.dart' as proto;
 
@@ -79,10 +79,10 @@
   final sw = Stopwatch()..start();
 
   print('About to setuptools');
-  print(SdkManager.sdk.sdkPath);
+  print(Sdk.sdkPath);
 
   // Warm up the services.
-  await setupTools(SdkManager.sdk.sdkPath);
+  await setupTools(Sdk.sdkPath);
 
   print('Setup tools done');
 
@@ -104,7 +104,7 @@
       print('FAILED: ${fse.path}');
 
       // Try and re-cycle the services for the next test after the crash
-      await setupTools(SdkManager.sdk.sdkPath);
+      await setupTools(Sdk.sdkPath);
     }
   }
 
@@ -133,7 +133,7 @@
   await analysisServer.warmup();
 
   print('Warming up compiler');
-  compiler = comp.Compiler(SdkManager.sdk);
+  compiler = comp.Compiler(Sdk());
   await compiler.warmup();
   print('SetupTools done');
 }
diff --git a/tool/grind.dart b/tool/grind.dart
index 0a28b09..d662c31 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -7,7 +7,7 @@
 import 'dart:async';
 import 'dart:io';
 
-import 'package:dart_services/src/sdk_manager.dart';
+import 'package:dart_services/src/sdk.dart';
 import 'package:grinder/grinder.dart';
 import 'package:grinder/grinder_files.dart';
 import 'package:grinder/src/run_utils.dart' show mergeWorkingDirectory;
@@ -21,9 +21,7 @@
 
 @Task('Make sure SDKs are appropriately initialized')
 @Depends(setupFlutterSdk)
-void sdkInit() async {
-  await SdkManager.sdk.init();
-}
+void sdkInit() {}
 
 @Task()
 void analyze() async {
@@ -85,7 +83,7 @@
     'google storage')
 @Depends(sdkInit)
 void validateStorageArtifacts() async {
-  final version = SdkManager.sdk.versionFull;
+  final version = Sdk().versionFull;
 
   const urlBase = 'https://storage.googleapis.com/compilation_artifacts/';
 
@@ -143,7 +141,7 @@
   log('running dart pub get (${dir.path})');
 
   await runWithLogging(
-    path.join(SdkManager.sdk.sdkPath, 'bin', 'dart'),
+    path.join(Sdk.sdkPath, 'bin', 'dart'),
     arguments: ['pub', 'get'],
     workingDirectory: dir.path,
   );
@@ -153,7 +151,7 @@
   log('running flutter pub get (${dir.path})');
 
   await runWithLogging(
-    path.join(SdkManager.sdk.flutterBinPath, 'flutter'),
+    path.join(Sdk.flutterBinPath, 'flutter'),
     arguments: ['pub', 'get'],
     workingDirectory: dir.path,
   );
@@ -178,7 +176,7 @@
 
   // run flutter pub get
   await runWithLogging(
-    path.join(flutterSdkPath, 'bin', 'flutter'),
+    path.join(Sdk.flutterSdkPath, 'bin', 'flutter'),
     arguments: ['pub', 'get'],
     workingDirectory: dir.path,
   );
@@ -214,7 +212,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, 'bin', 'flutter'),
+    path.join(Sdk.flutterSdkPath, 'bin', 'flutter'),
     arguments: ['precache', '--web'],
     workingDirectory: dir.path,
   );
@@ -222,10 +220,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, '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 compilerPath = path.join(
+      Sdk.flutterSdkPath, 'bin', 'cache', 'dart-sdk', 'bin', 'dartdevc');
+  final dillPath = path.join(Sdk.flutterSdkPath, 'bin', 'cache',
+      'flutter_web_sdk', 'flutter_web_sdk', 'kernel', 'flutter_ddc_sdk.dill');
 
   final args = <String>[
     '-s',
@@ -247,7 +245,7 @@
   delete(artifactsDir);
   artifactsDir.createSync();
 
-  final sdkJsPath = path.join(flutterSdkPath,
+  final sdkJsPath = path.join(Sdk.flutterSdkPath,
       'bin/cache/flutter_web_sdk/flutter_web_sdk/kernel/amd-canvaskit-html/dart_sdk.js');
 
   copy(getFile(sdkJsPath), artifactsDir);
@@ -255,7 +253,7 @@
   copy(joinFile(dir, ['flutter_web.dill']), artifactsDir);
 
   // Emit some good google storage upload instructions.
-  final version = SdkManager.sdk.versionFull;
+  final version = Sdk().versionFull;
   log('\nFrom the dart-services project root dir, run:');
   log('  gsutil -h "Cache-Control:public, max-age=86400" cp -z js '
       'artifacts/*.js gs://compilation_artifacts/$version/');
@@ -271,7 +269,7 @@
 
   // Set up the  Flutter SDK the way dart-services needs it.
 
-  final flutterBinFlutter = path.join(flutterSdkPath, 'bin', 'flutter');
+  final flutterBinFlutter = path.join(Sdk.flutterSdkPath, 'bin', 'flutter');
   await runWithLogging(
     flutterBinFlutter,
     arguments: ['doctor'],
diff --git a/tool/update_sdk.dart b/tool/update_sdk.dart
index 3ea0c86..6268388 100644
--- a/tool/update_sdk.dart
+++ b/tool/update_sdk.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:dart_services/src/sdk_manager.dart';
+import 'package:dart_services/src/sdk.dart';
 
 // This tool is used to manually update the `flutter-sdk/` Flutter SDK to match
 // the current configuration information in the `flutter-sdk-version.yaml` file.
@@ -11,8 +11,7 @@
   final info = DownloadingSdkManager.getSdkConfigInfo();
   print('configuration: $info\n');
 
-  final sdkManager = DownloadingSdkManager();
-  final sdk = await sdkManager.createFromConfigFile();
+  await DownloadingSdkManager().createFromConfigFile();
 
-  print('\nSDK setup complete (${sdk.flutterSdkPath}).');
+  print('\nSDK setup complete (${Sdk.flutterSdkPath}).');
 }