runCommand method

  1. @override
Future<int> runCommand()
override

Implementation

@override
Future<int> runCommand() async {
  final root = p.normalize(p.absolute(argResults!['path'] as String));
  final top = int.tryParse(argResults!['top'] as String) ?? 10;
  final scanner = ScannerService(
    fileSystem: context.fileSystem,
    platform: context.platform,
  );

  final scan = await context.terminal.withSpinner(
    'Analyzing project footprint',
    () => scanner.scan(roots: [root]),
  );
  final caches = await scanner.cacheEntries();

  logger.info('Largest entries:');
  for (final entry in scan.entries.take(top)) {
    logger.info(
      '${formatBytes(entry.bytes).padLeft(10)}  ${entry.kind.name.padRight(14)}  ${entry.path}',
    );
  }

  logger.info('');
  logger.info('Cache report:');
  for (final entry in caches) {
    logger.info('${formatBytes(entry.bytes).padLeft(10)}  ${entry.path}');
  }

  logger.success('Total project candidates: ${formatBytes(scan.totalBytes)}');
  return CleanerExitCode.success.code;
}