Codex Handbook
exec-server/src/runtime_paths.rs 43 lines
use std::path::PathBuf;use codex_utils_absolute_path::AbsolutePathBuf;/// Runtime paths needed by exec-server child processes.#[derive(Clone, Debug, Eq, PartialEq)]pub struct ExecServerRuntimePaths {    /// Stable path to the Codex executable used to launch hidden helper modes.    pub codex_self_exe: AbsolutePathBuf,    /// Path to the Linux sandbox helper alias used when the platform sandbox    /// needs to re-enter Codex by argv0.    pub codex_linux_sandbox_exe: Option<AbsolutePathBuf>,}impl ExecServerRuntimePaths {    pub fn from_optional_paths(        codex_self_exe: Option<PathBuf>,        codex_linux_sandbox_exe: Option<PathBuf>,    ) -> std::io::Result<Self> {        let codex_self_exe = codex_self_exe.ok_or_else(|| {            std::io::Error::new(                std::io::ErrorKind::InvalidInput,                "Codex executable path is not configured",            )        })?;        Self::new(codex_self_exe, codex_linux_sandbox_exe)    }    pub fn new(        codex_self_exe: PathBuf,        codex_linux_sandbox_exe: Option<PathBuf>,    ) -> std::io::Result<Self> {        Ok(Self {            codex_self_exe: absolute_path(codex_self_exe)?,            codex_linux_sandbox_exe: codex_linux_sandbox_exe.map(absolute_path).transpose()?,        })    }}fn absolute_path(path: PathBuf) -> std::io::Result<AbsolutePathBuf> {    AbsolutePathBuf::from_absolute_path(path.as_path())        .map_err(|err| std::io::Error::new(std::io::ErrorKind::InvalidInput, err))}