parseArguments method
Provides arguments from command based on YAML fields config
Implementation
Map<String, dynamic> parseArguments(YamlMap config) {
final ArgParser parser = ArgParser();
if (!config.containsKey(ConfigFieldType.FIELDS)) {
throw MalformedConfigError('"fields" key is missing');
}
if (config[ConfigFieldType.FIELDS] == null) {
throw ValidationError(
ConfigFieldType.FIELDS,
'At least one field should be specified',
);
}
final params = config[ConfigFieldType.FIELDS];
final devExtension = config[ConfigFieldType.DEV_EXTENSION];
if (devExtension is String) {
parser.addFlag(devExtension);
}
parser
..addOption(ConfigFieldType.CONFIG)
..addOption(ConfigFieldType.CONFIG_EXTENSION);
params.keys.forEach((key) {
if (params[key] != null && params[key] is! Map) {
throw MalformedConfigError('Malformed config');
}
final Map<dynamic, dynamic> value = params[key] ?? {};
parser.addOption(key, abbr: value[ConfigFieldType.SHORT_NAME]);
});
final ArgResults parsedArguments = parser.parse(arguments);
return {
for (String key in parsedArguments.options) key: parsedArguments[key],
};
}