execute method
Implementation
@override
Future execute(CliLogger logger, ArgResults? argResults) async {
var output = argResults!['output'] as String;
var resolvedPath = resolvePath(output);
if (!Directory(resolvedPath).existsSync()) {
throw ArgParserException('Output directory $resolvedPath does not exist');
}
final buckets = <String, List<String>>{};
final packageList = await fetchPackageList();
logger.write('Fetched ${packageList.length} package names');
for (var item in packageList) {
buckets.putIfAbsent(item[0], () => []).add(item);
}
var dir = Directory(path.join(resolvedPath, '.dart-pub-indexes'));
if (!dir.existsSync()) dir.createSync(recursive: true);
buckets.forEach((key, value) {
logger.success('Output letter: ${key}: ${value.length} items');
File(path.join(dir.absolute.path, key)).writeAsStringSync(
value.join('\n'),
);
});
File(path.join(dir.absolute.path, '_all'))
.writeAsStringSync(packageList.join(' '));
}