run method

  1. @override
void run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
void run() async {
  try {
    // Check if this is an init command
    final isInit = argResults?.rest.firstOrNull == 'init';

    if (isInit) {
      // Handle init command directly
      await _handleInitCommand();
      return;
    }

    // Validate inputs
    if (!_validateInputs()) return;

    // Prepare configuration
    final config = _prepareConfiguration();

    // Validate configuration
    if (!_configManager.validateConfig(config)) return;

    // Execute generation
    final success = await _executeGeneration(config);

    if (success) {
      _reportSuccess();
    }
  } catch (e, stackTrace) {
    StatusHelper.failed(
      'Local2Dart generation failed: $e',
      suggestion: 'Check your configuration and try again',
      examples: [
        'morpheme generate local2dart --help',
        'morpheme generate local2dart init',
      ],
    );
    print(stackTrace);
  }
}