systemprompt_config/services/
types.rs1use 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}