aboutsummaryrefslogtreecommitdiff
path: root/src/cli/status.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/status.rs')
-rw-r--r--src/cli/status.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/cli/status.rs b/src/cli/status.rs
index 9b8a1648..0062367a 100644
--- a/src/cli/status.rs
+++ b/src/cli/status.rs
@@ -74,6 +74,7 @@ enum ServerRuntimeStatus {
Running {
version: Option<String>,
protocol: Option<u32>,
+ capabilities: Option<crate::api::schema::ServerCapabilities>,
},
NotRunning,
}
@@ -127,7 +128,9 @@ fn print_client_status(json: bool) -> std::io::Result<()> {
fn print_server_status_body(server: &ServerRuntimeStatus, indent: &str) {
match server {
- ServerRuntimeStatus::Running { version, protocol } => {
+ ServerRuntimeStatus::Running {
+ version, protocol, ..
+ } => {
println!("{indent}status: running");
println!("{indent}version: {}", option_label(version.as_deref()));
println!("{indent}protocol: {}", protocol_label(*protocol));
@@ -146,6 +149,7 @@ fn read_server_runtime_status() -> std::io::Result<ServerRuntimeStatus> {
Ok(status) => Ok(ServerRuntimeStatus::Running {
version: status.version,
protocol: status.protocol,
+ capabilities: status.capabilities,
}),
Err(ApiClientError::Io(err)) if server_not_running_error(&err) => {
Ok(ServerRuntimeStatus::NotRunning)
@@ -218,6 +222,7 @@ struct ServerStatusJson {
running: bool,
version: Option<String>,
protocol: Option<u32>,
+ capabilities: Option<ServerCapabilitiesJson>,
compatible: Option<bool>,
socket: String,
session: Option<String>,
@@ -225,6 +230,11 @@ struct ServerStatusJson {
}
#[derive(Serialize)]
+struct ServerCapabilitiesJson {
+ live_handoff: bool,
+}
+
+#[derive(Serialize)]
struct UpdateStatusJson {
restart_needed: Option<bool>,
}
@@ -240,11 +250,20 @@ fn client_status_json() -> ClientStatusJson {
fn server_status_json(server: &ServerRuntimeStatus) -> ServerStatusJson {
match server {
- ServerRuntimeStatus::Running { version, protocol } => ServerStatusJson {
+ ServerRuntimeStatus::Running {
+ version,
+ protocol,
+ capabilities,
+ } => ServerStatusJson {
status: "running",
running: true,
version: version.clone(),
protocol: *protocol,
+ capabilities: capabilities
+ .as_ref()
+ .map(|capabilities| ServerCapabilitiesJson {
+ live_handoff: capabilities.live_handoff,
+ }),
compatible: protocol.map(|value| value == crate::protocol::PROTOCOL_VERSION),
socket: api::socket_path().display().to_string(),
session: crate::session::active_name(),
@@ -255,6 +274,7 @@ fn server_status_json(server: &ServerRuntimeStatus) -> ServerStatusJson {
running: false,
version: None,
protocol: None,
+ capabilities: None,
compatible: None,
socket: api::socket_path().display().to_string(),
session: crate::session::active_name(),