seed method
Runs seeders (seeders or the names they're registered under), for
setUp. Throws when one fails.
The runs are recorded like seed in metro live, so
seed:rollback <name> undoes them.
Implementation
Future<void> seed(List<Object> seeders) async {
final Map<String, Seeder Function()> registered = Nylo.isInitialized()
? Nylo.instance.getSeeders()
: const {};
final List<Seeder> resolved = [
for (final Object seeder in seeders)
switch (seeder) {
final Seeder instance => instance,
final String name when registered[name] != null =>
registered[name]!(),
_ => throw PlaybookFailure('There\'s no seeder called "$seeder".'),
},
];
for (final SeedRun run in await SeedRecorder.upAll(resolved)) {
if (run.failed) {
throw PlaybookFailure('Seeding ${run.name} failed: ${run.error}');
}
}
}