aboutsummaryrefslogtreecommitdiff
path: root/src/bin/json.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-13 19:50:50 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-13 19:50:50 +0100
commit58186bb96e38b92e426e75e08b0e0c95d05d319c (patch)
tree17d4dfe37a6a7c06f108e4331d37101e42757e4f /src/bin/json.rs
parent918adb796ebe5099c32148542469b647ee6dec28 (diff)
downloadunity-tools-58186bb96e38b92e426e75e08b0e0c95d05d319c.tar
unity-tools-58186bb96e38b92e426e75e08b0e0c95d05d319c.tar.bz2
unity-tools-58186bb96e38b92e426e75e08b0e0c95d05d319c.tar.zst
main file finder helper
Diffstat (limited to 'src/bin/json.rs')
-rw-r--r--src/bin/json.rs46
1 files changed, 21 insertions, 25 deletions
diff --git a/src/bin/json.rs b/src/bin/json.rs
index b969beb..d669148 100644
--- a/src/bin/json.rs
+++ b/src/bin/json.rs
@@ -14,33 +14,29 @@ fn main() -> anyhow::Result<()> {
let filter = args().nth(2);
let pretty = var("PRETTY").is_ok();
- for node in fs.nodes().to_vec() {
- if node.name.ends_with(".resource") || node.name.ends_with(".resS") {
- continue;
- }
- let mut cab = fs.read(&node)?;
- let file = read_serialized_file(&mut cab)?;
- for ob in file.objects {
- cab.seek(SeekFrom::Start(ob.data_offset))?;
- let typetree = if ob.type_id < 0 {
- unimplemented!()
- } else {
- &file.types[ob.type_id as usize]
- };
- if let Some(typetree) = &typetree.type_tree {
- if let Some(f) = &filter {
- if typetree.type_string != *f && ob.path_id.to_string() != *f {
- continue;
- }
- }
- let value = read_value(typetree, file.endianness, &mut cab)?;
- if pretty {
- serde_json::to_writer_pretty(stdout(), &value.to_json()).unwrap();
- } else {
- serde_json::to_writer(stdout(), &value.to_json()).unwrap();
+ let node = fs.find_main_file().unwrap().to_owned();
+ let mut cab = fs.read(&node)?;
+ let file = read_serialized_file(&mut cab)?;
+ for ob in file.objects {
+ cab.seek(SeekFrom::Start(ob.data_offset))?;
+ let typetree = if ob.type_id < 0 {
+ unimplemented!()
+ } else {
+ &file.types[ob.type_id as usize]
+ };
+ if let Some(typetree) = &typetree.type_tree {
+ if let Some(f) = &filter {
+ if typetree.type_string != *f && ob.path_id.to_string() != *f {
+ continue;
}
- println!()
}
+ let value = read_value(typetree, file.endianness, &mut cab)?;
+ if pretty {
+ serde_json::to_writer_pretty(stdout(), &value.to_json()).unwrap();
+ } else {
+ serde_json::to_writer(stdout(), &value.to_json()).unwrap();
+ }
+ println!()
}
}