Skip to main content

resolve_mode

Function resolve_mode 

Source
pub fn resolve_mode(
    explicit: Option<&str>,
    ci: bool,
    profile: Option<(&str, Option<&str>)>,
) -> ModeResolution
Expand description

Decide the mode: the variable, else a CI runner, else the active profile’s declared mode, else standard. An unreadable word is skipped with its source, never guessed.

use majordomus_cli::reasoning::availability::{resolve_mode, ReasoningMode};

assert_eq!(resolve_mode(Some("offline"), true, None).mode, ReasoningMode::Offline);
assert_eq!(resolve_mode(None, true, Some(("implementation", Some("strict")))).mode, ReasoningMode::Ci);
let r = resolve_mode(None, false, Some(("deep-work", Some("strict"))));
assert_eq!((r.mode, r.source.as_str()), (ReasoningMode::Strict, "profile deep-work"));
assert_eq!(resolve_mode(Some("loud"), false, None).source, "default");