Unverified Commit f41fa9dd authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Migrate deferred_components_prebuild_validator to null safety (#83854)

parent 97dfafbb
......@@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// @dart = 2.8
import 'package:meta/meta.dart';
import 'package:xml/xml.dart';
import '../base/deferred_component.dart';
......@@ -34,12 +31,12 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
/// change. This defaults to true.
DeferredComponentsPrebuildValidator(Directory projectDir, Logger logger, Platform platform, {
bool exitOnFail = true,
String title,
Directory templatesDir,
String? title,
Directory? templatesDir,
}) : _templatesDir = templatesDir,
super(projectDir, logger, platform, exitOnFail: exitOnFail, title: title);
final Directory _templatesDir;
final Directory? _templatesDir;
/// Checks if an android dynamic feature module exists for each deferred
/// component.
......@@ -69,17 +66,20 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
);
if (!androidFiles.verifyFilesExist()) {
// generate into temp directory
final Map<String, List<File>> results =
await androidFiles.generateFiles(
final Map<String, List<File>> results = await androidFiles.generateFiles(
alternateAndroidDir: outputDir,
clearAlternateOutputDir: true,
);
for (final File file in results['outputs']) {
if (results.containsKey('outputs')) {
for (final File file in results['outputs']!) {
generatedFiles.add(file.path);
changesMade = true;
}
outputs.addAll(results['outputs']);
inputs.addAll(results['inputs']);
outputs.addAll(results['outputs']!);
}
if (results.containsKey('inputs')) {
inputs.addAll(results['inputs']!);
}
}
}
return !changesMade;
......@@ -148,16 +148,16 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
// wrong string stored.
for (final XmlElement resources in document.findAllElements('resources')) {
for (final XmlElement element in resources.findElements('string')) {
final String name = element.getAttribute('name');
final String? name = element.getAttribute('name');
if (requiredEntriesMap.containsKey(name)) {
if (element.text != null && element.text != requiredEntriesMap[name]) {
element.innerText = requiredEntriesMap[name];
element.innerText = requiredEntriesMap[name]!;
modified = true;
}
requiredEntriesMap.remove(name);
}
}
for (final String key in requiredEntriesMap.keys) {
requiredEntriesMap.forEach((String key, String value) {
modified = true;
final XmlElement newStringElement = XmlElement(
XmlName.fromString('string'),
......@@ -165,11 +165,11 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
XmlAttribute(XmlName.fromString('name'), key),
],
<XmlNode>[
XmlText(requiredEntriesMap[key]),
XmlText(value),
],
);
resources.children.add(newStringElement);
}
});
break;
}
if (modified) {
......@@ -211,17 +211,17 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
// directory.
class _DeferredComponentAndroidFiles {
_DeferredComponentAndroidFiles({
@required this.name,
@required this.projectDir,
this.logger,
Directory templatesDir,
required this.name,
required this.projectDir,
required this.logger,
Directory? templatesDir,
}) : _templatesDir = templatesDir;
// The name of the deferred component.
final String name;
final Directory projectDir;
final Logger logger;
final Directory _templatesDir;
final Directory? _templatesDir;
Directory get androidDir => projectDir.childDirectory('android');
Directory get componentDir => androidDir.childDirectory(name);
......@@ -235,7 +235,7 @@ class _DeferredComponentAndroidFiles {
}
// Generates any missing basic files for the dynamic feature into a temporary directory.
Future<Map<String, List<File>>> generateFiles({Directory alternateAndroidDir, bool clearAlternateOutputDir = false}) async {
Future<Map<String, List<File>>> generateFiles({Directory? alternateAndroidDir, bool clearAlternateOutputDir = false}) async {
final Directory outputDir = alternateAndroidDir?.childDirectory(name) ?? componentDir;
if (clearAlternateOutputDir && alternateAndroidDir != null) {
ErrorHandlingFileSystem.deleteIfExists(outputDir);
......@@ -251,9 +251,10 @@ class _DeferredComponentAndroidFiles {
// generates default build.gradle and AndroidManifest.xml for the deferred component.
Future<List<File>> _setupComponentFiles(Directory outputDir) async {
Template template;
if (_templatesDir != null) {
final Directory templateComponentDir = _templatesDir.childDirectory('module${globals.fs.path.separator}android${globals.fs.path.separator}deferred_component');
template = Template(templateComponentDir, templateComponentDir, _templatesDir,
final Directory? templatesDir = _templatesDir;
if (templatesDir != null) {
final Directory templateComponentDir = templatesDir.childDirectory('module${globals.fs.path.separator}android${globals.fs.path.separator}deferred_component');
template = Template(templateComponentDir, templateComponentDir, templatesDir,
fileSystem: globals.fs,
templateManifest: null,
logger: logger,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment