feat: Add more variables for template (#1160)

Fixed #775

 - Add dep target-lexicon v0.12.7
 - Add `target-{family, arch, libc, vendor}` to
   `package.metadata.binstall`.

For `{universal, universal2}-apple-darwin`, the `target-arch` is set to
`universal`.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2023-06-21 08:05:13 +10:00 committed by GitHub
parent 181b5293e7
commit d8419ea5a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 210 additions and 115 deletions

View file

@ -3,6 +3,7 @@ use std::{
collections::{BTreeMap, BTreeSet},
iter, mem,
path::Path,
str::FromStr,
sync::Arc,
};
@ -21,7 +22,7 @@ use crate::{
drivers::fetch_crate_cratesio,
errors::{BinstallError, VersionParseError},
fetchers::{Data, Fetcher, TargetData},
helpers::{download::ExtractedFiles, remote::Client},
helpers::{download::ExtractedFiles, remote::Client, target_triple::TargetTriple},
manifests::cargo_toml_binstall::{Meta, PkgMeta, PkgOverride},
};
@ -76,7 +77,13 @@ async fn resolve_inner(
return Ok(Resolution::AlreadyUpToDate)
};
let desired_targets = opts.desired_targets.get().await;
let desired_targets = opts
.desired_targets
.get()
.await
.iter()
.map(|target| TargetTriple::from_str(target).map(|triple| (triple, target)))
.collect::<Result<Vec<_>, _>>()?;
let resolvers = &opts.resolvers;
let mut handles: Vec<(Arc<dyn Fetcher>, _)> =
@ -90,8 +97,8 @@ async fn resolve_inner(
handles.extend(
desired_targets
.iter()
.map(|target| {
.into_iter()
.map(|(triple, target)| {
debug!("Building metadata for target: {target}");
let target_meta = package_info.meta.merge_overrides(
@ -102,6 +109,7 @@ async fn resolve_inner(
Arc::new(TargetData {
target: target.clone(),
triple,
meta: target_meta,
})
})
@ -295,6 +303,7 @@ fn collect_bin_files(
meta,
bin_path,
install_path,
triple: &fetcher.target_data().triple,
};
let bin_dir = bin_data