afetch 0.0.7

A CLI system information tool written in Rust.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, PartialEq, Serialize, Deserialize, Clone, Default)]
pub struct LogoConfig {
    #[serde(default = "default_status")]
    pub status: String,
    #[serde(default = "default_char_type")]
    pub char_type: String,
    #[serde(default = "default_picture_path")]
    pub picture_path: String,
}

fn default_status() -> String {
    "enable".to_owned()
}

fn default_char_type() -> String {
    "braille".to_owned()
}

fn default_picture_path() -> String {
    "none".to_owned()
}

#[derive(Debug, PartialEq, Serialize, Deserialize, Clone, Default)]
pub struct Config {
    #[serde(default = "default_language")]
    pub language: String,
    #[serde(default)]
    pub logo: LogoConfig,
    #[serde(default = "default_text_color")]
    pub text_color: Vec<u8>,
    #[serde(default = "default_text_color_header")]
    pub text_color_header: Option<Vec<u8>>,
    #[serde(default = "default_disabled_entries")]
    pub disabled_entries: Vec<String>,
}

fn default_language() -> String {
    "auto".to_owned()
}

fn default_text_color() -> Vec<u8> {
    vec![255, 255, 255]
}

fn default_text_color_header() -> Option<Vec<u8>> {
    None
}

fn default_disabled_entries() -> Vec<String> {
    vec![
        "battery".to_owned(),
        "public-ip".to_owned(),
        "cpu-usage".to_owned(),
        "network".to_owned(),
        "wm".to_owned(),
    ]
}