getOpiton function

String getOpiton(
  1. String name,
  2. Config config, {
  3. bool isNotEmpty = true,
  4. String defaultTo = '',
  5. List<String> datalist = const [],
  6. ArgResults? gRes,
  7. ArgResults? aRes,
})

get option input, order: define -> env -> yaml -> globalResults -> argResults

Implementation

String getOpiton(
  String name,
  Config config, {
  bool isNotEmpty = true,
  String defaultTo = '',
  List<String> datalist = const [],
  ArgResults? gRes,
  ArgResults? aRes,
}) {
  String? value = config.optionalString(name);
  if (value != null) return value;

  if (name.contains(dotDelimiter)) name = name.split(dotDelimiter).last;
  value ??= gRes?.option(name);
  value ??= aRes?.option(name);
  value ??= defaultTo;
  if (isNotEmpty && value.isEmpty) {
    throw UsageException('err: $name empty', '');
  }

  if (datalist.isNotEmpty && !datalist.contains(value)) {
    throw UsageException('err: $name not in datalist', '');
  }

  return value;
}