configure method
void
configure(
- YamlMap config
)
Implementation
@mustCallSuper
void configure(YamlMap config) {
final YamlList? yamlList = config['languages'] as YamlList?;
if (yamlList == null || yamlList.isEmpty) {
throw Exception(
"At least 1 language should be added to the 'languages' section in the pubspec.yaml\n"
'$programName\n'
" languages: ['en']");
}
final languages =
yamlList.map((dynamic item) => item.toString()).toList(growable: false);
final YamlList? docLanguageList = config['doc_languages'] as YamlList?;
List<String>? docLanguages;
if (docLanguageList != null) {
docLanguages =
docLanguageList.map((dynamic item) => item.toString()).toList();
}
var defaultLanguage = config['default_language'] as String?;
if (defaultLanguage == null) {
if (languages.contains('en')) {
defaultLanguage = 'en';
} else {
defaultLanguage = languages[0];
}
}
if (!languages.contains(defaultLanguage)) {
throw Exception('default language is not included in the languages list');
}
var outputDir = config['output_path'] as String?;
outputDir ??= defaultOutputDir;
if (!outputDir.endsWith('/')) {
outputDir += '/';
}
if (!outputDir.startsWith('lib/')) {
throw ArgumentError('output_path should always start with lib');
}
var assetsDir = config['assets_path'] as String?;
assetsDir ??= defaultAssetsDir;
if (!assetsDir.endsWith('/')) {
assetsDir += '/';
}
var localeAssetsDir = config['locale_assets_path'] as String?;
localeAssetsDir ??= defaultLocaleAssetsDir;
if (!localeAssetsDir.endsWith('/')) {
localeAssetsDir += '/';
}
this.localeAssetsDir = localeAssetsDir;
this.outputDir = outputDir;
this.assetsDir = assetsDir;
this.languages = languages;
this.defaultLanguage = defaultLanguage;
this.docLanguages = docLanguages ?? languages;
final different =
this.docLanguages.where((language) => !languages.contains(language));
if (different.isNotEmpty) {
throw Exception(
'$different is defined in doc_languages but they are not found in the supported languages');
}
}