Codex Handbook
utils/cli/src/sandbox_mode_cli_arg.rs 47 lines
//! Standard type to use with the `--sandbox` (`-s`) CLI option.//!//! This mirrors the variants of [`codex_protocol::protocol::SandboxPolicy`], but//! without any of the associated data so it can be expressed as a simple flag//! on the command-line. Users that need to tweak the advanced options for//! `workspace-write` can continue to do so via `-c` overrides or their//! `config.toml`.use clap::ValueEnum;use codex_protocol::config_types::SandboxMode;#[derive(Clone, Copy, Debug, ValueEnum)]#[value(rename_all = "kebab-case")]pub enum SandboxModeCliArg {    ReadOnly,    WorkspaceWrite,    DangerFullAccess,}impl From<SandboxModeCliArg> for SandboxMode {    fn from(value: SandboxModeCliArg) -> Self {        match value {            SandboxModeCliArg::ReadOnly => SandboxMode::ReadOnly,            SandboxModeCliArg::WorkspaceWrite => SandboxMode::WorkspaceWrite,            SandboxModeCliArg::DangerFullAccess => SandboxMode::DangerFullAccess,        }    }}#[cfg(test)]mod tests {    use super::*;    use pretty_assertions::assert_eq;    #[test]    fn maps_cli_args_to_protocol_modes() {        assert_eq!(SandboxMode::ReadOnly, SandboxModeCliArg::ReadOnly.into());        assert_eq!(            SandboxMode::WorkspaceWrite,            SandboxModeCliArg::WorkspaceWrite.into()        );        assert_eq!(            SandboxMode::DangerFullAccess,            SandboxModeCliArg::DangerFullAccess.into()        );    }}