execute method

  1. @override
Future<void> execute()
override

execute command

Implementation

@override
Future<void> execute() async {
  var middlewareName = this.name;
  final middlewareDir =
      flags.contains('--dir') ? _getArgValue('--dir') : 'lib/middleware';
  final verbose = flags.contains('--verbose') ? true : false;
  final customFileName =
      flags.contains('--file') ? _getArgValue('--file') : null;

  if (verbose) {
    LogService.info('Creating middleware $middlewareName in $middlewareDir');
  }

  final projectDir = Directory.current.path;
  final fullMiddlewareDir = path.join(projectDir, middlewareDir);

  try {
    if (!Directory(fullMiddlewareDir).existsSync()) {
      Directory(fullMiddlewareDir).createSync(recursive: true);
      if (verbose) {
        LogService.info("Created directory: $middlewareDir");
      }
    }

    // Determine the file path
    // Determine the file path
    final fileName =
        customFileName != null
            ? customFileName.endsWith('.dart')
                ? customFileName
                : '$customFileName.dart'
            : '${_getFileNameFromMiddlewareName(middlewareName)}_middleware.dart';
    final filePath = path.join(fullMiddlewareDir, fileName);

    // Check if the file already exists
    if (File(filePath).existsSync()) {
      LogService.error("File already exists: $filePath");
      return;
    }

    // Generate the middleware content
    final middlewareContent = _generateMiddlewareContent(middlewareName);

    // Write the file
    File(filePath).writeAsStringSync(middlewareContent);

    LogService.success("Generated middleware at: $filePath");
  } catch (e, stackTrace) {
    LogService.error(
      "Error creating middleware",
      error: e,
      stackTrace: stackTrace,
    );
  }
}