omni_forge/image_builder/image_gen/
mod.rs1pub 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}