[go: up one dir, main page]

tame-index 0.3.0

Provides access to local and remote cargo registry indices
Documentation
#![allow(dead_code)]

pub use tame_index::{IndexKrate, Path, PathBuf};

pub struct TempDir {
    pub td: tempfile::TempDir,
}

impl TempDir {
    #[inline]
    pub fn path(&self) -> &Path {
        Path::from_path(self.td.path()).unwrap()
    }
}

impl Default for TempDir {
    #[inline]
    fn default() -> Self {
        Self {
            td: tempfile::TempDir::new_in(env!("CARGO_TARGET_TMPDIR")).unwrap(),
        }
    }
}

impl AsRef<Path> for TempDir {
    #[inline]
    fn as_ref(&self) -> &Path {
        self.path()
    }
}

impl AsRef<std::path::Path> for TempDir {
    #[inline]
    fn as_ref(&self) -> &std::path::Path {
        self.td.path()
    }
}

impl<'td> From<&'td TempDir> for PathBuf {
    fn from(td: &'td TempDir) -> Self {
        td.path().to_owned()
    }
}

#[inline]
pub fn tempdir() -> TempDir {
    TempDir::default()
}

pub fn fake_krate(name: &str, num_versions: u8) -> IndexKrate {
    assert!(num_versions > 0);
    let mut version = semver::Version::new(0, 0, 0);
    let mut versions = Vec::new();

    for v in 0..num_versions {
        match v % 3 {
            0 => version.patch += 1,
            1 => {
                version.patch = 0;
                version.minor += 1;
            }
            2 => {
                version.patch = 0;
                version.minor = 0;
                version.major += 1;
            }
            _ => unreachable!(),
        }

        let iv = tame_index::IndexVersion::fake(name, version.to_string());
        versions.push(iv);
    }

    IndexKrate { versions }
}