mirror of https://github.com/rust-lang/cargo
53 lines
1.7 KiB
Rust
53 lines
1.7 KiB
Rust
use crate::command_prelude::*;
|
|
|
|
use cargo::ops::{self, OwnersOptions};
|
|
|
|
pub fn cli() -> Command {
|
|
subcommand("owner")
|
|
.about("Manage the owners of a crate on the registry")
|
|
.arg_quiet()
|
|
.arg(Arg::new("crate").action(ArgAction::Set))
|
|
.arg(
|
|
multi_opt(
|
|
"add",
|
|
"LOGIN",
|
|
"Name of a user or team to invite as an owner",
|
|
)
|
|
.short('a'),
|
|
)
|
|
.arg(
|
|
multi_opt(
|
|
"remove",
|
|
"LOGIN",
|
|
"Name of a user or team to remove as an owner",
|
|
)
|
|
.short('r'),
|
|
)
|
|
.arg(flag("list", "List owners of a crate").short('l'))
|
|
.arg(opt("index", "Registry index to modify owners for").value_name("INDEX"))
|
|
.arg(opt("token", "API token to use when authenticating").value_name("TOKEN"))
|
|
.arg(opt("registry", "Registry to use").value_name("REGISTRY"))
|
|
.after_help("Run `cargo help owner` for more detailed information.\n")
|
|
}
|
|
|
|
pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult {
|
|
config.load_credentials()?;
|
|
|
|
let registry = args.registry(config)?;
|
|
let opts = OwnersOptions {
|
|
krate: args.get_one::<String>("crate").cloned(),
|
|
token: args.get_one::<String>("token").cloned(),
|
|
index: args.get_one::<String>("index").cloned(),
|
|
to_add: args
|
|
.get_many::<String>("add")
|
|
.map(|xs| xs.cloned().collect()),
|
|
to_remove: args
|
|
.get_many::<String>("remove")
|
|
.map(|xs| xs.cloned().collect()),
|
|
list: args.flag("list"),
|
|
registry,
|
|
};
|
|
ops::modify_owners(config, &opts)?;
|
|
Ok(())
|
|
}
|