34 lines
1.1 KiB
Rust
34 lines
1.1 KiB
Rust
|
|
use dirs::home_dir;
|
||
|
|
use std::path::PathBuf;
|
||
|
|
|
||
|
|
/// This was copied from codex-core but codex-core depends on this crate.
|
||
|
|
/// TODO: move this to a shared crate lower in the dependency tree.
|
||
|
|
///
|
||
|
|
///
|
||
|
|
/// Returns the path to the Codex configuration directory, which can be
|
||
|
|
/// specified by the `CODEX_HOME` environment variable. If not set, defaults to
|
||
|
|
/// `~/.codex`.
|
||
|
|
///
|
||
|
|
/// - If `CODEX_HOME` is set, the value will be canonicalized and this
|
||
|
|
/// function will Err if the path does not exist.
|
||
|
|
/// - If `CODEX_HOME` is not set, this function does not verify that the
|
||
|
|
/// directory exists.
|
||
|
|
pub(crate) fn find_codex_home() -> std::io::Result<PathBuf> {
|
||
|
|
// Honor the `CODEX_HOME` environment variable when it is set to allow users
|
||
|
|
// (and tests) to override the default location.
|
||
|
|
if let Ok(val) = std::env::var("CODEX_HOME")
|
||
|
|
&& !val.is_empty()
|
||
|
|
{
|
||
|
|
return PathBuf::from(val).canonicalize();
|
||
|
|
}
|
||
|
|
|
||
|
|
let mut p = home_dir().ok_or_else(|| {
|
||
|
|
std::io::Error::new(
|
||
|
|
std::io::ErrorKind::NotFound,
|
||
|
|
"Could not find home directory",
|
||
|
|
)
|
||
|
|
})?;
|
||
|
|
p.push(".codex");
|
||
|
|
Ok(p)
|
||
|
|
}
|