advanced_usage/
advanced_usage.rs

1/// Advanced example with custom processing
2use composerize_np::{composerize, get_service_name};
3
4fn main() {
5    // Example: Process command and extract service name
6    let docker_command = "docker run -d -p 8080:80 --name my-app nginx:alpine";
7    
8    // Extract service name from image
9    let image = "nginx:alpine";
10    let service_name = get_service_name(image);
11    println!("Service name extracted: {}", service_name);
12    
13    println!("\n{}\n", "=".repeat(50));
14    
15    // Convert with different formats
16    let formats = vec![
17        ("latest", "Latest (no version)"),
18        ("v3x", "Docker Compose v3.x"),
19        ("v2x", "Docker Compose v2.x"),
20    ];
21    
22    for (format, description) in formats {
23        println!("=== {} ===", description);
24        
25        match composerize(docker_command, "", format, 2) {
26            Ok(yaml) => {
27                // Show first few lines
28                let lines: Vec<&str> = yaml.lines().take(5).collect();
29                println!("{}", lines.join("\n"));
30                println!("...\n");
31            }
32            Err(e) => eprintln!("Error: {}", e),
33        }
34    }
35    
36    println!("{}\n", "=".repeat(50));
37    
38    // Example: Different indentation levels
39    println!("=== Different Indentation ===");
40    
41    for indent in [2, 4] {
42        println!("\nIndent: {} spaces", indent);
43        match composerize("docker run -p 80:80 nginx", "", "latest", indent) {
44            Ok(yaml) => {
45                let lines: Vec<&str> = yaml.lines().take(4).collect();
46                println!("{}", lines.join("\n"));
47            }
48            Err(e) => eprintln!("Error: {}", e),
49        }
50    }
51}