Skip to main content

systemprompt_config/services/
types.rs

1use anyhow::{anyhow, Result};
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6pub enum DeployEnvironment {
7    Local,
8    DockerDev,
9    Production,
10}
11
12impl DeployEnvironment {
13    pub const fn as_str(&self) -> &'static str {
14        match self {
15            Self::Local => "local",
16            Self::DockerDev => "docker-dev",
17            Self::Production => "production",
18        }
19    }
20
21    pub fn parse(s: &str) -> Result<Self> {
22        match s {
23            "local" => Ok(Self::Local),
24            "docker" | "docker-dev" => Ok(Self::DockerDev),
25            "production" | "prod" => Ok(Self::Production),
26            _ => Err(anyhow!("Invalid environment: {}", s)),
27        }
28    }
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct DeploymentConfig {
33    #[serde(flatten)]
34    pub vars: HashMap<String, serde_yaml::Value>,
35}
36
37#[derive(Debug, Clone)]
38pub struct EnvironmentConfig {
39    pub environment: DeployEnvironment,
40    pub variables: HashMap<String, String>,
41}