1pub use ipc_channel::ipc;
2use serde::{Deserialize, Serialize};
3
4#[derive(Serialize, Deserialize)]
5pub struct IpcHandshake {
6 pub requests: ipc::IpcSender<CliRequest>,
7 pub responses: ipc::IpcReceiver<CliResponse>,
8}
9
10#[derive(Debug, Serialize, Deserialize)]
11pub enum CliRequest {
12 Open {
13 paths: Vec<String>,
14 urls: Vec<String>,
15 wait: bool,
16 open_new_workspace: Option<bool>,
17 dev_server_token: Option<String>,
18 },
19}
20
21#[derive(Debug, Serialize, Deserialize)]
22pub enum CliResponse {
23 Ping,
24 Stdout { message: String },
25 Stderr { message: String },
26 Exit { status: i32 },
27}
28
29/// When Zed started not as an *.app but as a binary (e.g. local development),
30/// there's a possibility to tell it to behave "regularly".
31pub const FORCE_CLI_MODE_ENV_VAR_NAME: &str = "ZED_FORCE_CLI_MODE";