3 use crate::{arts::*, get_rand};
8 /// Should include (preferably) all package managers used by distros.
10 pub enum PackageManager {
18 // Return the enum variant
19 pub static DISTROS: phf::Map<&'static str, &'static str> = phf_map! {
21 "manjaro" => MANJARO_LOGO ,
22 "debian" => DEBIAN_LOGO ,
23 "fedora" => FEDORA_LOGO ,
26 "alpine" => ALPINE_LOGO ,
27 "alter" => ALTER_LOGO ,
28 "amazon" => AMAZON_LOGO ,
29 "anarchy" => ANARCHY_LOGO ,
30 "android" => ANDROID_LOGO ,
31 "antergos" => ANTERGOS_LOGO ,
32 "antix" => ANTIX_LOGO ,
33 "aoscosretro" => AOSCOSRETRO_LOGO ,
34 "aoscos" => AOSCOS_LOGO ,
35 "arcolinux" => ARCOLINUX_LOGO ,
36 "archbox" => ARCHBOX_LOGO ,
37 "archlabs" => ARCHLABS_LOGO ,
38 "archstrike" => ARCHSTRIKE_LOGO ,
39 "xferience" => XFERIENCE_LOGO ,
40 "artix" => ARTIX_LOGO ,
42 "bedrock" => BEDROCK_LOGO ,
43 "bitrig" => BITRIG_LOGO ,
44 "blackarch" => BLACKARCH_LOGO ,
45 "blankon" => BLANKON_LOGO ,
46 "bluelight" => BLUELIGHT_LOGO ,
47 "bonsai" => BONSAI_LOGO ,
49 "bunsenlabs" => BUNSENLABS_LOGO ,
50 "calculate" => CALCULATE_LOGO ,
51 "carbs" => CARBS_LOGO ,
52 "centos" => CENTOS_LOGO ,
53 "chakra" => CHAKRA_LOGO ,
54 "chaletos" => CHALETOS_LOGO ,
55 "chapeau" => CHAPEAU_LOGO ,
56 "chrom" => CHROM_LOGO ,
57 "clearos" => CLEAROS_LOGO ,
58 "clearlinux" => CLEARLINUX_LOGO ,
59 "clover" => CLOVER_LOGO ,
60 "condres" => CONDRES_LOGO ,
61 "openwrt" => OPENWRT ,
64 pub fn choose_distro(random: bool) -> &'static str {
66 let keys: Vec<&str> = DISTROS.keys().map(|x: &&str| *x).collect();
67 let idx = get_rand(keys.len() as i32) as usize;
74 let id = get_id().unwrap();
82 pub fn get_id() -> Option<String> {
83 let text = fs::read_to_string("/etc/os-release").ok()?;
84 let id: usize = text.find("\nID=")?;
85 let id: String = text[id + 4..].chars().take_while(|x| *x != '\n').collect();