createFeatureStructure method

void createFeatureStructure(
  1. String feature
)

Implementation

void createFeatureStructure(String feature) {
  final base = Directory(feature);
  if (!base.existsSync()) base.createSync();

  final directories = [
    'domain/entity',
    'domain/repo',
    'data/endpoints',
    'data/model/request',
    'data/model/response',
    'data/repo_impl',
    'data/sources',
    'presentation/bloc',
    'presentation/screens',
    'presentation/utils',
    'presentation/widgets',
  ];

  for (final dir in directories) {
    Directory('${base.path}/$dir').createSync(recursive: true);
  }

  // Create boilerplate files
  createFile('${base.path}/domain/repo/${feature}_repository.dart',
      featureRepositoryTemplate(feature));
  createFile('${base.path}/data/repo_impl/${feature}_repo_impl.dart',
      repoImplTemplate(feature));
  createFile('${base.path}/data/sources/${feature}_remote_source.dart',
      remoteSourceTemplate(feature));
  createFile('${base.path}/presentation/bloc/${feature}_bloc.dart',
      blocTemplate(feature));
  createFile('${base.path}/presentation/bloc/${feature}_event.dart',
      blocEventTemplate(feature));
  createFile('${base.path}/presentation/bloc/${feature}_state.dart',
      blocStateTemplate(feature));
  createFile('${base.path}/data/model/request/${feature}_request.dart',
      requestTemplate(feature));
  createFile('${base.path}/data/endpoints/${feature}_endpoints.dart',
      endpointTemplate(feature));

  print('✅ Feature $feature created successfully!');
}