blob: e08cf1c60c306a432ba47e2c9708cb587e1cca48 [file] [log] [blame]
// 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 {
required this.fileSystem,
final FileSystem fileSystem;
late final Directory _toolsDir =
fileSystem.path.join(Cache.flutterRoot!, 'packages', 'flutter_tools'),
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()) {
'Flutter SDK installation appears corrupted: expected to find the '
'directory ${_toolsDir.path} but it does not exist! Please go to '
' for instructions on how to re-install '
class NoOpPreRunValidator implements PreRunValidator {
const NoOpPreRunValidator();
void validate() {}