loadPubspecConfigFromInput function

Config loadPubspecConfigFromInput(
  1. ConfigLoadInput input
)

Implementation

Config loadPubspecConfigFromInput(ConfigLoadInput input) {
  final pubspecLocaleHint = normalize(
    join(
      basename(input.pubspecFile.parent.path),
      basename(input.pubspecFile.path),
    ),
  );

  log.info('v$packageVersion Loading ...');
  log.info('Reading options from $pubspecLocaleHint');

  VersionConstraint? sdkConstraint;

  final defaultMap = loadYaml(configDefaultYamlContent) as YamlMap?;
  final pubspecMap = loadYaml(input.pubspecContent) as YamlMap?;
  if (safeCast<String>(pubspecMap?['environment']?['sdk']) case final sdk?) {
    sdkConstraint = VersionConstraint.parse(sdk);
  }

  Map mergedMap = mergeMap([defaultMap, pubspecMap]);
  if (input.buildOptions case final Map buildOptions
      when buildOptions.isNotEmpty) {
    mergedMap = mergeMap([
      mergedMap,
      {'flutter_gen': buildOptions},
    ]);
    log.info('Reading options from BuilderOptions');
  }

  final pubspec = Pubspec.fromJson(mergedMap);

  final pubspecLockMap = loadYaml(input.pubspecLockContent ?? '') as YamlMap?;
  if (safeCast<String>(pubspecLockMap?['sdks']?['dart']) case final sdk?) {
    sdkConstraint ??= VersionConstraint.parse(sdk);
  }

  final pubspecLockPackages = safeCast<YamlMap>(pubspecLockMap?['packages']);
  final integrationVersionConstraints = <Type, VersionConstraint>{};
  final integrationResolvedVersions = <Type, Version>{};
  for (final entry in integrationPackages.entries) {
    if (pubspec.dependenciesVersionConstraint[entry.value] case final c?) {
      integrationVersionConstraints[entry.key] = c;
    }
    if (pubspecLockPackages?[entry.value]?['version'] case final String v) {
      final version = Version.parse(v);
      integrationResolvedVersions[entry.key] = version;
    }
  }

  final analysisOptionsMap =
      loadYaml(input.analysisOptionsContent ?? '') as YamlMap?;
  // final formatterTrailingCommas = switch (safeCast<String>(
  //   analysisOptionsMap?['formatter']?['trailing_commas'],
  // )) {
  //   final s? => TrailingCommas.values.firstWhereOrNull((e) => e.name == s),
  //   _ => null,
  // };
  final formatterPageWidth = safeCast<int>(
    analysisOptionsMap?['formatter']?['page_width'],
  );

  return Config._(
    pubspec: pubspec,
    pubspecFile: input.pubspecFile,
    sdkConstraint: sdkConstraint,
    integrationResolvedVersions: integrationResolvedVersions,
    integrationVersionConstraints: integrationVersionConstraints,
    // formatterTrailingCommas: formatterTrailingCommas,
    formatterPageWidth: formatterPageWidth,
  );
}