///|
/// The name of the model used when `--model` is not given.
pub fn default_model_name() -> String {
  "m3-max"
}

///|
/// The device profile used when `--model` is not given.
pub fn default_model() -> DeviceModel {
  m3_max_model()
}

///|
/// All available device profiles, in the order they are listed in help.
pub fn all_models() -> Array[DeviceModel] {
  [
    m3_max_model(),
    m3_ultra_model(),
    m2_pro_model(),
    m1_air_model(),
    thinkpad_x1_model(),
    thinkpad_t14s_model(),
    fedora_desktop_model(),
    debian_desktop_model(),
    ryzen_desktop_model(),
    omarchy_model(),
    chromebook_model(),
    alpine_server_model(),
    gentoo_server_model(),
    xiaomi_15_pro_model(),
    rog_model(),
    windows_desktop_model(),
  ]
}

///|
/// Look up a device profile by its `--model` name.
pub fn model_by_name(name : String) -> DeviceModel? {
  all_models().iter().find_first(m => m.name == name)
}

///|
fn model_about() -> String {
  let names = all_models().map(m => m.name).join(", ")
  "device model: \{names} (default: \{default_model_name()})"
}