ServerConfig.fromArgs constructor
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,
);
}