runMigrationConsole function
Future<int>
runMigrationConsole(
- List<
String> args, - Migrator migrator, {
- StringSink? out,
- StringSink? err,
A tiny maat migrate-style dispatcher. Returns the process exit
code: 0 on success, 1 for help or an unknown command.
void main(List<String> args) async {
exit(await runMigrationConsole(args, Migrator(db, migrations)));
}
Implementation
Future<int> runMigrationConsole(
List<String> args,
Migrator migrator, {
StringSink? out,
StringSink? err,
}) async {
out ??= stdout;
err ??= stderr;
final command = args.isEmpty ? 'help' : args.first;
switch (command) {
case 'migrate':
_report(out, 'Migrated', await migrator.run(), 'Nothing to migrate.');
case 'migrate:rollback':
final ran = await migrator.rollback(steps: _step(args));
_report(out, 'Rolled back', ran, 'Nothing to roll back.');
case 'migrate:reset':
_report(out, 'Rolled back', await migrator.reset(), 'Nothing to reset.');
case 'migrate:refresh':
_report(out, 'Migrated', await migrator.refresh(), 'Nothing to migrate.');
case 'migrate:status':
for (final s in await migrator.status()) {
out.writeln('${s.name.padRight(50)} ${s.batch ?? 'Pending'}');
}
default:
err.writeln(_usage);
return 1;
}
return 0;
}