generateCompletionScript function
Implementation
String generateCompletionScript(List<String> binaryNames) {
if (binaryNames.isEmpty) {
throw ArgumentError('Provide the name of at least of one command');
}
for (final binName in binaryNames) {
if (!_binNameMatch.hasMatch(binName)) {
final msg = 'The provided name - "$binName" - is invalid\n'
'It must match regex: ${_binNameMatch.pattern}';
throw StateError(msg);
}
}
final buffer = StringBuffer();
final prefix =
LineSplitter.split(_prefix).map((l) => '# $l'.trim()).join('\n');
buffer
..writeln(prefix)
..writeln();
for (final binName in binaryNames) {
buffer.writeln(_printBinName(binName));
}
final detailLines = [
'Generated ${DateTime.now().toUtc()}',
];
if (Platform.script.scheme == 'file') {
var scriptPath = Platform.script.toFilePath();
scriptPath = pathos.absolute(pathos.normalize(scriptPath));
detailLines.add('By $scriptPath');
}
final details = detailLines.map((l) => '## $l').join('\n');
buffer.write(details);
return buffer.toString();
}