generateCoreBase function

Future<void> generateCoreBase()

Implementation

Future<void> generateCoreBase() async {
  try {
    final featurePath = path.join(Directory.current.path, 'lib/core/');
    final structure = {
      'common': [],
      'constants': [
        'app_colors.dart',
        'app_images.dart',
        'app_enums.dart',
        'app_icons.dart',
      ],
      'di': ['configure_dependencies.dart', 'third_part.dart'],
      'errors': ['failure.dart', 'network_exceptions.dart'],
      'extensions': [
        'context_extensions.dart',
        'string_extensions.dart',
        'color_extensions.dart',
      ],
      'global/cubit': ['public_cubit.dart', 'public_state.dart'],
      'navigation': ['app_router.dart', 'routers.dart'],
      'network': ['dio_client.dart', 'api_endpoints.dart'],
      'services': ['local_keys_service.dart', 'app_device_utils.dart'],
      'theme': ['app_theme.dart', 'app_text_theme.dart'],
      'utils': ['validators.dart', 'formatters.dart'],
      'widgets': ['loading_widget.dart'],
      '': ['setup.dart'],
    };

    for (final entry in structure.entries) {
      final folderPath = path.join(featurePath, entry.key);
      await Directory(folderPath).create(recursive: true);
      for (final fileName in entry.value) {
        final filePath = path.join(folderPath, fileName);
        final content = getCoreFileContent(fileName: fileName);
        await File(filePath).writeAsString(content);
      }
    }
  } catch (e) {
    print('❌ Failed to create Feature: $e');
    exit(1);
  }
}