execute method
Execute the command.
Implementation
@override
Future<CommandResult> execute(String args, ToolUseContext context) async {
final parts = args.trim().split(RegExp(r'\s+'));
final subcommand = parts.isNotEmpty && parts[0].isNotEmpty
? parts[0]
: 'status';
switch (subcommand) {
case 'status':
final ide = getConnectedIde();
if (ide == null) {
return const TextCommandResult(
'No IDE connected.\n'
'Connect with: /ide connect <vscode|jetbrains|neovim|emacs>',
);
}
return TextCommandResult('Connected to: $ide');
case 'connect':
if (parts.length < 2) {
return TextCommandResult(
'Usage: /ide connect <ide>\n'
'Supported: ${_supportedIdes.join(", ")}',
);
}
final ide = parts[1].toLowerCase();
if (!_supportedIdes.contains(ide)) {
return TextCommandResult(
'Unsupported IDE: $ide\n'
'Supported: ${_supportedIdes.join(", ")}',
);
}
final success = await connectIde(ide);
if (success) {
return TextCommandResult('Connected to $ide.');
}
return TextCommandResult(
'Failed to connect to $ide. Ensure the extension is installed.',
);
case 'disconnect':
disconnectIde();
return const TextCommandResult('IDE disconnected.');
default:
return TextCommandResult(
'Unknown subcommand: $subcommand\n'
'Usage: /ide [status|connect <ide>|disconnect]',
);
}
}