add error struct for ServerPath creation (new)

new type `ServerPathError`
add thiserror as dependency of `remote_server`
This commit is contained in:
Gwen Lg 2025-07-01 23:23:08 +02:00
parent c8f227f0fe
commit 04f58fcb93
3 changed files with 31 additions and 3 deletions

1
Cargo.lock generated
View file

@ -13560,6 +13560,7 @@ dependencies = [
"smol", "smol",
"sysinfo", "sysinfo",
"telemetry_events", "telemetry_events",
"thiserror 2.0.12",
"toml 0.8.20", "toml 0.8.20",
"unindent", "unindent",
"util", "util",

View file

@ -65,6 +65,7 @@ telemetry_events.workspace = true
util.workspace = true util.workspace = true
watch.workspace = true watch.workspace = true
worktree.workspace = true worktree.workspace = true
thiserror.workspace = true
[target.'cfg(not(windows))'.dependencies] [target.'cfg(not(windows))'.dependencies]
crashes.workspace = true crashes.workspace = true

View file

@ -46,6 +46,7 @@ use std::{
sync::Arc, sync::Arc,
}; };
use telemetry_events::LocationData; use telemetry_events::LocationData;
use thiserror::Error;
use util::ResultExt; use util::ResultExt;
pub static VERSION: LazyLock<&str> = LazyLock::new(|| match *RELEASE_CHANNEL { pub static VERSION: LazyLock<&str> = LazyLock::new(|| match *RELEASE_CHANNEL {
@ -526,6 +527,22 @@ pub fn execute_run(
Ok(()) Ok(())
} }
#[derive(Debug, Error)]
pub(crate) enum ServerPathError {
#[error("Failed to create server_dir `{path}`")]
CreateServerDir {
#[source]
source: std::io::Error,
path: PathBuf,
},
#[error("Failed to create logs_dir `{path}`")]
CreateLogsDir {
#[source]
source: std::io::Error,
path: PathBuf,
},
}
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
struct ServerPaths { struct ServerPaths {
log_file: PathBuf, log_file: PathBuf,
@ -536,10 +553,19 @@ struct ServerPaths {
} }
impl ServerPaths { impl ServerPaths {
fn new(identifier: &str) -> Result<Self> { fn new(identifier: &str) -> Result<Self, ServerPathError> {
let server_dir = paths::remote_server_state_dir().join(identifier); let server_dir = paths::remote_server_state_dir().join(identifier);
std::fs::create_dir_all(&server_dir)?; std::fs::create_dir_all(&server_dir).map_err(|source| {
std::fs::create_dir_all(&logs_dir())?; ServerPathError::CreateServerDir {
source,
path: server_dir.clone(),
}
})?;
let log_dir = logs_dir();
std::fs::create_dir_all(log_dir).map_err(|source| ServerPathError::CreateLogsDir {
source: source,
path: log_dir.clone(),
})?;
let pid_file = server_dir.join("server.pid"); let pid_file = server_dir.join("server.pid");
let stdin_socket = server_dir.join("stdin.sock"); let stdin_socket = server_dir.join("stdin.sock");