handle method

  1. @override
Future<void> handle(
  1. List<String> args
)
override

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;
}