(
request: ExecuteCommandRequest,
state: State<'_, TerminalState>,
)
| 670 | |
| 671 | #[tauri::command] |
| 672 | pub async fn terminal_execute( |
| 673 | request: ExecuteCommandRequest, |
| 674 | state: State<'_, TerminalState>, |
| 675 | ) -> Result<ExecuteCommandResponse, String> { |
| 676 | if is_remote_session(&request.session_id).await { |
| 677 | if let Some(remote_manager) = get_remote_workspace_manager() { |
| 678 | let terminal_manager = remote_manager |
| 679 | .get_terminal_manager() |
| 680 | .await |
| 681 | .ok_or("Remote terminal manager not available")?; |
| 682 | let session = terminal_manager |
| 683 | .get_session(&request.session_id) |
| 684 | .await |
| 685 | .ok_or("Remote session not found")?; |
| 686 | let ssh_manager = remote_manager |
| 687 | .get_ssh_manager() |
| 688 | .await |
| 689 | .ok_or("SSH manager not available")?; |
| 690 | let (stdout, stderr, exit_code) = ssh_manager |
| 691 | .execute_command(&session.connection_id, &request.command) |
| 692 | .await |
| 693 | .map_err(|e| format!("Failed to execute remote command: {}", e))?; |
| 694 | |
| 695 | return Ok(ExecuteCommandResponse { |
| 696 | command: request.command, |
| 697 | command_id: format!( |
| 698 | "remote-cmd-{}", |
| 699 | std::time::SystemTime::now() |
| 700 | .duration_since(std::time::UNIX_EPOCH) |
| 701 | .unwrap_or_default() |
| 702 | .as_millis() |
| 703 | ), |
| 704 | output: if stderr.is_empty() { |
| 705 | stdout |
| 706 | } else { |
| 707 | format!("{}\n{}", stdout, stderr) |
| 708 | }, |
| 709 | exit_code: Some(exit_code), |
| 710 | completion_reason: "completed".to_string(), |
| 711 | }); |
| 712 | } |
| 713 | } |
| 714 | |
| 715 | let api = state.get_or_init_api().await?; |
| 716 | |
| 717 | let core_request = CoreExecuteCommandRequest { |
| 718 | session_id: request.session_id, |
| 719 | command: request.command, |
| 720 | timeout_ms: request.timeout_ms, |
| 721 | prevent_history: request.prevent_history, |
| 722 | }; |
| 723 | |
| 724 | let result = api |
| 725 | .execute_command(core_request) |
| 726 | .await |
| 727 | .map_err(|e| format!("Failed to execute command: {}", e))?; |
| 728 | |
| 729 | Ok(ExecuteCommandResponse::from(result)) |
nothing calls this directly
no test coverage detected