execute method
Implementation
@override
Future<List<DartPackageInfo>> execute(
CliLogger logger, ArgResults? argResults) async {
if (argResults!['local'] == true) {
var cacheDir = argResults.get<String>('cache', '~/.zsh');
var resolvedPath = resolvePath(cacheDir);
if (argResults.arguments.isEmpty) {
return const [];
}
final query = argResults.arguments.first;
var rootDir = Directory(resolvedPath);
var indexDir = rootDir.subdir('.dart-pub-indexes');
if (!rootDir.existsSync()) {
throw ArgParserException(
'Cache directory $resolvedPath does not exist');
} else if (!indexDir.existsSync()) {
throw ArgParserException(
'No caches downloaded. Run getcompletions first');
} else {
final firstLetter = query[0].toLowerCase();
final lines = indexDir.child(firstLetter).readAsLinesSync();
int found = 0;
var results = <DartPackageInfo>[];
for (var line in lines) {
if (found >= 10) {
break;
}
if (line.startsWith(query) && found++ < 10) {
results.add(DartPackageInfo(name: line));
}
}
return results;
}
} else {
final query = argResults.arguments.firstWhere(
(element) => true,
orElse: () => 'a',
);
final packages = await getPackages(query);
return packages;
}
}