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!');
}