add error struct for ServerPath creation (new)
new type `ServerPathError` add thiserror as dependency of `remote_server`
This commit is contained in:
parent
c8f227f0fe
commit
04f58fcb93
3 changed files with 31 additions and 3 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue