build method
dynamic
build()
Implementation
build() async {
var localCommandNames = localCommands.map((c) => c.name).toSet();
ArgResults? parsedArgs;
try {
if (args != null) {
commandRunner =
BuildCommandRunner([], await PackageGraph.forThisPackage());
parsedArgs = commandRunner?.parse(args!);
}
} on UsageException catch (e) {
print(red.wrap(e.message));
print('');
print(e.usage);
exitCode = ExitCode.usage.code;
return;
}
var commandName = parsedArgs?.command?.name;
if (parsedArgs != null && parsedArgs.rest.isNotEmpty) {
print(yellow
.wrap('Could not find a command named "${parsedArgs.rest[0]}".'));
print('');
print(commandRunner?.usageWithoutDescription);
exitCode = ExitCode.usage.code;
return;
}
if (commandName == null || commandName == 'help') {
commandRunner?.printUsage();
return;
}
final logListener = Logger.root.onRecord.listen(stdIOLogListener());
if (localCommandNames.contains(commandName) && parsedArgs != null) {
var tempExitCode = await commandRunner?.runCommand(parsedArgs);
exitCode = tempExitCode != null ? exitCode : -1;
} else {
if (args != null)
while ((exitCode = await generateAndRun(args!)) ==
ExitCode.tempFail.code) {}
}
await logListener?.cancel();
}