Definition.from constructor

Definition.from(
  1. dynamic input
)

Creates a Definition instance from a dynamic input. The input can be a Map, List or String.

Implementation

factory Definition.from(dynamic input) {
  if (input is Map) {
    final description = input[descriptionDefinitionKey] as String?;
    final scripts = input[scriptsDefinitionKey] as dynamic;
    final execution = input[executionDefinitionKey] as String? ?? 'multiple';
    // Reject typos like `onc` or `once ` instead of silently falling back to
    // `multiple`, which would run every command after a failure.
    if (execution != 'once' && execution != 'multiple') {
      throw FormatException(
        'Invalid `(execution)` value "$execution"; expected "once" or "multiple".',
      );
    }
    final workdir = input[workdirDefinitionKey] as String?;

    return Definition(
      description: description,
      scripts: _toStringList(scripts),
      execution: execution,
      workdir: workdir,
    );
  } else {
    return Definition(scripts: _toStringList(input));
  }
}