handle method
Called automatically before executing the command. You can override to do pre-validation or setup.
Implementation
@override
Future<void> handle(List<String> args) async {
final name = argResults?['name'] as String?;
if (name == null || name.trim().isEmpty) {
logger.error(
'Usage: khadem make:controller --name=ControllerName or --name=folder/ControllerName',
);
exitCode = 1;
return;
}
final parts = CliNaming.splitFolderAndName(name);
final folder = parts.folder;
final rawControllerName = parts.name;
final controllerName = CliNaming.ensureSuffix(
CliNaming.toPascalCase(rawControllerName),
'Controller',
);
final fileName =
CliNaming.toSnakeCase(controllerName.replaceAll('Controller', ''));
final relativePath = folder.isEmpty
? 'lib/app/http/controllers/${fileName}_controller.dart'
: 'lib/app/http/controllers/$folder/${fileName}_controller.dart';
final file = File(relativePath);
await file.create(recursive: true);
await file.writeAsString(_controllerStub(controllerName, fileName, folder));
logger.info('✅ Controller "$controllerName" created at "$relativePath".');
exitCode = 0;
return;
}