ServerConfig.fromArgs constructor

ServerConfig.fromArgs(
  1. List<String> args
)

Parses command line arguments into a ServerConfig.

Throws FormatException if arguments are invalid.

Implementation

factory ServerConfig.fromArgs(List<String> args) {
  final parser = _buildParser();
  final results = parser.parse(args);

  if (results.flag('help')) {
    return ServerConfig(
      transport: TransportType.stdio, // Default dummy
      host: '',
      port: 0,
      path: '',
      verbose: false,
      help: true,
    );
  }

  final transportStr = results.option('transport');
  final transport = TransportType.values.firstWhere(
    (e) => e.name == transportStr,
    orElse: () =>
        throw FormatException('Unknown transport type: $transportStr'),
  );

  final host = results.option('host')!;
  final portStr = results.option('port')!;
  final port = int.tryParse(portStr);
  if (port == null) {
    throw FormatException('Port must be a valid integer: $portStr');
  }

  if (port < 0 || port > 65535) {
    throw FormatException('Port must be between 0 and 65535');
  }

  return ServerConfig(
    transport: transport,
    host: host,
    port: port,
    path: results.option('path')!,
    verbose: results.flag('verbose'),
    help: false,
  );
}