aboutsummaryrefslogtreecommitdiff
path: root/exporter/src/bin/yaml.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exporter/src/bin/yaml.rs')
-rw-r--r--exporter/src/bin/yaml.rs35
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(())
}