43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
pub mod xa;
|
|
pub mod vag;
|
|
|
|
use std::{env, path::PathBuf, process::Command};
|
|
use tool_helper::Error;
|
|
|
|
fn run_psxavenc<I, S>(input: PathBuf, output: PathBuf, args: I) -> Result<(), Error>
|
|
where
|
|
I: IntoIterator<Item = S>,
|
|
S: AsRef<std::ffi::OsStr>, {
|
|
let psxavenc = get_psxavenc_path()?;
|
|
let result = Command::new(psxavenc).args(args).arg(input.to_string_lossy().as_ref()).arg(output.to_string_lossy().as_ref()).output()?;
|
|
|
|
let stderr = tool_helper::vec_helper::to_string(result.stderr)?;
|
|
let stdout = tool_helper::vec_helper::to_string(result.stdout)?;
|
|
|
|
if !result.status.success() {
|
|
return Err(Error::from_text(format!("psxavenc returned: {}. {}", result.status, stderr)));
|
|
}
|
|
|
|
if !stdout.is_empty() {
|
|
println!("{}", stdout);
|
|
}
|
|
Ok(())
|
|
}
|
|
|
|
fn get_psxavenc_path() -> Result<PathBuf, Error> {
|
|
let tool_path = {
|
|
let mut my_path = env::current_exe()?;
|
|
|
|
my_path.pop();
|
|
my_path.push("extern");
|
|
my_path.push("psxavenc");
|
|
|
|
my_path
|
|
};
|
|
|
|
if !tool_path.exists() {
|
|
return Err(Error::from_str("Could not locate psxavenc. Make sure it is installed under \"<Jaby Engine>/bin/extern\""));
|
|
}
|
|
|
|
Ok(tool_path)
|
|
} |