From 7df2fb341747003cee73cf8e819e6cec824edaba Mon Sep 17 00:00:00 2001 From: Leonard Kugis Date: Fri, 17 Oct 2025 05:03:07 +0200 Subject: Added option to add tar args --- src/main.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main.rs b/src/main.rs index c795089..3b6f2cf 100755 --- a/src/main.rs +++ b/src/main.rs @@ -80,6 +80,8 @@ struct Cli { #[arg(long, allow_hyphen_values = true)] squashr_cryptsetup_open_args: Option, + squashr_tar_args: Option, + /// Passphrase für cryptsetup; ACHTUNG: Sichtbar im Prozesslisting. #[arg(long)] squashr_cryptsetup_pass: Option, @@ -121,6 +123,7 @@ struct Config { SQUASHR_CRYPTSETUP_ENABLE: Option, SQUASHR_CRYPTSETUP_CREATE_ARGS: Option, SQUASHR_CRYPTSETUP_OPEN_ARGS: Option, + SQUASHR_TAR_ARGS: Option, SQUASHR_CRYPTSETUP_PASS: Option, SQUASHR_CRYPTSETUP_PASS_FILE: Option, } @@ -140,6 +143,7 @@ impl Default for Config { SQUASHR_CRYPTSETUP_ENABLE: Some(false), SQUASHR_CRYPTSETUP_CREATE_ARGS: Some("--type luks2".to_string()), SQUASHR_CRYPTSETUP_OPEN_ARGS: Some("--type luks".to_string()), + SQUASHR_TAR_ARGS: None, SQUASHR_CRYPTSETUP_PASS: None, SQUASHR_CRYPTSETUP_PASS_FILE: None, } @@ -187,6 +191,7 @@ fn load_config(path: Option<&Path>) -> Result { set("SQUASHR_CRYPTSETUP_ENABLE", &mut |v| cfg.SQUASHR_CRYPTSETUP_ENABLE = v.parse().ok()); set("SQUASHR_CRYPTSETUP_CREATE_ARGS", &mut |v| cfg.SQUASHR_CRYPTSETUP_CREATE_ARGS = Some(v)); set("SQUASHR_CRYPTSETUP_OPEN_ARGS", &mut |v| cfg.SQUASHR_CRYPTSETUP_OPEN_ARGS = Some(v)); + set("SQUASHR_TAR_ARGS", &mut |v| cfg.SQUASHR_TAR_ARGS = Some(v)); set("SQUASHR_CRYPTSETUP_PASS", &mut |v| cfg.SQUASHR_CRYPTSETUP_PASS = Some(v)); set("SQUASHR_CRYPTSETUP_PASS_FILE", &mut |v| cfg.SQUASHR_CRYPTSETUP_PASS_FILE = Some(PathBuf::from(v))); } @@ -211,6 +216,7 @@ fn apply_env_overrides(mut cfg: Config)->Result{ if let Some(v)=bool_env("SQUASHR_CRYPTSETUP_ENABLE"){ cfg.SQUASHR_CRYPTSETUP_ENABLE=Some(v); } if let Some(v)=str_env("SQUASHR_CRYPTSETUP_CREATE_ARGS"){ cfg.SQUASHR_CRYPTSETUP_CREATE_ARGS=Some(v); } if let Some(v)=str_env("SQUASHR_CRYPTSETUP_OPEN_ARGS"){ cfg.SQUASHR_CRYPTSETUP_OPEN_ARGS=Some(v); } + if let Some(v)=str_env("SQUASHR_TAR_ARGS"){ cfg.SQUASHR_TAR_ARGS=Some(v); } if let Some(v)=str_env("SQUASHR_CRYPTSETUP_PASS"){ cfg.SQUASHR_CRYPTSETUP_PASS=Some(v); } if let Some(v)=str_env("SQUASHR_CRYPTSETUP_PASS_FILE"){ cfg.SQUASHR_CRYPTSETUP_PASS_FILE=Some(PathBuf::from(v)); } Ok(cfg) @@ -253,6 +259,7 @@ struct Ctx { luks_create_args: Option, luks_open_args: Option, luks_pass: Option>, + tar_args: Option, verbose: bool, debug_capture: bool, debug_cap_bytes: u64, @@ -309,6 +316,7 @@ impl Ctx { luks_enable: cfg.SQUASHR_CRYPTSETUP_ENABLE.unwrap_or(false), luks_create_args: cfg.SQUASHR_CRYPTSETUP_CREATE_ARGS, luks_open_args: cfg.SQUASHR_CRYPTSETUP_OPEN_ARGS, + tar_args: cfg.SQUASHR_TAR_ARGS, luks_pass, verbose, debug_capture, @@ -876,6 +884,13 @@ fn build_squash_image_tar_sqfstar( .arg("--numeric-owner") .arg("--ignore-failed-read"); + // Benutzerdefinierte TAR-Args (am Ende → überschreiben Defaults, "last wins") + if let Some(extra) = ctx.tar_args.as_ref() { + for tok in shell_split(extra) { + tar.arg(tok); + } + } + tar.stdin(std::process::Stdio::piped()); tar.stdout(std::process::Stdio::piped()); tar.stderr(std::process::Stdio::inherit()); -- cgit v1.2.3