getOpitons function
get options input, order: define -> env -> yaml -> globalResults -> argResults
Implementation
List<String> getOpitons(
String name,
Config config, {
bool isNotEmpty = false,
List<String> defaults = const [],
List<String> datalist = const [],
ArgResults? gRes,
ArgResults? aRes,
}) {
List<String>? values = config.optionalStringList(name);
if (values != null) return values;
if (name.contains(dotDelimiter)) name = name.split(dotDelimiter).last;
values ??= gRes?.multiOption(name);
values ??= aRes?.multiOption(name);
values ??= defaults;
if (isNotEmpty && values.isEmpty) {
throw UsageException('err: $name empty', '');
}
if (datalist.isNotEmpty && values.isNotEmpty) {
final notfound = values.firstWhere(
(e) => !datalist.contains(e),
orElse: () => '',
);
if (notfound.isNotEmpty) {
throw UsageException('err: $notfound not in datalist', '');
}
}
return values;
}