makeEvent static method

Future<void> makeEvent(
  1. String className,
  2. String value, {
  3. String folderPath = eventsFolder,
  4. bool forceCreate = false,
  5. bool addToConfig = true,
})

Creates a new Event.

Implementation

static Future<void> makeEvent(
  String className,
  String value, {
  String folderPath = eventsFolder,
  bool forceCreate = false,
  bool addToConfig = true,
}) async {
  String name = className.replaceAll(RegExp(r'(_?event)'), "");

  String filePath = '$folderPath/${name.snakeCase}_event.dart';

  await _makeDirectory(folderPath);
  await _checkIfFileExists(filePath, shouldForceCreate: forceCreate);
  await _createNewFile(
    filePath,
    value,
    onSuccess: () {
      final linkText = '${name.snakeCase}_event';
      final link = MetroConsole.hyperlink(linkText, filePath);
      MetroConsole.writeInGreen('[Event] $link created 🎉');
    },
  );

  String classImport = makeImportPathEvent(name.snakeCase);
  await MetroService.addToConfig(
    configName: "events",
    classImport: classImport,
    createTemplate: (file) {
      String eventName = "${name.pascalCase}Event";

      RegExp reg = RegExp(r'final Map<Type, NyEvent> events = \{([^}]*)\};');
      final match = _getFirstRegexMatch(reg, file);
      if (match == null) return file;
      String template =
          """final Map<Type, NyEvent> events = {$match
$eventName: $eventName(),
};""";

      return file.replaceFirst(reg, template);
    },
  );
}