@@ -22,25 +22,34 @@ pub fn native_spec(mut app_args: Vec<String>, working_dir: &Path) -> NativeRunSp
2222 const INPUT_PDB_PREFIX : & str = "inference.input_pdb=" ;
2323 const OUTPUT_PREFIX : & str = "inference.output_prefix=" ;
2424
25+ let mut output_prefix_present = false ;
2526 for arg in & mut app_args {
2627 if arg. starts_with ( INPUT_PDB_PREFIX ) {
2728 let input_pdb = arg. split_at ( INPUT_PDB_PREFIX . len ( ) ) . 1 ;
2829
2930 let input_pdb_path = PathBuf :: from ( input_pdb) ;
3031 if !input_pdb_path. is_absolute ( ) {
3132 let abs_input_pdb = working_dir. join ( input_pdb_path) ;
32- arg. replace_range (
33- ..,
34- & format ! ( "inference.input_pdb={}" , abs_input_pdb. to_str( ) . unwrap( ) ) ,
33+ * arg = format ! ( "inference.input_pdb={}" , abs_input_pdb. to_str( ) . unwrap( ) ) ;
34+ }
35+ } else if arg. starts_with ( OUTPUT_PREFIX ) {
36+ let output_prefix = arg. split_at ( OUTPUT_PREFIX . len ( ) ) . 1 ;
37+
38+ let output_prefix_path = PathBuf :: from ( output_prefix) ;
39+ if !output_prefix_path. is_absolute ( ) {
40+ let abs_output_prefix = working_dir. join ( output_prefix_path) ;
41+ * arg = format ! (
42+ "inference.output_prefix={}" ,
43+ abs_output_prefix. to_str( ) . unwrap( )
3544 ) ;
3645 }
37-
38- // let input_pdb = arg.split_once('=').unwrap().1;
39- // arg.replace_range(.., format!("inference.input_pdb={input_pdb}"));
46+ output_prefix_present = true ;
4047 }
4148 }
4249
43- app_args. extend_from_slice ( & [ format ! ( "{OUTPUT_PREFIX}{}" , working_dir. to_str( ) . unwrap( ) ) ] ) ;
50+ if !output_prefix_present {
51+ app_args. extend_from_slice ( & [ format ! ( "{OUTPUT_PREFIX}{}/" , working_dir. to_str( ) . unwrap( ) ) ] ) ;
52+ }
4453
4554 NativeRunSpec :: new ( include_asset ! ( "pixi/rfdiffusion.toml" ) , app_args)
4655}
0 commit comments