let deps = dependencies.clone().map(|deps| {
deps.iter().map(|(k,v)| {
+ // This can produce an invalid version, but it's temporary because this needs
+ // to be replaced with Dependency, not NameVer
Dependency::with_namever(&NameVer::new(k.clone(), v.clone()))
}).collect()
}).unwrap_or_else(|| vec!());
use {CargoResult};
#[allow(dead_code)]
-pub fn resolve(deps: &Vec<core::Dependency>, registry: &core::Registry) -> CargoResult<Vec<core::Package>> {
- let mut remaining = deps.clone();
+pub fn resolve(deps: &[core::Dependency], registry: &core::Registry) -> CargoResult<Vec<core::Package>> {
+ let mut remaining = Vec::from_slice(deps);
let mut resolve = HashMap::<&str, &core::Package>::new();
loop {
use util::config;
use util::config::{all_configs,ConfigValue};
use cargo_read_manifest = ops::cargo_read_manifest::read_manifest;
+use core::resolver::resolve;
+use core::package::PackageSet;
use core::Package;
use core::source::Source;
+use core::dependency::Dependency;
use sources::path::PathSource;
use {CargoError,ToCargoError,CargoResult};
pub fn compile() -> CargoResult<()> {
let options = try!(flags::<Options>());
- let manifest_bytes = try!(read_manifest(options.manifest_path));
+ let manifest = try!(cargo_read_manifest(options.manifest_path));
let configs = try!(all_configs(os::getcwd()));
let config_paths = configs.find(&~"paths").map(|v| v.clone()).unwrap_or_else(|| ConfigValue::new());
let source = PathSource::new(paths);
let names = try!(source.list());
try!(source.download(names.as_slice()));
- let packages = try!(source.get(names));
+
+ let deps: Vec<Dependency> = names.iter().map(|namever| {
+ Dependency::with_namever(namever)
+ }).collect();
+
+ let packages = try!(source.get(names.as_slice()));
+ let registry = PackageSet::new(packages.as_slice());
+
+ let resolved = resolve(deps.as_slice(), ®istry);
+ println!("Resolved: {}", resolved);
Ok(())
//call_rustc(~BufReader::new(manifest_bytes.as_slice()))
Ok(())
}
- fn get(&self, packages: Vec<NameVer>) -> CargoResult<Vec<Package>> {
+ fn get(&self, packages: &[NameVer]) -> CargoResult<Vec<Package>> {
Ok(self.paths.iter().filter_map(|path| {
match read_manifest(path) {
Ok(ref manifest) => Some(Package::from_manifest(manifest)),