runSqliteLoomProjectCli function
Future<int>
runSqliteLoomProjectCli(
- List<
String> arguments, { - Directory? currentDirectory,
- LoomCliWriter out = print,
- LoomCliWriter error = _stderr,
- LoomClock clock = _utcNow,
- LoomProcessRunner processRunner = _inheritProcess,
Runs SQLite Loom's project-aware developer CLI.
Implementation
Future<int> runSqliteLoomProjectCli(
List<String> arguments, {
Directory? currentDirectory,
LoomCliWriter out = print,
LoomCliWriter error = _stderr,
LoomClock clock = _utcNow,
LoomProcessRunner processRunner = _inheritProcess,
}) async {
final directory = currentDirectory ?? Directory.current;
try {
if (arguments.isEmpty || _isHelp(arguments.first)) {
_printProjectHelp(out);
return LoomExitCode.success;
}
if (arguments.first == '--version' || arguments.first == 'version') {
out('sqlite_loom 0.4.0');
return LoomExitCode.success;
}
final command = arguments.first;
final tail = arguments.sublist(1);
switch (command) {
case 'init':
return _init(directory, tail, out: out);
case 'make:migration':
case 'migration:create':
return _makeMigration(directory, tail, clock: clock, out: out);
case 'make:flavor':
case 'flavor:create':
return _makeFlavor(directory, tail, out: out);
case 'migrate:sync':
case 'migration:sync':
return _syncCommand(directory, tail, out: out);
case 'migrate:validate':
case 'migration:validate':
return _validateCommand(directory, tail, out: out);
case 'migrate:list':
case 'migration:list':
return _listCommand(directory, tail, out: out);
case 'migrate:finalize':
return _finalizeCommand(directory, tail, out: out);
case 'migrate:retire':
return _retireCommand(directory, tail, out: out);
case 'migrate:unretire':
return _unretireCommand(directory, tail, out: out);
case 'doctor':
return _doctor(directory, tail, out: out, error: error);
default:
final runtimeCommand = _runnerAliases[command] ?? command;
if (_runnerCommands.contains(runtimeCommand)) {
return await _delegate(directory, [
runtimeCommand,
...tail,
], processRunner: processRunner);
}
throw LoomCliException(
'Unknown sqlite_loom command: $command',
LoomExitCode.usage,
);
}
} on LoomCliException catch (exception) {
error('Error: ${exception.message}');
return exception.exitCode;
} on FormatException catch (exception) {
error('Error: ${exception.message}');
return LoomExitCode.usage;
}
}