1use serde::{Deserialize, Serialize};
2use std::env;
3use anyhow::Result;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct AvxConfig {
7 pub stack: String,
8 pub layer: String,
9 pub env: String,
10 pub cluster: String,
11 pub mesh: String,
12}
13
14impl AvxConfig {
15 pub fn load() -> Result<Self> {
16 Ok(Self {
17 stack: env::var("AVX__STACK").unwrap_or_else(|_| "default".into()),
18 layer: env::var("AVX__LAYER").unwrap_or_else(|_| "core".into()),
19 env: env::var("AVX__ENV").unwrap_or_else(|_| "dev".into()),
20 cluster: env::var("AVX__CLUSTER").unwrap_or_else(|_| "local".into()),
21 mesh: env::var("AVX__MESH").unwrap_or_else(|_| "default".into()),
22 })
23 }
24
25 pub fn with_defaults() -> Self {
26 Self {
27 stack: "default".into(),
28 layer: "core".into(),
29 env: "dev".into(),
30 cluster: "local".into(),
31 mesh: "default".into(),
32 }
33 }
34}