diff --git a/src/bin/cargo/commands/install.rs b/src/bin/cargo/commands/install.rs index 55b5f116b65..b26c0cc6d4a 100644 --- a/src/bin/cargo/commands/install.rs +++ b/src/bin/cargo/commands/install.rs @@ -18,7 +18,7 @@ pub fn cli() -> App { .arg( opt("git", "Git URL to install the specified crate from") .value_name("URL") - .conflicts_with_all(&["path", "registry"]), + .conflicts_with_all(&["path", "index", "registry"]), ) .arg( opt("branch", "Branch to use when installing from git") @@ -38,7 +38,7 @@ pub fn cli() -> App { .arg( opt("path", "Filesystem path to local crate to install") .value_name("PATH") - .conflicts_with_all(&["git", "registry"]), + .conflicts_with_all(&["git", "index", "registry"]), ) .arg(opt( "list", @@ -58,11 +58,17 @@ pub fn cli() -> App { ) .arg_target_triple("Build for the target triple") .arg(opt("root", "Directory to install packages into").value_name("DIR")) + .arg( + opt("index", "Registry index to install from") + .value_name("INDEX") + .requires("crate") + .conflicts_with_all(&["git", "path", "registry"]), + ) .arg( opt("registry", "Registry to use") .value_name("REGISTRY") .requires("crate") - .conflicts_with_all(&["git", "path"]), + .conflicts_with_all(&["git", "path", "index"]), ) .after_help( "\ @@ -100,8 +106,6 @@ continuous integration systems.", } pub fn exec(config: &mut Config, args: &ArgMatches<'_>) -> CliResult { - let registry = args.registry(config)?; - if let Some(path) = args.value_of_path("path", config) { config.reload_rooted_at(path)?; } else { @@ -143,8 +147,10 @@ pub fn exec(config: &mut Config, args: &ArgMatches<'_>) -> CliResult { } else if krates.is_empty() { from_cwd = true; SourceId::for_path(config.cwd())? - } else if let Some(registry) = registry { + } else if let Some(registry) = args.registry(config)? { SourceId::alt_registry(config, ®istry)? + } else if let Some(index) = args.value_of("index") { + SourceId::for_registry(&index.into_url()?)? } else { SourceId::crates_io(config)? }; diff --git a/src/doc/man/cargo-install.adoc b/src/doc/man/cargo-install.adoc index e88909ba11b..4c33e264b5e 100644 --- a/src/doc/man/cargo-install.adoc +++ b/src/doc/man/cargo-install.adoc @@ -135,6 +135,8 @@ available. include::options-registry.adoc[] +include::options-index.adoc[] + include::options-features.adoc[] === Compilation Options diff --git a/src/doc/man/generated/cargo-install.html b/src/doc/man/generated/cargo-install.html index 9915e1cc74a..0dee05d2a41 100644 --- a/src/doc/man/generated/cargo-install.html +++ b/src/doc/man/generated/cargo-install.html @@ -197,6 +197,10 @@
registry.default
config key which defaults to crates-io
.
+The URL of the registry index to use.
+