44 lines
1.3 KiB
Rust
44 lines
1.3 KiB
Rust
use crate::commands;
|
|
use crate::utils::parser::pkginfo;
|
|
|
|
|
|
pub fn link(matches: &clap::ArgMatches) {
|
|
let pkg_names: Vec<&str> = matches
|
|
.get_many::<String>("pkgname")
|
|
.expect("At least one package name is required")
|
|
.map(|s| s.as_str())
|
|
.collect();
|
|
|
|
let repo = matches.get_one::<String>("repo").map(|s| s.as_str());
|
|
|
|
for pkgname in pkg_names {
|
|
let resolved_repo = if let Some(explicit_repo) = repo {
|
|
&explicit_repo.to_string()
|
|
} else {
|
|
&pkginfo::get_priority_repo_installed(&pkgname.to_string())
|
|
};
|
|
|
|
commands::link::link(resolved_repo, &pkgname.to_string());
|
|
}
|
|
}
|
|
|
|
pub fn command() -> clap::Command {
|
|
clap::Command::new("link")
|
|
.about("Create package links and mount overlays")
|
|
.arg(
|
|
clap::Arg::new("repo")
|
|
.long("repo")
|
|
.short('r')
|
|
.help("Specify the repository to install the package(s) from (applies to all packages)")
|
|
.value_name("REPO")
|
|
.num_args(1)
|
|
)
|
|
.arg(
|
|
clap::Arg::new("pkgname")
|
|
.help("Name(s) of the package(s) to install")
|
|
.required(true)
|
|
.value_name("PKGNAME")
|
|
.action(clap::ArgAction::Append)
|
|
)
|
|
}
|