@@ -7,6 +7,7 @@ import 'dart:convert';
77import 'dart:io' ;
88
99import 'package:args/command_runner.dart' ;
10+ import 'package:pedantic/pedantic.dart' ;
1011
1112import '../daemon/app_domain.dart' ;
1213import '../daemon/daemon.dart' ;
@@ -49,27 +50,35 @@ class DaemonCommand extends Command<int> {
4950
5051 @override
5152 Future <int > run () async {
52- var daemon = Daemon (_stdinCommandStream, _stdoutCommandResponse);
53- var daemonDomain = DaemonDomain (daemon);
54- setLogHandler ((level, message, {verbose}) {
55- daemonDomain.sendEvent (
56- 'daemon.logMessage' , {'level' : '$level ' , 'message' : message});
57- });
58- daemon.registerDomain (daemonDomain);
59- var configuration =
60- Configuration (launchInChrome: true , debug: true , autoRun: false );
61- var pubspecLock = await readPubspecLock (configuration);
62- var buildOptions =
63- buildRunnerArgs (pubspecLock, configuration, includeOutput: false );
64- var port = await findUnusedPort ();
65- var workflow = await DevWorkflow .start (
66- configuration,
67- buildOptions,
68- {'web' : port},
69- );
70- daemon.registerDomain (AppDomain (daemon, workflow.serverManager));
71- await daemon.onExit;
72- await workflow.shutDown ();
73- return 0 ;
53+ Daemon daemon;
54+ DevWorkflow workflow;
55+ try {
56+ daemon = Daemon (_stdinCommandStream, _stdoutCommandResponse);
57+ var daemonDomain = DaemonDomain (daemon);
58+ setLogHandler ((level, message, {verbose}) {
59+ daemonDomain.sendEvent (
60+ 'daemon.logMessage' , {'level' : '$level ' , 'message' : message});
61+ });
62+ daemon.registerDomain (daemonDomain);
63+ var configuration =
64+ Configuration (launchInChrome: true , debug: true , autoRun: false );
65+ var pubspecLock = await readPubspecLock (configuration);
66+ var buildOptions =
67+ buildRunnerArgs (pubspecLock, configuration, includeOutput: false );
68+ var port = await findUnusedPort ();
69+ workflow = await DevWorkflow .start (
70+ configuration,
71+ buildOptions,
72+ {'web' : port},
73+ );
74+ daemon.registerDomain (AppDomain (daemon, workflow.serverManager));
75+ await daemon.onExit;
76+ return 0 ;
77+ } catch (e) {
78+ daemon? .shutdown ();
79+ rethrow ;
80+ } finally {
81+ unawaited (workflow? .shutDown ());
82+ }
7483 }
7584}
0 commit comments