blob: 47a13e83d767af4c3bca21b81c79ba533f1fc462 [file] [log] [blame]
// Copyright 2017 The Chromium 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 'dart:async';
import '../base/common.dart';
import '../base/file_system.dart';
import '../build_info.dart';
import '../globals.dart';
import '../project.dart';
import '../runner/flutter_command.dart';
class CleanCommand extends FlutterCommand {
CleanCommand() {
requiresPubspecYaml();
}
@override
final String name = 'clean';
@override
final String description = 'Delete the build/ and .dart_tool/ directories.';
@override
Future<Set<DevelopmentArtifact>> get requiredArtifacts async => const <DevelopmentArtifact>{};
@override
Future<FlutterCommandResult> runCommand() async {
final FlutterProject flutterProject = FlutterProject.current();
final Directory buildDir = fs.directory(getBuildDirectory());
printStatus("Deleting '${buildDir.path}${fs.path.separator}'.");
if (buildDir.existsSync()) {
try {
buildDir.deleteSync(recursive: true);
} catch (error) {
throwToolExit(error.toString());
}
}
printStatus("Deleting '${flutterProject.dartTool.path}${fs.path.separator}'.");
if (flutterProject.dartTool.existsSync()) {
try {
flutterProject.dartTool.deleteSync(recursive: true);
} catch (error) {
throwToolExit(error.toString());
}
}
return const FlutterCommandResult(ExitStatus.success);
}
}