1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2024-11-09 23:00:55 +00:00
starship/src/configs/aws.rs
2019-12-20 12:30:47 -05:00

49 lines
1.3 KiB
Rust

use crate::config::{ModuleConfig, RootModuleConfig, SegmentConfig};
use std::collections::HashMap;
use ansi_term::{Color, Style};
use starship_module_config_derive::ModuleConfig;
#[derive(Clone, PartialEq)]
pub enum AwsItems {
All,
Region,
Profile,
}
#[derive(Clone, ModuleConfig)]
pub struct AwsConfig<'a> {
pub symbol: SegmentConfig<'a>,
pub profile: SegmentConfig<'a>,
pub region: SegmentConfig<'a>,
pub style: Style,
pub disabled: bool,
pub displayed_items: AwsItems,
pub region_aliases: HashMap<String, &'a str>,
}
impl<'a> RootModuleConfig<'a> for AwsConfig<'a> {
fn new() -> Self {
AwsConfig {
symbol: SegmentConfig::new("☁️ "),
profile: SegmentConfig::default(),
region: SegmentConfig::default(),
style: Color::Yellow.bold(),
disabled: false,
displayed_items: AwsItems::All,
region_aliases: HashMap::new(),
}
}
}
impl<'a> ModuleConfig<'a> for AwsItems {
fn from_config(config: &toml::Value) -> Option<Self> {
match config.as_str()? {
"all" => Some(AwsItems::All),
"region" => Some(AwsItems::Region),
"profile" => Some(AwsItems::Profile),
_ => None,
}
}
}