starship 1.25.1

The minimal, blazing-fast, and infinitely customizable prompt for any shell! โ˜„๐ŸŒŒ๏ธ
Documentation
use indexmap::{IndexMap, indexmap};
use os_info::Type;
use serde::{Deserialize, Serialize};

#[derive(Clone, Deserialize, Serialize)]
#[cfg_attr(
    feature = "config-schema",
    derive(schemars::JsonSchema),
    schemars(deny_unknown_fields)
)]
#[serde(default)]
pub struct OSConfig<'a> {
    pub format: &'a str,
    pub style: &'a str,
    pub symbols: IndexMap<Type, &'a str>,
    pub disabled: bool,
}

impl<'a> OSConfig<'a> {
    pub fn get_symbol(&self, key: Type) -> Option<&'a str> {
        self.symbols.get(&key).copied()
    }
}

impl Default for OSConfig<'_> {
    fn default() -> Self {
        Self {
            format: "[$symbol]($style)",
            style: "bold white",
            symbols: indexmap! {
                Type::AIX => "โžฟ ",
                Type::Alpaquita => "๐Ÿ”” ",
                Type::AlmaLinux => "๐Ÿ’  ",
                Type::Alpine => "๐Ÿ”๏ธ ",
                Type::ALTLinux => "โ’ถ ",
                Type::Amazon => "๐Ÿ™‚ ",
                Type::Android => "๐Ÿค– ",
                Type::AOSC => "๐Ÿฑ ",
                Type::Arch => "๐ŸŽ—๏ธ ",
                Type::Artix => "๐ŸŽ—๏ธ ",
                Type::Bluefin => "๐ŸŸ ",
                Type::CachyOS => "๐ŸŽ—๏ธ ",
                Type::CentOS => "๐Ÿ’  ",
                Type::Debian => "๐ŸŒ€ ",
                Type::Elementary => "๐Ÿ ",
                Type::DragonFly => "๐Ÿ‰ ",
                Type::Emscripten => "๐Ÿ”— ",
                Type::EndeavourOS => "๐Ÿš€ ",
                Type::Fedora => "๐ŸŽฉ ",
                Type::FreeBSD => "๐Ÿ˜ˆ ",
                Type::Garuda => "๐Ÿฆ… ",
                Type::Gentoo => "๐Ÿ—œ๏ธ ",
                Type::HardenedBSD => "๐Ÿ›ก๏ธ ",
                Type::Illumos => "๐Ÿฆ ",
                Type::Ios => "๐Ÿ“ฑ ",
                Type::InstantOS => "โฒ๏ธ ",
                Type::Kali => "๐Ÿ‰ ",
                Type::Linux => "๐Ÿง ",
                Type::Mabox => "๐Ÿ“ฆ ",
                Type::Macos => "๐ŸŽ ",
                Type::Manjaro => "๐Ÿฅญ ",
                Type::Mariner => "๐ŸŒŠ ",
                Type::MidnightBSD => "๐ŸŒ˜ ",
                Type::Mint => "๐ŸŒฟ ",
                Type::NetBSD => "๐Ÿšฉ ",
                Type::NixOS => "โ„๏ธ ",
                Type::Nobara =>  "๐ŸŽฉ ",
                Type::OpenBSD => "๐Ÿก ",
                Type::OpenCloudOS => "โ˜๏ธ ",
                Type::openEuler => "๐Ÿฆ‰ ",
                Type::openSUSE => "๐ŸฆŽ ",
                Type::OracleLinux => "๐Ÿฆด ",
                Type::PikaOS => "๐Ÿค ",
                Type::Pop => "๐Ÿญ ",
                Type::Raspbian => "๐Ÿ“ ",
                Type::Redhat => "๐ŸŽฉ ",
                Type::RedHatEnterprise => "๐ŸŽฉ ",
                Type::RockyLinux => "๐Ÿ’  ",
                Type::Redox => "๐Ÿงช ",
                Type::Solus => "โ›ต ",
                Type::SUSE => "๐ŸฆŽ ",
                Type::Ubuntu => "๐ŸŽฏ ",
                Type::Ultramarine => "๐Ÿ”ท ",
                Type::Unknown => "โ“ ",
                Type::Uos => "๐Ÿฒ ",
                Type::Void => "๎Š™ ",
                Type::Windows => "๐ŸชŸ ",
                Type::Zorin => "๐Ÿ”น ",
                // Future symbols.
                //coreos =>     "๏Œ… ",
                //devuan =>     "๏Œ‡ ",
                //mageia =>     "๏Œ ",
                //mandriva =>   "๏Œ‘ ",
                //sabayon =>    "๏Œ— ",
                //slackware =>  "๏Œ˜ ",
                //solaris =>    "๏†… ",
            },
            disabled: true,
        }
    }
}