diff options
Diffstat (limited to 'exporter/src/bin/yaml.rs')
-rw-r--r-- | exporter/src/bin/yaml.rs | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/exporter/src/bin/yaml.rs b/exporter/src/bin/yaml.rs index afa016a..a63164a 100644 --- a/exporter/src/bin/yaml.rs +++ b/exporter/src/bin/yaml.rs @@ -13,24 +13,31 @@ fn main() -> anyhow::Result<()> { let filter = args().nth(2); let node = fs.find_main_file().unwrap().to_owned(); - let mut cab = fs.read(&node)?; - let mut file = SerializedFile::read(&mut cab, node.name)?; - for ob in file.objects.clone() { - if let Some(f) = &filter { - if file.get_object_type_tree(&ob)?.type_string != *f && ob.path_id.to_string() != *f { - continue; + let cab = fs.read(&node)?; + let file = SerializedFile::read(cab, node.name)?; + let mut shared = None; + if let Some(ni) = file.find_fs_shared_assets(&fs) { + let cab = fs.read(&ni)?; + shared = Some(SerializedFile::read(cab, ni.name)?); + } + for mut file in [file].into_iter().chain(shared) { + for ob in file.objects.clone() { + if let Some(f) = &filter { + if file.get_object_type_tree(&ob)?.type_string != *f && ob.path_id.to_string() != *f + { + continue; + } } - } - let value = file.read_object(ob)?; - let hvalue = HValue::from_value(value)?; + let value = file.read_object(ob)?; + let hvalue = HValue::from_value(value)?; - let mut hvalue = serde_yml::to_value(hvalue)?; - trim_large_arrays(&mut hvalue); + let mut hvalue = serde_yml::to_value(hvalue)?; + trim_large_arrays(&mut hvalue); - serde_yml::to_writer(stdout(), &hvalue).unwrap(); - println!() + serde_yml::to_writer(stdout(), &hvalue).unwrap(); + println!() + } } - Ok(()) } |