generateFeature method

void generateFeature(
  1. ProjectContext ctx,
  2. String featureName
)

Generate a full feature for the project's architecture.

Implementation

void generateFeature(ProjectContext ctx, String featureName) {
  final snake = StringUtils.toSnakeCase(featureName);
  if (!StringUtils.isValidPackageName(snake)) {
    throw StateError(
      'Invalid feature name "$featureName". Use lowercase letters, '
      'numbers, and underscores (e.g., user_profile).',
    );
  }

  switch (ctx.architecture) {
    case 'clean':
      _generateCleanFeature(ctx, snake);
      break;
    case 'mvvm':
      _generateMvvmFeature(ctx, snake);
      break;
    case 'feature-first':
      _generateFeatureFirstFeature(ctx, snake);
      break;
    case 'simple':
      _generateSimpleFeature(ctx, snake);
      break;
    default:
      throw StateError(
        'Unknown architecture "${ctx.architecture}" in srik.yaml.',
      );
  }

  ctx.appendFeature(snake);
}