aboutsummaryrefslogtreecommitdiff
path: root/apps/fparkan-cli/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'apps/fparkan-cli/src/main.rs')
-rw-r--r--apps/fparkan-cli/src/main.rs78
1 files changed, 38 insertions, 40 deletions
diff --git a/apps/fparkan-cli/src/main.rs b/apps/fparkan-cli/src/main.rs
index ee1f928..043a21c 100644
--- a/apps/fparkan-cli/src/main.rs
+++ b/apps/fparkan-cli/src/main.rs
@@ -3,9 +3,10 @@
//! `FParkan` command-line tools.
use fparkan_corpus::{discover, render_report_json, report, DiscoverOptions};
-use fparkan_prototype::{
- build_prototype_graph_report, extend_graph_report_with_visual_dependencies,
-};
+use fparkan_inspection::inspect_archive_file;
+use fparkan_inspection::ArchiveInspection;
+use fparkan_assets::extend_graph_report_with_visual_dependencies;
+use fparkan_prototype::build_prototype_graph_report;
use fparkan_resource::{resource_name, CachedResourceRepository};
use fparkan_runtime::{
create, load_mission, EngineConfig, EngineMode, EngineServices, MissionRequest,
@@ -134,7 +135,12 @@ fn inspect_prototype(args: &[String]) -> Result<(), String> {
let roots = [resource_name(key.as_bytes())];
let (graph, resolved, mut report) =
build_prototype_graph_report(&repository, vfs.as_ref(), &roots);
- extend_graph_report_with_visual_dependencies(&repository, &mut report, &resolved);
+ extend_graph_report_with_visual_dependencies(
+ &repository,
+ &mut report,
+ &graph,
+ &resolved,
+ );
println!("{}", prototype_inspect_json(&key, &graph, &report));
Ok(())
}
@@ -202,42 +208,34 @@ fn graph_mission(args: &[String]) -> Result<(), String> {
fn inspect_archive(args: &[String]) -> Result<(), String> {
let path = parse_archive_path(args)?;
- let bytes = std::fs::read(&path).map_err(|err| format!("{}: {err}", path.display()))?;
- if bytes.starts_with(b"NRes") {
- let document = fparkan_nres::decode(
- Arc::from(bytes.into_boxed_slice()),
- fparkan_nres::ReadProfile::Compatible,
- )
- .map_err(|err| err.to_string())?;
- println!(
- "{}",
- archive_inspect_json(
- &path.display().to_string(),
- "NRes",
- document.entries().len(),
- Some(document.lookup_order_valid()),
- )
- );
- return Ok(());
- }
- if bytes.get(0..4) == Some(b"NL\0\x01") {
- let document = fparkan_rsli::decode(
- Arc::from(bytes.into_boxed_slice()),
- fparkan_rsli::ReadProfile::Compatible,
- )
- .map_err(|err| err.to_string())?;
- println!(
- "{}",
- archive_inspect_json(
- &path.display().to_string(),
- "RsLi",
- document.entries().len(),
- None
- )
- );
- return Ok(());
+ let inspection = inspect_archive_file(&path, 0).map_err(|err| err.to_string())?;
+
+ match inspection {
+ ArchiveInspection::Nres {
+ entries,
+ lookup_order_valid,
+ ..
+ } => {
+ println!(
+ "{}",
+ archive_inspect_json(
+ &path.display().to_string(),
+ "NRes",
+ entries,
+ Some(lookup_order_valid),
+ )
+ );
+ Ok(())
+ }
+ ArchiveInspection::Rsli { entries } => {
+ println!(
+ "{}",
+ archive_inspect_json(&path.display().to_string(), "RsLi", entries, None)
+ );
+ Ok(())
+ }
+ ArchiveInspection::Unsupported => Err(format!("{}: unsupported archive magic", path.display())),
}
- Err(format!("{}: unsupported archive magic", path.display()))
}
fn archive_inspect_json(
@@ -278,7 +276,7 @@ fn json_string(value: &str) -> String {
'\r' => out.push_str("\\r"),
'\t' => out.push_str("\\t"),
c if c.is_control() => {
- let _ = write!(out, "\\u{:04x}", u32::from(c));
+ let _ = write!(out, "\\u{:04x}", c as u32);
}
c => out.push(c),
}