blob: 42b0f1f50781f6b5c51a69338961688be2bf4c9a [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// 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 '../command.dart';
import '../command_runner.dart';
import '../io.dart';
import '../log.dart' as log;
class CacheCleanCommand extends PubCommand {
@override
String get name => 'clean';
@override
String get description => 'Clears the global PUB_CACHE.';
@override
bool get takesArguments => false;
CacheCleanCommand() {
argParser.addFlag(
'force',
abbr: 'f',
help: 'Don\'t ask for confirmation.',
negatable: false,
);
}
@override
Future<void> runProtected() async {
if (dirExists(cache.rootDir)) {
if (argResults['force'] || await confirm('''
This will remove everything inside ${cache.rootDir}.
You will have to run `$topLevelProgram pub get` again in each project.
Are you sure?''')) {
log.message('Removing pub cache directory ${cache.rootDir}.');
deleteEntry(cache.rootDir);
ensureDir(cache.rootDir);
}
} else {
log.message('No pub cache at ${cache.rootDir}.');
}
}
}