aboutsummaryrefslogtreecommitdiff
path: root/crate_universe/src/metadata.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crate_universe/src/metadata.rs')
-rw-r--r--crate_universe/src/metadata.rs62
1 files changed, 34 insertions, 28 deletions
diff --git a/crate_universe/src/metadata.rs b/crate_universe/src/metadata.rs
index 798a7f4e..39e45db7 100644
--- a/crate_universe/src/metadata.rs
+++ b/crate_universe/src/metadata.rs
@@ -23,17 +23,17 @@ use crate::lockfile::Digest;
use crate::select::Select;
use crate::utils::target_triple::TargetTriple;
-pub use self::dependency::*;
-pub use self::metadata_annotation::*;
+pub(crate) use self::dependency::*;
+pub(crate) use self::metadata_annotation::*;
// TODO: This should also return a set of [crate-index::IndexConfig]s for packages in metadata.packages
/// A Trait for generating metadata (`cargo metadata` output and a lock file) from a Cargo manifest.
-pub trait MetadataGenerator {
+pub(crate) trait MetadataGenerator {
fn generate<T: AsRef<Path>>(&self, manifest_path: T) -> Result<(CargoMetadata, CargoLockfile)>;
}
/// Generates Cargo metadata and a lockfile from a provided manifest.
-pub struct Generator {
+pub(crate) struct Generator {
/// The path to a `cargo` binary
cargo_bin: Cargo,
@@ -42,7 +42,7 @@ pub struct Generator {
}
impl Generator {
- pub fn new() -> Self {
+ pub(crate) fn new() -> Self {
Generator {
cargo_bin: Cargo::new(PathBuf::from(
env::var("CARGO").unwrap_or_else(|_| "cargo".to_string()),
@@ -51,12 +51,12 @@ impl Generator {
}
}
- pub fn with_cargo(mut self, cargo_bin: Cargo) -> Self {
+ pub(crate) fn with_cargo(mut self, cargo_bin: Cargo) -> Self {
self.cargo_bin = cargo_bin;
self
}
- pub fn with_rustc(mut self, rustc_bin: PathBuf) -> Self {
+ pub(crate) fn with_rustc(mut self, rustc_bin: PathBuf) -> Self {
self.rustc_bin = rustc_bin;
self
}
@@ -97,13 +97,13 @@ impl MetadataGenerator for Generator {
/// Any invocations of `cargo` (either as a `std::process::Command` or via `cargo_metadata`) should
/// go via this wrapper to ensure that any environment variables needed are set appropriately.
#[derive(Debug, Clone)]
-pub struct Cargo {
+pub(crate) struct Cargo {
path: PathBuf,
full_version: Arc<Mutex<Option<String>>>,
}
impl Cargo {
- pub fn new(path: PathBuf) -> Cargo {
+ pub(crate) fn new(path: PathBuf) -> Cargo {
Cargo {
path,
full_version: Arc::new(Mutex::new(None)),
@@ -111,7 +111,7 @@ impl Cargo {
}
/// Returns a new `Command` for running this cargo.
- pub fn command(&self) -> Result<Command> {
+ pub(crate) fn command(&self) -> Result<Command> {
let mut command = Command::new(&self.path);
command.envs(self.env()?);
if self.is_nightly()? {
@@ -121,7 +121,7 @@ impl Cargo {
}
/// Returns a new `MetadataCommand` using this cargo.
- pub fn metadata_command(&self) -> Result<MetadataCommand> {
+ pub(crate) fn metadata_command(&self) -> Result<MetadataCommand> {
let mut command = MetadataCommand::new();
command.cargo_path(&self.path);
for (k, v) in self.env()? {
@@ -132,7 +132,7 @@ impl Cargo {
/// Returns the output of running `cargo version`, trimming any leading or trailing whitespace.
/// This function performs normalisation to work around `<https://github.com/rust-lang/cargo/issues/10547>`
- pub fn full_version(&self) -> Result<String> {
+ pub(crate) fn full_version(&self) -> Result<String> {
let mut full_version = self.full_version.lock().unwrap();
if full_version.is_none() {
let observed_version = Digest::bin_version(&self.path)?;
@@ -141,7 +141,7 @@ impl Cargo {
Ok(full_version.clone().unwrap())
}
- pub fn is_nightly(&self) -> Result<bool> {
+ pub(crate) fn is_nightly(&self) -> Result<bool> {
let full_version = self.full_version()?;
let version_str = full_version.split(' ').nth(1);
if let Some(version_str) = version_str {
@@ -151,7 +151,7 @@ impl Cargo {
bail!("Couldn't parse cargo version");
}
- pub fn use_sparse_registries_for_crates_io(&self) -> Result<bool> {
+ pub(crate) fn use_sparse_registries_for_crates_io(&self) -> Result<bool> {
let full_version = self.full_version()?;
let version_str = full_version.split(' ').nth(1);
if let Some(version_str) = version_str {
@@ -163,7 +163,8 @@ impl Cargo {
/// Determine if Cargo is expected to be using the new package_id spec. For
/// details see <https://github.com/rust-lang/cargo/pull/13311>
- pub fn uses_new_package_id_format(&self) -> Result<bool> {
+ #[cfg(test)]
+ pub(crate) fn uses_new_package_id_format(&self) -> Result<bool> {
let full_version = self.full_version()?;
let version_str = full_version.split(' ').nth(1);
if let Some(version_str) = version_str {
@@ -186,7 +187,7 @@ impl Cargo {
}
}
-/// A configuration desrcibing how to invoke [cargo update](https://doc.rust-lang.org/cargo/commands/cargo-update.html).
+/// A configuration describing how to invoke [cargo update](https://doc.rust-lang.org/cargo/commands/cargo-update.html).
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CargoUpdateRequest {
/// Translates to an unrestricted `cargo update` command
@@ -247,7 +248,12 @@ impl CargoUpdateRequest {
}
/// Calls `cargo update` with arguments specific to the state of the current variant.
- pub fn update(&self, manifest: &Path, cargo_bin: &Cargo, rustc_bin: &Path) -> Result<()> {
+ pub(crate) fn update(
+ &self,
+ manifest: &Path,
+ cargo_bin: &Cargo,
+ rustc_bin: &Path,
+ ) -> Result<()> {
let manifest_dir = manifest.parent().unwrap();
// Simply invoke `cargo update`
@@ -280,7 +286,7 @@ impl CargoUpdateRequest {
}
}
-pub struct LockGenerator {
+pub(crate) struct LockGenerator {
/// The path to a `cargo` binary
cargo_bin: Cargo,
@@ -289,7 +295,7 @@ pub struct LockGenerator {
}
impl LockGenerator {
- pub fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
+ pub(crate) fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
Self {
cargo_bin,
rustc_bin,
@@ -297,7 +303,7 @@ impl LockGenerator {
}
#[tracing::instrument(name = "LockGenerator::generate", skip_all)]
- pub fn generate(
+ pub(crate) fn generate(
&self,
manifest_path: &Path,
existing_lock: &Option<PathBuf>,
@@ -390,7 +396,7 @@ impl LockGenerator {
}
/// A generator which runs `cargo vendor` on a given manifest
-pub struct VendorGenerator {
+pub(crate) struct VendorGenerator {
/// The path to a `cargo` binary
cargo_bin: Cargo,
@@ -399,14 +405,14 @@ pub struct VendorGenerator {
}
impl VendorGenerator {
- pub fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
+ pub(crate) fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
Self {
cargo_bin,
rustc_bin,
}
}
#[tracing::instrument(name = "VendorGenerator::generate", skip_all)]
- pub fn generate(&self, manifest_path: &Path, output_dir: &Path) -> Result<()> {
+ pub(crate) fn generate(&self, manifest_path: &Path, output_dir: &Path) -> Result<()> {
debug!(
"Vendoring {} to {}",
manifest_path.display(),
@@ -449,7 +455,7 @@ impl VendorGenerator {
}
/// A generate which computes per-platform feature sets.
-pub struct FeatureGenerator {
+pub(crate) struct FeatureGenerator {
/// The path to a `cargo` binary
cargo_bin: Cargo,
@@ -458,7 +464,7 @@ pub struct FeatureGenerator {
}
impl FeatureGenerator {
- pub fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
+ pub(crate) fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
Self {
cargo_bin,
rustc_bin,
@@ -467,7 +473,7 @@ impl FeatureGenerator {
/// Computes the set of enabled features for each target triplet for each crate.
#[tracing::instrument(name = "FeatureGenerator::generate", skip_all)]
- pub fn generate(
+ pub(crate) fn generate(
&self,
manifest_path: &Path,
target_triples: &BTreeSet<TargetTriple>,
@@ -626,7 +632,7 @@ where
}
/// A helper function for writing Cargo metadata to a file.
-pub fn write_metadata(path: &Path, metadata: &cargo_metadata::Metadata) -> Result<()> {
+pub(crate) fn write_metadata(path: &Path, metadata: &cargo_metadata::Metadata) -> Result<()> {
let content =
serde_json::to_string_pretty(metadata).context("Failed to serialize Cargo Metadata")?;
@@ -634,7 +640,7 @@ pub fn write_metadata(path: &Path, metadata: &cargo_metadata::Metadata) -> Resul
}
/// A helper function for deserializing Cargo metadata and lockfiles
-pub fn load_metadata(
+pub(crate) fn load_metadata(
metadata_path: &Path,
) -> Result<(cargo_metadata::Metadata, cargo_lock::Lockfile)> {
// Locate the Cargo.lock file related to the metadata file.