run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<void> run() async {
try {
final disableHotReload = argResults!['disable-hot-reload'] as bool;
print('Starting server...');
final serverProcess = await Process.start(
'dart',
[
'run',
if (!disableHotReload) '--enable-vm-service',
'.ruta/server.dart',
if (!disableHotReload) '--hot-reload',
],
);
unawaited(serverProcess.stdout.pipe(stdout));
unawaited(serverProcess.stderr.pipe(stderr));
// Handle Ctrl+C
ProcessSignal.sigint.watch().listen((_) {
serverProcess.kill();
exit(0);
});
final exitCode = await serverProcess.exitCode;
if (exitCode != 0) {
throw Exception('Server exited with code $exitCode');
}
} catch (e) {
throw Exception('Error starting server: $e');
}
}