mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'base/common.dart';
|
|
import 'base/file_system.dart';
|
|
import 'cache.dart';
|
|
|
|
/// A validator that runs before the tool runs any command.
|
|
abstract class PreRunValidator {
|
|
factory PreRunValidator({
|
|
required FileSystem fileSystem,
|
|
}) => _DefaultPreRunValidator(fileSystem: fileSystem);
|
|
|
|
void validate();
|
|
}
|
|
|
|
class _DefaultPreRunValidator implements PreRunValidator {
|
|
_DefaultPreRunValidator({
|
|
required this.fileSystem,
|
|
});
|
|
|
|
final FileSystem fileSystem;
|
|
|
|
late final Directory _toolsDir = fileSystem.directory(
|
|
fileSystem.path.join(Cache.flutterRoot!, 'packages', 'flutter_tools'),
|
|
);
|
|
|
|
@override
|
|
void validate() {
|
|
// If a user downloads the Flutter SDK via a pre-built archive and there is
|
|
// an error during extraction, the user could have a valid Dart snapshot of
|
|
// the tool but not the source directory. We still need the source, so
|
|
// validate the source directory exists and toolExit if not.
|
|
if (!_toolsDir.existsSync()) {
|
|
throwToolExit(
|
|
'Flutter SDK installation appears corrupted: expected to find the '
|
|
'directory ${_toolsDir.path} but it does not exist! Please go to '
|
|
'https://flutter.dev/setup for instructions on how to re-install '
|
|
'Flutter.',
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
class NoOpPreRunValidator implements PreRunValidator {
|
|
const NoOpPreRunValidator();
|
|
|
|
@override
|
|
void validate() {}
|
|
}
|