Skip to main content

dotenv_space/formats/
docker.rs

1// ============================================================================
2// formats/docker.rs
3// ============================================================================
4
5use crate::core::converter::{ConvertOptions, Converter};
6use anyhow::Result;
7use std::collections::HashMap;
8
9pub struct DockerComposeConverter;
10
11impl Converter for DockerComposeConverter {
12    fn convert(&self, vars: &HashMap<String, String>, options: &ConvertOptions) -> Result<String> {
13        let filtered = options.filter_vars(vars);
14
15        let mut output = String::new();
16        output.push_str("environment:\n");
17
18        for (k, v) in filtered.iter() {
19            let key = options.transform_key(k);
20            let value = options.transform_value(v);
21            output.push_str(&format!("  - {}={}\n", key, value));
22        }
23
24        Ok(output)
25    }
26
27    fn name(&self) -> &str {
28        "docker-compose"
29    }
30
31    fn description(&self) -> &str {
32        "Docker Compose YAML environment section"
33    }
34}