Skip to content

Commit

Permalink
fix: It breaks Unity .blend import
Browse files Browse the repository at this point in the history
  • Loading branch information
called-d committed May 21, 2024
1 parent 2f3474b commit 72e897b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/exec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,11 @@ pub fn open(executable: &str, file: &str, args: Option<Vec<String>>) -> std::io:
.args(args.unwrap_or_default())
.spawn()
}

pub fn exec(executable: &str, args: Vec<String>) -> std::io::Result<Child> {
let (executable, link_args) = normalize_link(executable);
Command::new(executable)
.args(link_args.unwrap_or_default())
.args(args)
.spawn()
}
30 changes: 30 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,38 @@ fn get_version_from_file(input: &str) -> version_checker::BlenderVersion {
version_checker::get_version(version_str).unwrap()
}

fn is_background_mode(args: &Vec<String>) -> bool {
let (args, _extra) = extra_args(args);
args.iter().any(|x| x == "-b" || x == "--background")
}
fn pass_throuh_to_blender(args: Vec<String>) -> std::process::ExitStatus {
let input = args
.iter()
.find(|x| x.ends_with(".blend"))
.expect("args must have .blend file");
let version = get_version_from_file(&input);
let settings = config::load().unwrap();

let executable = settings
.get_executable(&version.version)
.or_else(|| find_executable(&version.version))
.expect("blender executable should be found.");

// skip args[0] is open_blender_file.exe
exec::exec(&executable, args[1..].to_vec())
.unwrap()
.wait()
.unwrap()
}
fn main() {
let args: Vec<String> = env::args().collect();

// When arguments has '-b' / '--background',
// it probably means that Unity is trying to import a .blend file
if is_background_mode(&args) {
let status = pass_throuh_to_blender(args);
process::exit(if status.success() { 0 } else { -1 });
}
let program = args[0].clone();

let mut opts = Options::new();
Expand Down

0 comments on commit 72e897b

Please sign in to comment.