summaryrefslogtreecommitdiffstats
path: root/src/configs/os.rs
blob: b42d8f96f9c83871eb4ef578aa476fc2584c10fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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<'a> Default for OSConfig<'a> {
    fn default() -> Self {
        OSConfig {
            format: "[$symbol]($style)",
            style: "bold white",
            symbols: indexmap! {
                Type::Alpine => "๐Ÿ”๏ธ ",
                Type::Amazon => "๐Ÿ™‚ ",
                Type::Android => "๐Ÿค– ",
                Type::Arch => "๐ŸŽ—๏ธ ",
                Type::CentOS => "๐Ÿ’  ",
                Type::Debian => "๐ŸŒ€ ",
                Type::DragonFly => "๐Ÿ‰ ",
                Type::Emscripten => "๐Ÿ”— ",
                Type::EndeavourOS => "๐Ÿš€ ",
                Type::Fedora => "๐ŸŽฉ ",
                Type::FreeBSD => "๐Ÿ˜ˆ ",
                Type::Garuda => "๐Ÿฆ… ",
                Type::Gentoo => "๐Ÿ—œ๏ธ ",
                Type::HardenedBSD => "๐Ÿ›ก๏ธ ",
                Type::Illumos => "๐Ÿฆ ",
                Type::Linux => "๐Ÿง ",
                Type::Macos => "๐ŸŽ ",
                Type::Manjaro => "๐Ÿฅญ ",
                Type::Mariner => "๐ŸŒŠ ",
                Type::MidnightBSD => "๐ŸŒ˜ ",
                Type::Mint => "๐ŸŒฟ ",
                Type::NetBSD => "๐Ÿšฉ ",
                Type::NixOS => "โ„๏ธ ",
                Type::OpenBSD => "๐Ÿก ",
                Type::openSUSE => "๐ŸฆŽ ",
                Type::OracleLinux => "๐Ÿฆด ",
                Type::Pop => "๐Ÿญ ",
                Type::Raspbian => "๐Ÿ“ ",
                Type::Redhat => "๐ŸŽฉ ",
                Type::RedHatEnterprise => "๐ŸŽฉ ",
                Type::Redox => "๐Ÿงช ",
                Type::Solus => "โ›ต ",
                Type::SUSE => "๐ŸฆŽ ",
                Type::Ubuntu => "๐ŸŽฏ ",
                Type::Unknown => "โ“ ",
                Type::Windows => "๐ŸชŸ ",
                // Future symbols.
                //aosc =>       "๏Œ ",
                //artix =>      "๏„ค ",
                //coreos =>     "๏Œ… ",
                //devuan =>     "๏Œ‡ ",
                //elementary => "๏Œ‰ ",
                //mageia =>     "๏Œ ",
                //mandriva =>   "๏Œ‘ ",
                //sabayon =>    "๏Œ— ",
                //slackware =>  "๏Œ˜ ",
                //void =>       "๎Š™ ",
                //solaris =>    "๏†… ",
            },
            disabled: true,
        }
    }
}