22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5- // @dart = 2.9
6-
75import 'package:args/args.dart' ;
86import 'package:dwds/dwds.dart' ;
97import 'package:logging/logging.dart' ;
@@ -40,13 +38,13 @@ const disableDdsFlag = 'disable-dds';
4038
4139ReloadConfiguration _parseReloadConfiguration (ArgResults argResults) {
4240 var auto = argResults.options.contains (autoOption)
43- ? argResults[autoOption] as String
41+ ? argResults[autoOption] as String ?
4442 : null ;
4543
4644 void _handleDeprecatedFlag (String flag, String autoFallback) {
4745 if (argResults.options.contains (flag) &&
4846 argResults.wasParsed (flag) &&
49- argResults[flag] as bool == true ) {
47+ ( argResults[flag] as bool ? ?? false ) ) {
5048 logWriter (
5149 Level .WARNING ,
5250 '--$flag is deprecated please use --auto=$autoFallback instead '
@@ -83,52 +81,52 @@ ReloadConfiguration _parseReloadConfiguration(ArgResults argResults) {
8381}
8482
8583class Configuration {
86- final bool _autoRun;
87- final int _chromeDebugPort;
88- final bool _debugExtension;
89- final bool _debug;
90- final bool _enableInjectedClient;
91- final String _hostname;
92- final String _tlsCertChain;
93- final String _tlsCertKey;
94- final List <String > _launchApps;
95- final bool _launchInChrome;
96- final String _userDataDir;
97- final bool _logRequests;
98- final String _output;
99- final String outputInput;
100- final String outputPath;
101- final bool _release;
102- final ReloadConfiguration _reload;
103- final bool _requireBuildWebCompilers;
104- final bool _enableExpressionEvaluation;
105- final bool _verbose;
106- final bool _disableDds;
107- final String _nullSafety;
84+ final bool ? _autoRun;
85+ final int ? _chromeDebugPort;
86+ final bool ? _debugExtension;
87+ final bool ? _debug;
88+ final bool ? _enableInjectedClient;
89+ final String ? _hostname;
90+ final String ? _tlsCertChain;
91+ final String ? _tlsCertKey;
92+ final List <String >? _launchApps;
93+ final bool ? _launchInChrome;
94+ final String ? _userDataDir;
95+ final bool ? _logRequests;
96+ final String ? _output;
97+ final String ? outputInput;
98+ final String ? outputPath;
99+ final bool ? _release;
100+ final ReloadConfiguration ? _reload;
101+ final bool ? _requireBuildWebCompilers;
102+ final bool ? _enableExpressionEvaluation;
103+ final bool ? _verbose;
104+ final bool ? _disableDds;
105+ final String ? _nullSafety;
108106
109107 Configuration ({
110- bool autoRun,
111- int chromeDebugPort,
112- bool debugExtension,
113- bool debug,
114- bool enableInjectedClient,
115- String hostname,
116- String tlsCertChain,
117- String tlsCertKey,
118- List <String > launchApps,
119- bool launchInChrome,
120- String userDataDir,
121- bool logRequests,
122- String output,
108+ bool ? autoRun,
109+ int ? chromeDebugPort,
110+ bool ? debugExtension,
111+ bool ? debug,
112+ bool ? enableInjectedClient,
113+ String ? hostname,
114+ String ? tlsCertChain,
115+ String ? tlsCertKey,
116+ List <String >? launchApps,
117+ bool ? launchInChrome,
118+ String ? userDataDir,
119+ bool ? logRequests,
120+ String ? output,
123121 this .outputInput,
124122 this .outputPath,
125- ReloadConfiguration reload,
126- bool release,
127- bool requireBuildWebCompilers,
128- bool enableExpressionEvaluation,
129- bool verbose,
130- bool disableDds,
131- String nullSafety,
123+ ReloadConfiguration ? reload,
124+ bool ? release,
125+ bool ? requireBuildWebCompilers,
126+ bool ? enableExpressionEvaluation,
127+ bool ? verbose,
128+ bool ? disableDds,
129+ String ? nullSafety,
132130 }) : _autoRun = autoRun,
133131 _chromeDebugPort = chromeDebugPort,
134132 _debugExtension = debugExtension,
@@ -155,7 +153,7 @@ class Configuration {
155153 void _validateConfiguration () {
156154 // Both null and an empty string are valid values for outputInput. For any
157155 // other value, we need to ensure it's a top-level dir.
158- if (outputInput? .isNotEmpty ?? false ) ensureIsTopLevelDir (outputInput);
156+ if (outputInput? .isNotEmpty ?? false ) ensureIsTopLevelDir (outputInput! );
159157
160158 if ((tlsCertKey != null && tlsCertChain == null ) ||
161159 (tlsCertKey == null && tlsCertChain != null )) {
@@ -241,15 +239,15 @@ class Configuration {
241239
242240 String get hostname => _hostname ?? 'localhost' ;
243241
244- String get tlsCertChain => _tlsCertChain;
242+ String ? get tlsCertChain => _tlsCertChain;
245243
246- String get tlsCertKey => _tlsCertKey;
244+ String ? get tlsCertKey => _tlsCertKey;
247245
248246 List <String > get launchApps => _launchApps ?? [];
249247
250248 bool get launchInChrome => _launchInChrome ?? false ;
251249
252- String get userDataDir => _userDataDir;
250+ String ? get userDataDir => _userDataDir;
253251
254252 bool get logRequests => _logRequests ?? false ;
255253
@@ -270,17 +268,17 @@ class Configuration {
270268 /// 'sound', 'unsound', or 'auto'.
271269 /// 'auto' indicates that the default `package:build_web_compilers`
272270 /// behavior should be used.
273- String get nullSafety => _nullSafety;
271+ String get nullSafety => _nullSafety ?? 'auto' ;
274272
275273 /// Returns a new configuration with values updated from the parsed args.
276- static Configuration fromArgs (ArgResults argResults,
277- {Configuration defaultConfiguration}) {
274+ static Configuration fromArgs (ArgResults ? argResults,
275+ {Configuration ? defaultConfiguration}) {
278276 defaultConfiguration ?? = Configuration ();
279277 if (argResults == null ) return defaultConfiguration;
280278
281279 var enableInjectedClient =
282280 argResults.options.contains (enableInjectedClientFlag)
283- ? argResults[enableInjectedClientFlag] as bool
281+ ? ( argResults[enableInjectedClientFlag] as bool )
284282 : defaultConfiguration.enableInjectedClient;
285283
286284 // Change the defaults when we have no injected client to disable all
@@ -297,56 +295,56 @@ class Configuration {
297295 : defaultConfiguration.chromeDebugPort;
298296
299297 var debugExtension = argResults.options.contains (debugExtensionFlag)
300- ? argResults[debugExtensionFlag] as bool
298+ ? argResults[debugExtensionFlag] as bool ?
301299 : defaultConfiguration.debugExtension;
302300
303301 var debug = argResults.options.contains (debugFlag)
304- ? argResults[debugFlag] as bool
302+ ? argResults[debugFlag] as bool ?
305303 : defaultConfiguration.debug;
306304
307305 var hostname = argResults.options.contains (hostnameFlag)
308- ? argResults[hostnameFlag] as String
306+ ? argResults[hostnameFlag] as String ?
309307 : defaultConfiguration.hostname;
310308
311309 var tlsCertChain = argResults.options.contains (tlsCertChainFlag)
312- ? argResults[tlsCertChainFlag] as String
310+ ? argResults[tlsCertChainFlag] as String ?
313311 : defaultConfiguration.tlsCertChain;
314312
315313 var tlsCertKey = argResults.options.contains (tlsCertKeyFlag)
316- ? argResults[tlsCertKeyFlag] as String
314+ ? argResults[tlsCertKeyFlag] as String ?
317315 : defaultConfiguration.tlsCertKey;
318316
319317 var launchApps = argResults.options.contains (launchAppOption) &&
320318 argResults.wasParsed (launchAppOption)
321- ? argResults[launchAppOption] as List <String >
319+ ? argResults[launchAppOption] as List <String >?
322320 : defaultConfiguration.launchApps;
323321
324322 var launchInChrome = argResults.options.contains (launchInChromeFlag) &&
325323 argResults.wasParsed (launchInChromeFlag)
326- ? argResults[launchInChromeFlag] as bool
324+ ? argResults[launchInChromeFlag] as bool ?
327325 // We want to default to launch chrome if the user provides just --debug
328326 // and not --chrome-debug-port.
329- : debug &&
327+ : debug! &&
330328 ! (argResults.options.contains (launchInChromeFlag) &&
331329 argResults.wasParsed (chromeDebugPortFlag))
332330 ? true
333331 : defaultConfiguration.launchInChrome;
334332
335333 var userDataDir = argResults.options.contains (userDataDirFlag)
336- ? argResults[userDataDirFlag] as String
334+ ? argResults[userDataDirFlag] as String ?
337335 : defaultConfiguration.userDataDir;
338336
339337 var logRequests = argResults.options.contains (logRequestsFlag)
340- ? argResults[logRequestsFlag] as bool
338+ ? argResults[logRequestsFlag] as bool ?
341339 : defaultConfiguration.logRequests;
342340
343341 var output = argResults.options.contains (outputFlag)
344- ? argResults[outputFlag] as String
342+ ? argResults[outputFlag] as String ?
345343 : defaultConfiguration.output;
346344
347- String outputPath;
345+ String ? outputPath;
348346 String outputInput;
349- if (output == 'NONE' ) {
347+ if (output == 'NONE' || output == null ) {
350348 // The empty string means build everything.
351349 outputInput = '' ;
352350 } else {
@@ -362,29 +360,29 @@ class Configuration {
362360 }
363361
364362 var release = argResults.options.contains (releaseFlag)
365- ? argResults[releaseFlag] as bool
363+ ? argResults[releaseFlag] as bool ?
366364 : defaultConfiguration.release;
367365
368366 var requireBuildWebCompilers =
369367 argResults.options.contains (requireBuildWebCompilersFlag)
370- ? argResults[requireBuildWebCompilersFlag] as bool
368+ ? argResults[requireBuildWebCompilersFlag] as bool ?
371369 : defaultConfiguration.requireBuildWebCompilers;
372370
373371 var enableExpressionEvaluation =
374372 argResults.options.contains (enableExpressionEvaluationFlag)
375- ? argResults[enableExpressionEvaluationFlag] as bool
373+ ? argResults[enableExpressionEvaluationFlag] as bool ?
376374 : defaultConfiguration.enableExpressionEvaluation;
377375
378376 var verbose = argResults.options.contains (verboseFlag)
379- ? argResults[verboseFlag] as bool
377+ ? argResults[verboseFlag] as bool ?
380378 : defaultConfiguration.verbose;
381379
382380 var nullSafety = argResults.options.contains (nullSafetyFlag)
383- ? argResults[nullSafetyFlag] as String
381+ ? argResults[nullSafetyFlag] as String ?
384382 : defaultConfiguration.nullSafety;
385383
386384 var disableDds = argResults.options.contains (disableDdsFlag)
387- ? argResults[disableDdsFlag] as bool
385+ ? argResults[disableDdsFlag] as bool ?
388386 : defaultConfiguration.disableDds;
389387
390388 return Configuration (
0 commit comments