use std::fs;
use std::path::PathBuf;
use std::process::Command;
fn main() {
let workspace_root = PathBuf::from(env!("CARGO_MANIFEST_DIR")).to_path_buf();
let kr2r_binary = workspace_root.join("target/release/kun_peng");
let data_dir = workspace_root.join("data");
let test_dir = workspace_root.join("test_database");
fs::create_dir_all(&data_dir).expect("Failed to create download directory");
fs::create_dir_all(&test_dir).expect("Failed to create database directory");
let build_args = vec![
"build".to_string(),
"--download-dir".to_string(),
data_dir.to_string_lossy().to_string(),
"--db".to_string(),
test_dir.to_string_lossy().to_string(),
];
let build_command_str = format!("{} {}", kr2r_binary.to_string_lossy(), build_args.join(" "));
println!("Executing command: {}", build_command_str);
let build_output = Command::new(&kr2r_binary)
.args(&build_args)
.output()
.expect("Failed to run kun_peng build command");
println!(
"kun_peng build output: {}",
String::from_utf8_lossy(&build_output.stdout)
);
if !build_output.stderr.is_empty() {
println!(
"kun_peng build error: {}",
String::from_utf8_lossy(&build_output.stderr)
);
}
let covid_fa = data_dir.join("COVID_19.fa");
if !covid_fa.exists() {
println!(
"kun_peng error: fasta file {} does not exists",
covid_fa.to_string_lossy().to_string()
);
}
let direct_args = vec![
"direct".to_string(),
"--db".to_string(),
test_dir.to_string_lossy().to_string(),
covid_fa.to_string_lossy().to_string(),
];
let direct_command_str = format!(
"{} {}",
kr2r_binary.to_string_lossy(),
direct_args.join(" ")
);
println!("Executing command: {}", direct_command_str);
let direct_output = Command::new(&kr2r_binary)
.args(&direct_args)
.output()
.expect("Failed to run kun_peng direct command");
println!(
"kun_peng direct output: {}",
String::from_utf8_lossy(&direct_output.stdout)
);
if !direct_output.stderr.is_empty() {
println!(
"kun_peng direct error: {}",
String::from_utf8_lossy(&direct_output.stderr)
);
}
}