Struct cargo_update::ops::GitRepoPackage
source · [−]pub struct GitRepoPackage {
pub name: String,
pub url: String,
pub branch: Option<String>,
pub id: Oid,
pub newest_id: Option<Oid>,
pub executables: Vec<String>,
}
Expand description
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, vec!["alacritty".to_string()]).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,
executables: vec!["alacritty".to_string()],
});
package.pull_version(®istry_tree, ®istry);
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 available at the main crates.io
repository.
None
by default, acquire via GitRepoPackage::pull_version()
.
executables: Vec<String>
Executables currently installed for this package.
Implementations
sourceimpl GitRepoPackage
impl GitRepoPackage
sourcepub fn parse(what: &str, executables: Vec<String>) -> Option<GitRepoPackage>
pub fn parse(what: &str, executables: Vec<String>) -> Option<GitRepoPackage>
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()
.
The executable list is used as-is.
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, vec!["alacritty".to_string()]).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,
executables: vec!["alacritty".to_string()],
});
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, vec!["chattium-oxide-client.exe".to_string()]).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,
executables: vec!["chattium-oxide-client.exe".to_string()],
});
Main repository package:
let package_s = "racer 1.2.10 (registry+https://github.com/rust-lang/crates.io-index)";
assert!(GitRepoPackage::parse(package_s, vec!["racer".to_string()]).is_none());
sourcepub fn pull_version<Pt: AsRef<Path>, Pg: AsRef<Path>>(
&mut self,
temp_dir: Pt,
git_db_dir: Pg,
http_proxy: Option<&str>,
fork_git: bool
)
pub fn pull_version<Pt: AsRef<Path>, Pg: AsRef<Path>>(
&mut self,
temp_dir: Pt,
git_db_dir: Pg,
http_proxy: Option<&str>,
fork_git: bool
)
Clone the repo and check what the latest commit’s hash is.
sourcepub fn needs_update(&self) -> bool
pub fn needs_update(&self) -> bool
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()),
executables: vec!["alacritty".to_string()],
}.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()),
executables: vec!["alacritty".to_string()],
}.needs_update());
Trait Implementations
sourceimpl Clone for GitRepoPackage
impl Clone for GitRepoPackage
sourcefn clone(&self) -> GitRepoPackage
fn clone(&self) -> GitRepoPackage
1.0.0 · sourceconst fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source
. Read more