execute method
Executes the command with the provided arguments.
Returns an integer exit code (0 for success).
Implementation
@override
Future<int> execute(List<String> arguments) async {
final ArgResults results;
try {
results = _argParser.parse(arguments);
} on FormatException catch (e) {
throw ValidationException(
'Error: ${e.message}\n\nUsage:\n flutter_setup feature <feature_name> [--path <path>]',
);
}
if (results.rest.isEmpty) {
throw const ValidationException(
'Error: Feature name is required.\n\nUsage:\n flutter_setup feature <feature_name> [--path <path>]',
);
}
final rawFeatureName = results.rest.first;
final targetPath = results['path'] as String? ?? '.';
final vars = VariableResolver.resolveFeature(rawFeatureName: rawFeatureName);
final featurePascal = vars['feature_name_pascal_case']!;
final featureSnake = vars['feature_name_snake_case']!;
final renderResult = await _generator.generateFeature(
rawFeatureName: rawFeatureName,
projectPath: targetPath,
);
_output.success('Generated feature "$featurePascal" in lib/features/$featureSnake');
for (final file in renderResult.createdFiles) {
_output.info(' - $file');
}
_output.info(
'\nDon\'t forget to add a route for ${featurePascal}Screen in lib/core/router/app_router.dart',
);
return 0;
}