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
use crate::config::{ModuleConfig, RootModuleConfig, SegmentConfig}; 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, } 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, } } } 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, } } }