muffintui 0.1.14

A terminal workspace that combines a file tree, editor, shell, and embedded Codex pane
Documentation
use std::io;

use crate::codex::SessionMode;

pub fn parse_session_mode(args: impl Iterator<Item = String>) -> io::Result<SessionMode> {
    let mut mode = SessionMode::Shell;

    for arg in args {
        match arg.as_str() {
            "--codex" => {
                if mode != SessionMode::Shell {
                    return Err(io::Error::new(
                        io::ErrorKind::InvalidInput,
                        "choose only one of --codex or --claude",
                    ));
                }
                mode = SessionMode::Codex;
            }
            "--claude" => {
                if mode != SessionMode::Shell {
                    return Err(io::Error::new(
                        io::ErrorKind::InvalidInput,
                        "choose only one of --codex or --claude",
                    ));
                }
                mode = SessionMode::Claude;
            }
            _ => {
                return Err(io::Error::new(
                    io::ErrorKind::InvalidInput,
                    format!("unknown argument: {arg}"),
                ));
            }
        }
    }

    Ok(mode)
}