[][src]Struct cargo_update::ops::GitRepoPackage

pub struct GitRepoPackage {
    pub name: String,
    pub url: String,
    pub branch: Option<String>,
    pub id: Oid,
    pub newest_id: Option<Oid>,
}

A representation of a package a remote git repository.

The newest commit is pulled from that repo via pull_version().

The parse() function parses the format used in $HOME/.cargo/.crates.toml.

Examples

let package_s = "alacritty 0.1.0 (git+https://github.com/jwilm/alacritty#eb231b3e70b87875df4bdd1974d5e94704024d70)";
let mut package = GitRepoPackage::parse(package_s).unwrap();
assert_eq!(package,
           GitRepoPackage {
               name: "alacritty".to_string(),
               url: "https://github.com/jwilm/alacritty".to_string(),
               branch: None,
               id: git2::Oid::from_str("eb231b3e70b87875df4bdd1974d5e94704024d70").unwrap(),
               newest_id: None,
           });

package.pull_version(&registry_tree, &registry);
assert!(package.newest_id.is_some());

Fields

name: String

The package's name.

url: String

The remote git repo URL.

branch: Option<String>

The installed branch, or None for default.

id: Oid

The package's locally installed version's object hash.

newest_id: Option<Oid>

The latest version of the package vailable at the main crates.io repository.

None by default, acquire via RegistryPackage::pull_version().

Methods

impl GitRepoPackage[src]

pub fn parse(what: &str) -> Option<GitRepoPackage>[src]

Try to decypher a package descriptor into a GitRepoPackage.

Will return None if:

  • the given package descriptor is invalid, or
  • the package descriptor is not from a git repository.

In the returned instance, newest_version is always None, get it via GitRepoPackage::pull_version().

Examples

Remote git repo packages:

let package_s = "alacritty 0.1.0 (git+https://github.com/jwilm/alacritty#eb231b3e70b87875df4bdd1974d5e94704024d70)";
assert_eq!(GitRepoPackage::parse(package_s).unwrap(),
           GitRepoPackage {
               name: "alacritty".to_string(),
               url: "https://github.com/jwilm/alacritty".to_string(),
               branch: None,
               id: git2::Oid::from_str("eb231b3e70b87875df4bdd1974d5e94704024d70").unwrap(),
               newest_id: None,
           });

let package_s = "chattium-oxide-client 0.1.0 \
                 (git+https://github.com/nabijaczleweli/chattium-oxide-client\
                      ?branch=master#108a7b94f0e0dcb2a875f70fc0459d5a682df14c)";
assert_eq!(GitRepoPackage::parse(package_s).unwrap(),
           GitRepoPackage {
               name: "chattium-oxide-client".to_string(),
               url: "https://github.com/nabijaczleweli/chattium-oxide-client".to_string(),
               branch: Some("master".to_string()),
               id: git2::Oid::from_str("108a7b94f0e0dcb2a875f70fc0459d5a682df14c").unwrap(),
               newest_id: None,
           });

Main repository package:

let package_s = "racer 1.2.10 (registry+https://github.com/rust-lang/crates.io-index)";
assert!(GitRepoPackage::parse(package_s).is_none());

pub fn pull_version<Pt: AsRef<Path>, Pg: AsRef<Path>>(
    &mut self,
    temp_dir: Pt,
    git_db_dir: Pg,
    http_proxy: Option<&str>
)
[src]

Clone the repo and check what the latest commit's hash is.

pub fn needs_update(&self) -> bool[src]

Check whether this package needs to be installed

Examples

assert!(GitRepoPackage {
            name: "alacritty".to_string(),
            url: "https://github.com/jwilm/alacritty".to_string(),
            branch: None,
            id: git2::Oid::from_str("eb231b3e70b87875df4bdd1974d5e94704024d70").unwrap(),
            newest_id: Some(git2::Oid::from_str("5f7885749c4d7e48869b1fc0be4d430601cdbbfa").unwrap()),
        }.needs_update());
assert!(!GitRepoPackage {
            name: "alacritty".to_string(),
            url: "https://github.com/jwilm/alacritty".to_string(),
            branch: None,
            id: git2::Oid::from_str("5f7885749c4d7e48869b1fc0be4d430601cdbbfa").unwrap(),
            newest_id: Some(git2::Oid::from_str("5f7885749c4d7e48869b1fc0be4d430601cdbbfa").unwrap()),
        }.needs_update());

Trait Implementations

impl Clone for GitRepoPackage[src]

impl Debug for GitRepoPackage[src]

impl Eq for GitRepoPackage[src]

impl Hash for GitRepoPackage[src]

impl PartialEq<GitRepoPackage> for GitRepoPackage[src]

impl StructuralEq for GitRepoPackage[src]

impl StructuralPartialEq for GitRepoPackage[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.