Skip to content

Commit ce498c2

Browse files
authored
Migrate configuration.dart and shared.dart to null-safety (#1757)
1 parent 69aac60 commit ce498c2

File tree

2 files changed

+76
-80
lines changed

2 files changed

+76
-80
lines changed

webdev/lib/src/command/configuration.dart

+71-73
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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-
75
import 'package:args/args.dart';
86
import 'package:dwds/dwds.dart';
97
import 'package:logging/logging.dart';
@@ -40,13 +38,13 @@ const disableDdsFlag = 'disable-dds';
4038

4139
ReloadConfiguration _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

8583
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;
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(

webdev/lib/src/command/shared.dart

+5-7
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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-
75
import 'dart:async';
86
import 'dart:io';
97

@@ -16,7 +14,7 @@ import 'configuration.dart';
1614
final lineLength = stdout.hasTerminal ? stdout.terminalColumns : 80;
1715

1816
void addSharedArgs(ArgParser argParser,
19-
{String outputDefault, bool releaseDefault}) {
17+
{String? outputDefault, bool? releaseDefault}) {
2018
outputDefault ??= outputNone;
2119
releaseDefault ??= true;
2220
argParser
@@ -127,13 +125,13 @@ final _defaultWebDirs = const ['web'];
127125
///
128126
/// Throws an [InvalidConfiguration] exception if it can't find at
129127
/// least one directory.
130-
Map<String, int> parseDirectoryArgs(List<String> args, {int basePort}) {
128+
Map<String, int> parseDirectoryArgs(List<String> args, {int? basePort}) {
131129
var result = <String, int>{};
132-
basePort ??= 8080;
130+
var port = basePort ?? 8080;
133131
if (args.isEmpty) {
134132
for (var dir in _defaultWebDirs) {
135133
if (Directory(dir).existsSync()) {
136-
result[dir] = basePort++;
134+
result[dir] = port++;
137135
}
138136
}
139137
} else {
@@ -143,7 +141,7 @@ Map<String, int> parseDirectoryArgs(List<String> args, {int basePort}) {
143141
if (splitOption.length == 2) {
144142
result[splitOption.first] = int.parse(splitOption.last);
145143
} else {
146-
result[arg] = basePort++;
144+
result[arg] = port++;
147145
}
148146
}
149147
}

0 commit comments

Comments
 (0)