From 76a7fb00c90598150531cd4a2a91c841cc8df43b Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 8 Apr 2021 21:26:44 +1200 Subject: [PATCH] add pkg-url and pkg-fmt overrides --- README.md | 2 +- src/lib.rs | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index eae7f1c0..bfa5cdea 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Template variables use the format `{ VAR }` where `VAR` is the name of the varia - `bin` is the name of a specific binary, inferred from the crate configuration - `target` is the rust target name (defaults to your architecture, but can be overridden using the `--target` command line option if required(). -Package format can be overridden on a per-target basis, for example, if your `x86_64-pc-windows-msvc` builds use `zip` archives this can be set via: +`pkg-url`, `pkg-fmt` and `bin-path` can be overridden on a per-target basis if required, for example, if your `x86_64-pc-windows-msvc` builds use `zip` archives this could be set via: ``` [package.metadata.binstall.overrides.x86_64-pc-windows-msvc] diff --git a/src/lib.rs b/src/lib.rs index fdb3af39..682e60c5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -93,8 +93,14 @@ impl Default for PkgMeta { impl PkgMeta { /// Merge configuration overrides into object pub fn merge(&mut self, pkg_override: &PkgOverride) { - if let Some(o) = pkg_override.pkg_fmt { - self.pkg_fmt = o; + if let Some(o) = &pkg_override.pkg_url { + self.pkg_url = o.clone(); + } + if let Some(o) = &pkg_override.pkg_fmt { + self.pkg_fmt = *o; + } + if let Some(o) = &pkg_override.bin_dir { + self.bin_dir = o.clone(); } } } @@ -105,14 +111,22 @@ impl PkgMeta { #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "kebab-case", default)] pub struct PkgOverride { - /// Format for package downloads + /// URL template override for package downloads + pub pkg_url: Option, + + /// Format override for package downloads pub pkg_fmt: Option, + + /// Path template override for binary files in packages + pub bin_dir: Option, } impl Default for PkgOverride { fn default() -> Self { Self { + pkg_url: None, pkg_fmt: None, + bin_dir: None, } } }