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.isEmpty) {
logger.error(
'❌ Usage: khadem make:job --name=JobName or --name=folder/JobName',
);
exitCode = 1;
return;
}
final parts = CliNaming.splitFolderAndName(name);
final folder = parts.folder;
var jobName = parts.name;
// Ensure job name ends with 'Job'
jobName = CliNaming.ensureSuffix(CliNaming.toPascalCase(jobName), 'Job');
final className = jobName;
final fileName =
'${CliNaming.toSnakeCase(jobName.replaceAll('Job', ''))}_job.dart';
final relativePath = folder.isEmpty
? 'lib/app/jobs/$fileName'
: 'lib/app/jobs/$folder/$fileName';
final file = File(relativePath);
await file.create(recursive: true);
await file.writeAsString(
_jobStub(className, jobName.replaceAll('Job', ''), folder),
);
logger.info('✅ Job "$className" created at "$relativePath"');
exitCode = 0;
return;
}