#[non_exhaustive]pub struct FileCascadeEnv {
pub claude_config_dir: Option<PathBuf>,
pub xdg_config_home: Option<PathBuf>,
pub home: Option<PathBuf>,
}Expand description
Environmental inputs for the file-cascade portion of credential
resolution. macOS Keychain probes shell out to security and
don’t depend on these fields, so only the file-cascade env vars
live here. Treats empty string as unset per credentials.md
§Edge cases.
Built once at the call boundary — driver.rs and lib.rs::run_*
pull from process env via Self::from_process_env; doctor
builds via the same factory; tests construct directly. The
cascade itself never touches std::env.
Construction safety: prefer Self::new or
Self::from_process_env over struct-literal construction. Both
constructors enforce the empty-string-as-unset invariant; direct
field assignment trusts the caller. An empty PathBuf ("")
passed in via direct construction would make the cascade walk
"".join(".credentials.json") = ".credentials.json" (a
CWD-relative path), which try_file_cascade_with would then
stat against whatever directory the binary happened to launch
in. That’s a security-relevant footgun for a credential
resolver — use the constructors.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.claude_config_dir: Option<PathBuf>$CLAUDE_CONFIG_DIR.
xdg_config_home: Option<PathBuf>$XDG_CONFIG_HOME.
home: Option<PathBuf>$HOME.
Implementations§
Source§impl FileCascadeEnv
impl FileCascadeEnv
Sourcepub fn new(
claude_config_dir: Option<OsString>,
xdg_config_home: Option<OsString>,
home: Option<OsString>,
) -> Self
pub fn new( claude_config_dir: Option<OsString>, xdg_config_home: Option<OsString>, home: Option<OsString>, ) -> Self
Build a FileCascadeEnv with empty-string-as-unset
normalization. Pass None for “unset”; pass Some(path) for
“set to this value.” Empty-string OsString values collapse
to None per credentials.md §Edge cases.
Sourcepub fn from_process_env() -> Self
pub fn from_process_env() -> Self
Snapshot the three relevant env vars from the process via
var_os so non-UTF-8 values (Unix byte-string paths) survive
through to the cascade. Empty strings collapse to None.
Used by the bare resolve_credentials wrapper; explicit-env
callers go through Self::new.
Trait Implementations§
Source§impl Clone for FileCascadeEnv
impl Clone for FileCascadeEnv
Source§fn clone(&self) -> FileCascadeEnv
fn clone(&self) -> FileCascadeEnv
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more