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, + + /// Override Cargo.toml package manifest pkg-fmt. + #[structopt(long)] + pkg_fmt: Option, + + /// Override Cargo.toml package manifest pkg-url. + #[structopt(long)] + pkg_url: Option, } #[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