2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
- // @dart = 2.9
6
-
7
5
import 'package:args/args.dart' ;
8
6
import 'package:dwds/dwds.dart' ;
9
7
import 'package:logging/logging.dart' ;
@@ -40,13 +38,13 @@ const disableDdsFlag = 'disable-dds';
40
38
41
39
ReloadConfiguration _parseReloadConfiguration (ArgResults argResults) {
42
40
var auto = argResults.options.contains (autoOption)
43
- ? argResults[autoOption] as String
41
+ ? argResults[autoOption] as String ?
44
42
: null ;
45
43
46
44
void _handleDeprecatedFlag (String flag, String autoFallback) {
47
45
if (argResults.options.contains (flag) &&
48
46
argResults.wasParsed (flag) &&
49
- argResults[flag] as bool == true ) {
47
+ ( argResults[flag] as bool ? ?? false ) ) {
50
48
logWriter (
51
49
Level .WARNING ,
52
50
'--$flag is deprecated please use --auto=$autoFallback instead '
@@ -83,52 +81,52 @@ ReloadConfiguration _parseReloadConfiguration(ArgResults argResults) {
83
81
}
84
82
85
83
class 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;
108
106
109
107
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,
123
121
this .outputInput,
124
122
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,
132
130
}) : _autoRun = autoRun,
133
131
_chromeDebugPort = chromeDebugPort,
134
132
_debugExtension = debugExtension,
@@ -155,7 +153,7 @@ class Configuration {
155
153
void _validateConfiguration () {
156
154
// Both null and an empty string are valid values for outputInput. For any
157
155
// 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! );
159
157
160
158
if ((tlsCertKey != null && tlsCertChain == null ) ||
161
159
(tlsCertKey == null && tlsCertChain != null )) {
@@ -241,15 +239,15 @@ class Configuration {
241
239
242
240
String get hostname => _hostname ?? 'localhost' ;
243
241
244
- String get tlsCertChain => _tlsCertChain;
242
+ String ? get tlsCertChain => _tlsCertChain;
245
243
246
- String get tlsCertKey => _tlsCertKey;
244
+ String ? get tlsCertKey => _tlsCertKey;
247
245
248
246
List <String > get launchApps => _launchApps ?? [];
249
247
250
248
bool get launchInChrome => _launchInChrome ?? false ;
251
249
252
- String get userDataDir => _userDataDir;
250
+ String ? get userDataDir => _userDataDir;
253
251
254
252
bool get logRequests => _logRequests ?? false ;
255
253
@@ -270,17 +268,17 @@ class Configuration {
270
268
/// 'sound', 'unsound', or 'auto'.
271
269
/// 'auto' indicates that the default `package:build_web_compilers`
272
270
/// behavior should be used.
273
- String get nullSafety => _nullSafety;
271
+ String get nullSafety => _nullSafety ?? 'auto' ;
274
272
275
273
/// 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}) {
278
276
defaultConfiguration ?? = Configuration ();
279
277
if (argResults == null ) return defaultConfiguration;
280
278
281
279
var enableInjectedClient =
282
280
argResults.options.contains (enableInjectedClientFlag)
283
- ? argResults[enableInjectedClientFlag] as bool
281
+ ? ( argResults[enableInjectedClientFlag] as bool )
284
282
: defaultConfiguration.enableInjectedClient;
285
283
286
284
// Change the defaults when we have no injected client to disable all
@@ -297,56 +295,56 @@ class Configuration {
297
295
: defaultConfiguration.chromeDebugPort;
298
296
299
297
var debugExtension = argResults.options.contains (debugExtensionFlag)
300
- ? argResults[debugExtensionFlag] as bool
298
+ ? argResults[debugExtensionFlag] as bool ?
301
299
: defaultConfiguration.debugExtension;
302
300
303
301
var debug = argResults.options.contains (debugFlag)
304
- ? argResults[debugFlag] as bool
302
+ ? argResults[debugFlag] as bool ?
305
303
: defaultConfiguration.debug;
306
304
307
305
var hostname = argResults.options.contains (hostnameFlag)
308
- ? argResults[hostnameFlag] as String
306
+ ? argResults[hostnameFlag] as String ?
309
307
: defaultConfiguration.hostname;
310
308
311
309
var tlsCertChain = argResults.options.contains (tlsCertChainFlag)
312
- ? argResults[tlsCertChainFlag] as String
310
+ ? argResults[tlsCertChainFlag] as String ?
313
311
: defaultConfiguration.tlsCertChain;
314
312
315
313
var tlsCertKey = argResults.options.contains (tlsCertKeyFlag)
316
- ? argResults[tlsCertKeyFlag] as String
314
+ ? argResults[tlsCertKeyFlag] as String ?
317
315
: defaultConfiguration.tlsCertKey;
318
316
319
317
var launchApps = argResults.options.contains (launchAppOption) &&
320
318
argResults.wasParsed (launchAppOption)
321
- ? argResults[launchAppOption] as List <String >
319
+ ? argResults[launchAppOption] as List <String >?
322
320
: defaultConfiguration.launchApps;
323
321
324
322
var launchInChrome = argResults.options.contains (launchInChromeFlag) &&
325
323
argResults.wasParsed (launchInChromeFlag)
326
- ? argResults[launchInChromeFlag] as bool
324
+ ? argResults[launchInChromeFlag] as bool ?
327
325
// We want to default to launch chrome if the user provides just --debug
328
326
// and not --chrome-debug-port.
329
- : debug &&
327
+ : debug! &&
330
328
! (argResults.options.contains (launchInChromeFlag) &&
331
329
argResults.wasParsed (chromeDebugPortFlag))
332
330
? true
333
331
: defaultConfiguration.launchInChrome;
334
332
335
333
var userDataDir = argResults.options.contains (userDataDirFlag)
336
- ? argResults[userDataDirFlag] as String
334
+ ? argResults[userDataDirFlag] as String ?
337
335
: defaultConfiguration.userDataDir;
338
336
339
337
var logRequests = argResults.options.contains (logRequestsFlag)
340
- ? argResults[logRequestsFlag] as bool
338
+ ? argResults[logRequestsFlag] as bool ?
341
339
: defaultConfiguration.logRequests;
342
340
343
341
var output = argResults.options.contains (outputFlag)
344
- ? argResults[outputFlag] as String
342
+ ? argResults[outputFlag] as String ?
345
343
: defaultConfiguration.output;
346
344
347
- String outputPath;
345
+ String ? outputPath;
348
346
String outputInput;
349
- if (output == 'NONE' ) {
347
+ if (output == 'NONE' || output == null ) {
350
348
// The empty string means build everything.
351
349
outputInput = '' ;
352
350
} else {
@@ -362,29 +360,29 @@ class Configuration {
362
360
}
363
361
364
362
var release = argResults.options.contains (releaseFlag)
365
- ? argResults[releaseFlag] as bool
363
+ ? argResults[releaseFlag] as bool ?
366
364
: defaultConfiguration.release;
367
365
368
366
var requireBuildWebCompilers =
369
367
argResults.options.contains (requireBuildWebCompilersFlag)
370
- ? argResults[requireBuildWebCompilersFlag] as bool
368
+ ? argResults[requireBuildWebCompilersFlag] as bool ?
371
369
: defaultConfiguration.requireBuildWebCompilers;
372
370
373
371
var enableExpressionEvaluation =
374
372
argResults.options.contains (enableExpressionEvaluationFlag)
375
- ? argResults[enableExpressionEvaluationFlag] as bool
373
+ ? argResults[enableExpressionEvaluationFlag] as bool ?
376
374
: defaultConfiguration.enableExpressionEvaluation;
377
375
378
376
var verbose = argResults.options.contains (verboseFlag)
379
- ? argResults[verboseFlag] as bool
377
+ ? argResults[verboseFlag] as bool ?
380
378
: defaultConfiguration.verbose;
381
379
382
380
var nullSafety = argResults.options.contains (nullSafetyFlag)
383
- ? argResults[nullSafetyFlag] as String
381
+ ? argResults[nullSafetyFlag] as String ?
384
382
: defaultConfiguration.nullSafety;
385
383
386
384
var disableDds = argResults.options.contains (disableDdsFlag)
387
- ? argResults[disableDdsFlag] as bool
385
+ ? argResults[disableDdsFlag] as bool ?
388
386
: defaultConfiguration.disableDds;
389
387
390
388
return Configuration (
0 commit comments