diff --git a/src/main.rs b/src/main.rs index d03634d..bc238be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2633,16 +2633,65 @@ fn run_steps(ib: &mut ImageBuilder) -> Result<()> { #[derive(Deserialize)] struct PkgSetPublisherArgs { publisher: String, - uri: String, + uri: Option, + sticky: Option, } let a: PkgSetPublisherArgs = step.args()?; let mp = ib.root()?; - pkg(log, &["-R", mp.to_str().unwrap(), "set-publisher", + let mut args = vec![ + "-R", &mp.to_str().unwrap(), "set-publisher", "--no-refresh", - "-O", &a.uri, - &a.publisher, + ]; + + if let Some(ref uri) = a.uri { + args.push("-O"); + args.push(uri); + } + + if let Some(sticky) = a.sticky { + match sticky { + true => args.push("--sticky"), + false => args.push("--non-sticky"), + } + } + + args.push(&a.publisher); + + pkg(log, &args)?; + } + "pkg_refresh" => { + #[derive(Deserialize)] + struct PkgRefreshArgs { + full: bool, + } + + let a: PkgRefreshArgs = step.args()?; + let mp = ib.root()?; + + let mut args = vec!["-R", &mp.to_str().unwrap(), "refresh"]; + if a.full { + args.push("--full") + } + + pkg(log, &args)?; + } + "pkg_update" => { + let mp = ib.root()?; + pkg(log, &["-R", &mp.to_str().unwrap(), "update"])?; + } + "pkg_set_p5p_publisher" => { + #[derive(Deserialize)] + struct PkgSetP5PPublisherArgs { + archive: String, + } + + let a: PkgSetP5PPublisherArgs = step.args()?; + let mp = ib.root()?; + + pkg(log, &["-R", &mp.to_str().unwrap(), + "set-publisher", "-p", &a.archive, "--search-first", ])?; } "pkg_approve_ca_cert" => {