getCommands method
Implementation
(ExitCode?, List<String>? commands, Script?) getCommands(
List<String> keys,
ArgResults argResults,
) {
final flagStartAt = keys.indexWhere((e) => e.startsWith('-'));
final scriptKeys = keys.sublist(0, flagStartAt == -1 ? null : flagStartAt);
if (scriptKeys.isEmpty) {
logger.err('No script specified');
return (ExitCode.config, null, null);
}
final content = scriptsYaml.scripts();
if (content == null) {
logger.err('No ${ScriptsYaml.fileName} file found');
return (ExitCode.noInput, null, null);
}
final scriptConfig = ScriptsConfig.fromJson(content);
final script = scriptConfig.find(scriptKeys);
if (script == null) {
logger.err('No script found for ${scriptKeys.join(' ')}');
return (ExitCode.config, null, null);
}
if (argResults['list'] as bool? ?? false) {
_listOutScript(script);
return (ExitCode.success, null, null);
}
if (script.commands.isEmpty) {
logger
..warn('There are no commands to run for "${scriptKeys.join(' ')}"')
..warn('Here are the available scripts:');
_listOutScript(script);
return (ExitCode.config, null, null);
}
final resolvedCommands = variables.replace(
script,
scriptConfig,
flags: optionalFlags(keys),
);
return (null, resolvedCommands, script);
}