1use crate::config::{load_config, resolve_session};
2use crate::protocol::Request;
3
4pub async fn execute(cli_session: Option<&str>) -> i32 {
5 let session = match cli_session {
6 Some(s) => s.to_string(),
7 None => {
8 let config_session = load_config(None).ok().and_then(|(_, c)| c.session);
9 resolve_session(None, config_session.as_deref()).to_string()
10 }
11 };
12
13 let code = crate::cli::stop::execute_all(&session).await;
14 if code == 0 {
15 let _ = crate::cli::request(&session, &Request::Shutdown, false).await;
17 }
18 code
19}