From 866aaf740e10fcfce169aaf81380ea0257fbe272 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Thu, 21 May 2026 20:19:54 +0300 Subject: refactor: separate server client boundaries --- src/cli/server.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/cli/server.rs (limited to 'src/cli/server.rs') diff --git a/src/cli/server.rs b/src/cli/server.rs new file mode 100644 index 00000000..311cc31a --- /dev/null +++ b/src/cli/server.rs @@ -0,0 +1,48 @@ +use crate::api::schema::{EmptyParams, Method, Request}; + +pub(super) fn run_server_command(args: &[String]) -> std::io::Result> { + let Some(subcommand) = args.first().map(|arg| arg.as_str()) else { + return Ok(None); + }; + + match subcommand { + "stop" => server_stop(&args[1..]).map(Some), + "reload-config" => server_reload_config(&args[1..]).map(Some), + "help" | "--help" | "-h" => { + print_server_help(); + Ok(Some(0)) + } + _ => { + print_server_help(); + Ok(Some(2)) + } + } +} + +fn server_stop(args: &[String]) -> std::io::Result { + if !args.is_empty() { + eprintln!("usage: herdr server stop"); + return Ok(2); + } + + super::send_ok_request(Method::ServerStop(EmptyParams::default())) +} + +fn server_reload_config(args: &[String]) -> std::io::Result { + if !args.is_empty() { + eprintln!("usage: herdr server reload-config"); + return Ok(2); + } + + super::print_response(&super::send_request(&Request { + id: "cli:server:reload-config".into(), + method: Method::ServerReloadConfig(EmptyParams::default()), + })?) +} + +fn print_server_help() { + eprintln!("herdr server commands:"); + eprintln!(" herdr server run as headless server"); + eprintln!(" herdr server stop stop the running server via the API socket"); + eprintln!(" herdr server reload-config reload config.toml in the running server"); +} -- cgit v1.2.3