1use crate::protocol::{Request, Response};
2
3pub async fn execute(session: &str, command: &str, name: Option<String>) -> i32 {
4 let req = Request::Run {
5 command: command.into(),
6 name,
7 cwd: None,
8 env: None,
9 };
10 match crate::cli::request(session, &req, true).await {
11 Ok(Response::RunOk { name, id, pid }) => {
12 println!("{} (id: {}, pid: {})", name, id, pid);
13 0
14 }
15 Ok(Response::Error { code, message }) => {
16 eprintln!("error: {}", message);
17 code
18 }
19 Ok(_) => {
20 eprintln!("unexpected response");
21 1
22 }
23 Err(e) => {
24 eprintln!("error: {}", e);
25 1
26 }
27 }
28}