mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

* synthetic packages by default in gen_l10n tool
* Refactor default path for synthetic package
* Remove unused import
* Code cleanup
* Further improvements to help text
* Refactor synthetic package path
* Remove newlines
* Test cleanup
* clean up logic in inputs and outputs list function
* Update l10n.yaml usage
* only add option if value is non-null
* Update stocks app as proof of concept for synthetic package usage
* Address nits
* print pubspec contents
* add print statements
* Do not allow null value for useSyntheticPackage
* +
* +
* +
* +
* Cleanup
* Add test
* Fix text
* Dont parse pubspec directly
* Test using context
* WIP: generate synthetic packages on pub get -- needs tests
* Allow null value
* Update null handling
* Refactor to properly handle null case
* Fix yamlMap condition
* Fix yaml node for real
* WIP: struggling to write tests
* WIP - take absolute path as an option
* Add tests
* Use environment project directory for synthetic package generation pathway
* Fix typo
* Improve help text
* Update defaults
* Remove unauthorized path import
* Fix pathing issues at synthetic package generation
* Fix typo in test
* Use path.join so projectDir matches up based on OS
* Fix Windows pathing in test
* Remove unnecessary replaceApp code for projectDir.path
* Use globals.fs.currentDirectory.path in resident_runner_test.dart
* Fix merge conflict
* Add test to ensure that synthetic package is generated on pub get
* Fix resident_runner_test.dart tests
* Fix tests
* Use package:file instead of dart:io
* WIP - exploration
* Remove synthetic package use from stocks example
* Update integration test to not use synthetic packages
* Remove trailing whitespace
* flutter pub get runs synth package generation
* Remove more print statements
* Add license header
* WIP - minimally working pub.get
* Use own MockBuildSystem
* Modify test and implementation to be a little cleaner
* Fix flutter pub get invocation
* Use synthetic packages in stocks app
* Revert "Use synthetic packages in stocks app"
This reverts commit 45bf24903c
.
* Add environment and buildSystem params to flutter test
* Address code review feedback
* +
* Isolate codegen into its own API
* Fix imports
* Slight refactor
* Add one more test for no l10n.yaml file
* Remove unneeded mock class and import in pub_get_test.dart
* More code review feedback
* Remove unnecessary imports
* Remove `return await`s that I missed
* use arrow functions instead
73 lines
2.2 KiB
Dart
73 lines
2.2 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:meta/meta.dart';
|
|
import 'package:yaml/yaml.dart';
|
|
|
|
import '../base/common.dart';
|
|
import '../base/file_system.dart';
|
|
import '../build_system/build_system.dart';
|
|
import '../build_system/targets/localizations.dart';
|
|
|
|
Future<void> generateLocalizationsSyntheticPackage({
|
|
@required Environment environment,
|
|
@required BuildSystem buildSystem,
|
|
}) async {
|
|
assert(environment != null);
|
|
assert(buildSystem != null);
|
|
|
|
final FileSystem fileSystem = environment.fileSystem;
|
|
final File l10nYamlFile = fileSystem.file(
|
|
fileSystem.path.join(environment.projectDir.path, 'l10n.yaml'));
|
|
|
|
// If pubspec.yaml has generate:true and if l10n.yaml exists in the
|
|
// root project directory, check to see if a synthetic package should
|
|
// be generated for gen_l10n.
|
|
if (!l10nYamlFile.existsSync()) {
|
|
return;
|
|
}
|
|
|
|
final YamlNode yamlNode = loadYamlNode(l10nYamlFile.readAsStringSync());
|
|
if (yamlNode.value != null && yamlNode is! YamlMap) {
|
|
throwToolExit(
|
|
'Expected ${l10nYamlFile.path} to contain a map, instead was $yamlNode'
|
|
);
|
|
}
|
|
|
|
BuildResult result;
|
|
// If an l10n.yaml file exists but is empty, attempt to build synthetic
|
|
// package with default settings.
|
|
if (yamlNode.value == null) {
|
|
result = await buildSystem.build(
|
|
const GenerateLocalizationsTarget(),
|
|
environment,
|
|
);
|
|
} else {
|
|
final YamlMap yamlMap = yamlNode as YamlMap;
|
|
final Object value = yamlMap['synthetic-package'];
|
|
if (value is! bool && value != null) {
|
|
throwToolExit(
|
|
'Expected "synthetic-package" to have a bool value, '
|
|
'instead was "$value"'
|
|
);
|
|
}
|
|
|
|
// Generate gen_l10n synthetic package only if synthetic-package: true or
|
|
// synthetic-package is null.
|
|
final bool isSyntheticL10nPackage = value as bool ?? true;
|
|
if (!isSyntheticL10nPackage) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
result = await buildSystem.build(
|
|
const GenerateLocalizationsTarget(),
|
|
environment,
|
|
);
|
|
|
|
if (result == null || result.hasException) {
|
|
throwToolExit('Generating synthetic localizations package has failed.');
|
|
}
|
|
}
|