omni_forge/image_builder/image_gen/
mod.rs

1pub mod scanner;
2use std::collections::HashMap;
3
4use crate::image_builder::{DevContainer, FeatureData};
5use std::fs::File;
6use std::io::Write;
7pub fn gen_devcontainer(path: &str) {
8    println!("Generating devcontainer.json...");
9
10    let features = scanner::scan(path);
11
12    let featuredata = FeatureData {
13        version: Some("latest".to_string()),
14    };
15
16    let devcontainer = DevContainer {
17        name: "My Dev Container".to_string(),
18        image: "ubuntu:latest".to_string(),
19        features: {
20            let mut map = HashMap::new();
21            for url in features.unwrap() {
22                map.insert(url.clone(), Some(featuredata.clone()));
23                println!("Feature URL: {}", url);
24            }
25            map
26        },
27    };
28
29    let devcontainer_json = serde_json::to_string_pretty(&devcontainer).unwrap();
30    let final_path = format!("{}/.devcontainer/devcontainer.json", path);
31    std::fs::create_dir_all(format!("{}/.devcontainer", path)).unwrap();
32    println!("Final path: {}", final_path);
33    let mut file = File::create(final_path).unwrap();
34    file.write_all(devcontainer_json.as_bytes()).unwrap();
35
36    println!("devcontainer.json has been generated.");
37}