From 19d06163246513621373113e603a01a970214ff2 Mon Sep 17 00:00:00 2001
From: Lea Fairbanks <lea.rae.fairbanks@gmail.com>
Date: Tue, 31 May 2022 17:57:05 +1200
Subject: [PATCH 1/2] Add cli overrides

---
 README.md   | 10 ++++++++++
 src/main.rs | 20 +++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 11c58489..357651c0 100644
--- a/README.md
+++ b/README.md
@@ -57,6 +57,16 @@ yes
 21:15:30 [INFO] Installation complete!
 ```
 
+### Unsupported crates
+
+To install an unsupported crate, you may specify the Cargo.toml metadata entries for `pkg-url`, `bin-dir`, and `pkg-fmt` at the command line, with values [as documented below](#supporting-binary-installation).
+
+For example:
+```
+$ binstall \
+  --pkg-url="{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ format }" \
+  --pkg-fmt="txz" crate_name
+```
 
 ## Status
 
diff --git a/src/main.rs b/src/main.rs
index f35064c0..f0a0c5e6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -60,6 +60,18 @@ struct Options {
     /// Utility log level
     #[structopt(long, default_value = "info")]
     log_level: LevelFilter,
+
+    /// Override Cargo.toml package manifest bin-dir.
+    #[structopt(long)]
+    bin_dir: Option<String>,
+
+    /// Override Cargo.toml package manifest pkg-fmt.
+    #[structopt(long)]
+    pkg_fmt: Option<PkgFmt>,
+
+    /// Override Cargo.toml package manifest pkg-url.
+    #[structopt(long)]
+    pkg_url: Option<String>,
 }
 
 #[tokio::main]
@@ -73,7 +85,12 @@ async fn main() -> Result<(), anyhow::Error> {
     }
 
     // Load options
-    let opts = Options::from_iter(args.iter());
+    let mut opts = Options::from_iter(args.iter());
+    let cli_overrides = PkgOverride {
+        pkg_url: opts.pkg_url.take(),
+        pkg_fmt: opts.pkg_fmt.take(),
+        bin_dir: opts.bin_dir.take(),
+    };
 
     // Setup logging
     let mut log_config = ConfigBuilder::new();
@@ -133,6 +150,7 @@ async fn main() -> Result<(), anyhow::Error> {
         meta.merge(&o);
     }
 
+    meta.merge(&cli_overrides);
     debug!("Found metadata: {:?}", meta);
 
     // Compute install directory

From 2f9be15c30c641eaa0825b303bb8b4f8fb7a2d7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fe=CC=81lix=20Saparelli?= <felix@passcod.name>
Date: Tue, 31 May 2022 18:01:29 +1200
Subject: [PATCH 2/2] Fix old template specifier in readme

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 357651c0..b72a5d56 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ To install an unsupported crate, you may specify the Cargo.toml metadata entries
 For example:
 ```
 $ binstall \
-  --pkg-url="{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ format }" \
+  --pkg-url="{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ archive-format }" \
   --pkg-fmt="txz" crate_name
 ```