generate method

  1. @override
Future<void> generate(
  1. List<IModuleCodeContributor> modules,
  2. Logger logger,
  3. Map<String, dynamic> coreVars,
  4. String generateTo,
)
override

Generates files based on provided modules and context.

Implementation

@override
Future<void> generate(
  List<IModuleCodeContributor> modules,
  Logger logger,
  Map<String, dynamic> coreVars,
  String generateTo,
) async {
  final dependencies = modules
      .map((m) => m.moduleDescriptor.pubDependency)
      .expand((e) => e)
      .toSet();
  final devDependencies = modules
      .map((m) => m.moduleDescriptor.pubDevDependency)
      .expand((e) => e)
      .toSet();

  final file = File('$generateTo/pubspec.yaml');
  final yaml = await file.readAsString();
  final editor = YamlEditor(yaml);

  void updatePubspec(Set<String> dependencies, String pubSpecSection) {
    for (final dependency in dependencies) {
      final split = dependency.split(':');
      editor.update([pubSpecSection, split.first.trim()], split.last.trim());
    }
  }

  updatePubspec(dependencies, 'dependencies');
  updatePubspec(devDependencies, 'dev_dependencies');

  await file.writeAsString(editor.toString());
}