run method

Future<void> run(
  1. List<String> arguments
)

Runs the FLX CLI with the provided command-line arguments.

arguments - List of command-line arguments to process.

Supports commands like:

  • gen:feature <name> - Generate a complete feature
  • gen:model <name> - Generate a model with Freezed/Equatable
  • gen:usecase <name> - Generate a use case
  • config init - Initialize configuration
  • --help - Show help information
  • --version - Show version information

Implementation

Future<void> run(List<String> arguments) async {
  // Handle special case for config --state command
  if (arguments.length >= 3 && arguments[0] == 'config' && arguments[1] == '--state') {
    await _setStateManager(arguments[2]);
    return;
  }

  final parser = ArgParser()
    ..addFlag('help', abbr: 'h', help: 'Show this help message')
    ..addFlag('version', abbr: 'v', help: 'Show version information');

  try {
    final results = parser.parse(arguments);

    if (results['help']) {
      _showHelp();
      return;
    }

    if (results['version']) {
      _showVersion();
      return;
    }

    if (results.rest.isEmpty) {
      _showHelp();
      return;
    }

    final command = results.rest.first;
    final args = results.rest.skip(1).toList();

    switch (command) {
      case 'gen':
        await _handleGenCommand(args);
        break;
      case 'config':
        await _handleConfigCommand(args);
        break;
      default:
        print('Unknown command: $command');
        _showHelp();
    }
  } catch (e) {
    print('Error: $e');
    _showHelp();
  }
}