loadPubspecConfig function
Implementation
Config loadPubspecConfig(File pubspecFile, {File? buildFile}) {
YamlMap? getBuildFileOptions(File file) {
if (!file.existsSync()) {
return null;
}
final buildContent = file.readAsStringSync();
final rawMap = loadYaml(buildContent) as Map?;
final builders = rawMap?['targets']?[r'$default']?['builders'];
final optionBuildMap = (builders?['flutter_gen_runner'] ??
builders?['flutter_gen'])?['options'];
if (optionBuildMap is YamlMap && optionBuildMap.isNotEmpty) {
return optionBuildMap;
}
return null;
}
final pubspecLocaleHint = normalize(
join(basename(pubspecFile.parent.path), basename(pubspecFile.path)),
);
log.info('v$packageVersion Loading ...');
log.info('Reading options from $pubspecLocaleHint');
final pubspecContent = pubspecFile.readAsStringSync();
Map? buildOptions;
// Fallback to the build.yaml when no build file has been specified and
// the default one has valid configurations.
if (buildFile == null && getBuildFileOptions(File('build.yaml')) != null) {
buildFile = File('build.yaml');
}
if (buildFile != null) {
if (buildFile.existsSync()) {
final optionBuildMap = getBuildFileOptions(buildFile);
if (optionBuildMap != null) {
buildOptions = optionBuildMap;
final buildLocaleHint = normalize(
join(basename(buildFile.parent.path), basename(buildFile.path)),
);
log.info('Reading options from $buildLocaleHint');
} else {
log.severe(
'Specified ${buildFile.path} as input but the file '
'does not contain valid options, ignoring...',
);
}
} else {
log.warning(
'Specified ${buildFile.path} as input but the file '
'does not exists.',
);
}
}
final pubspecLockFile = File(
normalize(join(pubspecFile.parent.path, 'pubspec.lock')),
);
final pubspecLockContent = switch (pubspecLockFile.existsSync()) {
true => pubspecLockFile.readAsStringSync(),
false => '',
};
final analysisOptionsFile = File(
normalize(join(pubspecFile.parent.path, 'analysis_options.yaml')),
);
final analysisOptionsContent = switch (analysisOptionsFile.existsSync()) {
true => analysisOptionsFile.readAsStringSync(),
false => '',
};
return loadPubspecConfigFromInput(
ConfigLoadInput(
pubspecFile: pubspecFile,
pubspecContent: pubspecContent,
buildOptions: buildOptions,
pubspecLockContent: pubspecLockContent,
analysisOptionsContent: analysisOptionsContent,
),
);
}