aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2025-10-17 05:03:07 +0200
committerLeonard Kugis <leonard@kug.is>2025-10-17 05:03:07 +0200
commit7df2fb341747003cee73cf8e819e6cec824edaba (patch)
treee3cc7be1cc0c611533364a7be9193195688cfa7d
parent138047dbc25c150a6b4efafa9cec81de425bd5c7 (diff)
downloadsquashr-7df2fb341747003cee73cf8e819e6cec824edaba.tar.gz
Added option to add tar argsHEADmaster
-rwxr-xr-xsrc/main.rs15
1 files changed, 15 insertions, 0 deletions
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<String>,
+ squashr_tar_args: Option<String>,
+
/// Passphrase für cryptsetup; ACHTUNG: Sichtbar im Prozesslisting.
#[arg(long)]
squashr_cryptsetup_pass: Option<String>,
@@ -121,6 +123,7 @@ struct Config {
SQUASHR_CRYPTSETUP_ENABLE: Option<bool>,
SQUASHR_CRYPTSETUP_CREATE_ARGS: Option<String>,
SQUASHR_CRYPTSETUP_OPEN_ARGS: Option<String>,
+ SQUASHR_TAR_ARGS: Option<String>,
SQUASHR_CRYPTSETUP_PASS: Option<String>,
SQUASHR_CRYPTSETUP_PASS_FILE: Option<PathBuf>,
}
@@ -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<Config> {
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<Config>{
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<String>,
luks_open_args: Option<String>,
luks_pass: Option<Vec<u8>>,
+ tar_args: Option<String>,
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());