Codex Handbook
linux-sandbox/src/bazel_bwrap.rs 68 lines
#[cfg(debug_assertions)]use std::fs::File;#[cfg(debug_assertions)]use std::io::BufRead;use std::path::PathBuf;#[cfg(debug_assertions)]const BAZEL_BWRAP_ENV_VAR: &str = "CARGO_BIN_EXE_bwrap";#[cfg(debug_assertions)]pub(crate) fn candidate() -> Option<PathBuf> {    if option_env!("BAZEL_PACKAGE").is_none() || !runfiles_env_present() {        return None;    }    let raw = PathBuf::from(std::env::var_os(BAZEL_BWRAP_ENV_VAR)?);    if raw.is_absolute() {        return Some(raw);    }    resolve_runfile(raw.to_str()?)}#[cfg(not(debug_assertions))]pub(crate) fn candidate() -> Option<PathBuf> {    None}#[cfg(debug_assertions)]fn runfiles_env_present() -> bool {    std::env::var_os("RUNFILES_DIR").is_some()        || std::env::var_os("TEST_SRCDIR").is_some()        || std::env::var_os("RUNFILES_MANIFEST_FILE").is_some()}#[cfg(debug_assertions)]fn resolve_runfile(logical_path: &str) -> Option<PathBuf> {    let mut logical_paths = vec![logical_path.to_string()];    if let Ok(workspace) = std::env::var("TEST_WORKSPACE")        && !workspace.is_empty()    {        logical_paths.push(format!("{workspace}/{logical_path}"));    }    for root_env in ["RUNFILES_DIR", "TEST_SRCDIR"] {        let Some(root) = std::env::var_os(root_env) else {            continue;        };        let root = PathBuf::from(root);        for logical_path in &logical_paths {            let candidate = root.join(logical_path);            if candidate.exists() {                return Some(candidate);            }        }    }    let manifest = PathBuf::from(std::env::var_os("RUNFILES_MANIFEST_FILE")?);    let file = File::open(manifest).ok()?;    for line in std::io::BufReader::new(file).lines().map_while(Result::ok) {        let Some((key, value)) = line.split_once(' ') else {            continue;        };        if logical_paths.iter().any(|logical_path| logical_path == key) {            return Some(PathBuf::from(value));        }    }    None}