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:middleware --name=MiddlewareName or --name=folder/MiddlewareName',
);
exitCode = 1;
return;
}
final parts = CliNaming.splitFolderAndName(name);
final folder = parts.folder;
var middlewareName = parts.name;
// Ensure middleware name ends with 'Middleware'
middlewareName = CliNaming.ensureSuffix(
CliNaming.toPascalCase(middlewareName),
'Middleware',
);
final className = middlewareName;
final fileName =
'${CliNaming.toSnakeCase(middlewareName.replaceAll('Middleware', ''))}_middleware.dart';
final relativePath = folder.isEmpty
? 'lib/app/http/middleware/$fileName'
: 'lib/app/http/middleware/$folder/$fileName';
final file = File(relativePath);
if (file.existsSync()) {
logger.error('❌ Middleware "$fileName" already exists!');
exitCode = 1;
return;
}
await file.create(recursive: true);
await file.writeAsString(
_template(
className,
middlewareName.replaceAll('Middleware', ''),
folder,
),
);
logger.info('✅ Middleware "$className" created at "$relativePath"');
exitCode = 0;
return;
}