]> git.proxmox.com Git - cargo.git/blob - src/cargo/ops/cargo_pkgid.rs
Remove leading `get_` prefix from accessors
[cargo.git] / src / cargo / ops / cargo_pkgid.rs
1 use ops;
2 use core::{Source, PackageIdSpec};
3 use sources::{PathSource};
4 use util::{CargoResult, human, Config};
5
6 pub fn pkgid(manifest_path: &Path,
7 spec: Option<&str>,
8 config: &Config) -> CargoResult<PackageIdSpec> {
9 let mut source = try!(PathSource::for_path(&manifest_path.dir_path(),
10 config));
11 try!(source.update());
12 let package = try!(source.root_package());
13
14 let lockfile = package.root().join("Cargo.lock");
15 let source_id = package.package_id().source_id();
16 let resolve = match try!(ops::load_lockfile(&lockfile, source_id)) {
17 Some(resolve) => resolve,
18 None => return Err(human("A Cargo.lock must exist for this command"))
19 };
20
21 let pkgid = match spec {
22 Some(spec) => try!(resolve.query(spec)),
23 None => package.package_id(),
24 };
25 Ok(PackageIdSpec::from_package_id(pkgid))
26 }