Add new args

This commit is contained in:
2025-07-31 16:47:56 +08:00
parent 8c565ad233
commit b878ad0e7a
2 changed files with 29 additions and 4 deletions

View File

@@ -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,

View File

@@ -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(),