From b878ad0e7ab9bc45a391fd647e9f99ea111ddb04 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Thu, 31 Jul 2025 16:47:56 +0800 Subject: [PATCH] Add new args --- src/args.rs | 3 +++ src/main.rs | 30 ++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/args.rs b/src/args.rs index 365b70d..cc11cd4 100644 --- a/src/args.rs +++ b/src/args.rs @@ -233,6 +233,9 @@ pub struct Arg { #[arg(long, global = true, value_enum, default_value_t = crate::scripts::circus::image::crx::CircusCrxMode::Auto)] /// Circus CRX image row type mode pub circus_crx_mode: crate::scripts::circus::image::crx::CircusCrxMode, + #[arg(short = 'F', long, global = true, action = ArgAction::SetTrue)] + /// Force all files in archive to be treated as script files. + pub force_script: bool, #[command(subcommand)] /// Command pub command: Command, diff --git a/src/main.rs b/src/main.rs index 15672e0..3382583 100644 --- a/src/main.rs +++ b/src/main.rs @@ -401,8 +401,19 @@ pub fn export_script( continue; } }; - if f.is_script() { - let (script_file, _) = parse_script_from_archive(&mut f, arg, config, &script)?; + if arg.force_script || f.is_script() { + let (script_file, _) = match parse_script_from_archive(&mut f, arg, config, &script) + { + Ok(s) => s, + Err(e) => { + eprintln!("Error parsing script '{}' from archive: {}", filename, e); + COUNTER.inc_error(); + if arg.backtrace { + eprintln!("Backtrace: {}", e.backtrace()); + } + continue; + } + }; #[cfg(feature = "image")] if script_file.is_image() { if script_file.is_multi_image() { @@ -896,8 +907,19 @@ pub fn import_script( } }; let mut writer = arch.new_file(f.name())?; - if f.is_script() { - let (script_file, _) = parse_script_from_archive(&mut f, arg, config, &script)?; + if arg.force_script || f.is_script() { + let (script_file, _) = match parse_script_from_archive(&mut f, arg, config, &script) + { + Ok(s) => s, + Err(e) => { + eprintln!("Error parsing script '{}' from archive: {}", filename, e); + COUNTER.inc_error(); + if arg.backtrace { + eprintln!("Backtrace: {}", e.backtrace()); + } + continue; + } + }; let mut of = match &arg.output_type { Some(t) => t.clone(), None => script_file.default_output_script_type(),