getSizes function

List<int> getSizes(
  1. Config config,
  2. ArgResults? gRes
)

get size input, order: define -> env -> yaml -> argResults

Implementation

List<int> getSizes(Config config, ArgResults? gRes) {
  List<int> sizes = [];
  String? sizeGe = config.optionalString('size_ge');
  String? sizeLe = config.optionalString('size_le');
  sizeGe ??= gRes?.option('size_ge');
  sizeLe ??= gRes?.option('size_le');

  if (sizeLe case String sizeLe_ when sizeLe_.isNotEmpty) {
    final intSizeLe = parseHumanReadableSize(sizeLe_);
    if (intSizeLe == null) throw UsageException('err: invalid size_le', '');
    sizes = [0, intSizeLe];
  }
  if (sizeGe case String sizeGe_ when sizeGe_.isNotEmpty) {
    final intSizeGe = parseHumanReadableSize(sizeGe_);
    if (intSizeGe == null) throw UsageException('err: invalid size_ge', '');

    sizes.insert(0, intSizeGe);
  }
  if (sizes.length > 1 && sizes.first >= sizes.last) {
    throw UsageException('err: invalid size_ge and size_le', '');
  }
  return sizes;
}