basic_string_stream/
main.rs

1use std::env;
2use std::process;
3use std::io::{self, BufRead};
4use serde_json::Value;
5use aleph_ollama::translate_code_from_string_stream;
6
7fn main() {
8    let args: Vec<String> = env::args().collect();
9    if args.len() != 3 {
10        eprintln!("Usage: basic_string_stream <code> <target_language>");
11        process::exit(1);
12    }
13
14    let code = &args[1];
15    let target_language = &args[2];
16
17    println!("Translating code '{}' to '{}':", code, target_language);
18
19    match translate_code_from_string_stream(code, target_language) {
20        Ok(response) => {
21            let reader = io::BufReader::new(response);
22            for line in reader.lines() {
23                if let Ok(raw_line) = line {
24                    if let Ok(json) = serde_json::from_str::<Value>(&raw_line) {
25                        if let Some(fragment) = json.get("response").and_then(|v| v.as_str()) {
26                            print!("{}", fragment);  // Print without newline
27                        }
28                    }
29                }
30            }
31            println!();  // Add a final newline
32        }
33        Err(error) => eprintln!("Error: {}", error),
34    }
35}
36