use OrderMap for crates list

This commit is contained in:
Sam Rijs 2018-02-11 16:17:12 +11:00
parent 9421c09a2c
commit 19f97f917e
4 changed files with 9 additions and 6 deletions

View file

@ -11,6 +11,7 @@ hyper = "0.11.15"
hyper-tls = "0.1.2"
lazy_static = "1.0.0"
maud = "0.17.2"
ordermap = "0.4.0"
route-recognizer = "0.1.12"
semver = { version = "0.9.0", features = ["serde"] }
serde = "1.0.27"

View file

@ -2,12 +2,13 @@ use std::collections::HashMap;
use std::path::PathBuf;
use failure::Error;
use ordermap::map::OrderMap;
use ::parsers::manifest::parse_manifest_toml;
use ::models::crates::{CrateDeps, CrateName, CrateManifest};
pub struct ManifestCrawlerOutput {
pub crates: Vec<(CrateName, CrateDeps)>
pub crates: OrderMap<CrateName, CrateDeps>
}
pub struct ManifestCrawlerStepOutput {
@ -16,14 +17,14 @@ pub struct ManifestCrawlerStepOutput {
pub struct ManifestCrawler {
manifests: HashMap<PathBuf, CrateManifest>,
leaf_crates: Vec<(CrateName, CrateDeps)>
leaf_crates: OrderMap<CrateName, CrateDeps>
}
impl ManifestCrawler {
pub fn new() -> ManifestCrawler {
ManifestCrawler {
manifests: HashMap::new(),
leaf_crates: vec![]
leaf_crates: OrderMap::new()
}
}
@ -37,7 +38,7 @@ impl ManifestCrawler {
match manifest {
CrateManifest::Package(name, deps) => {
self.leaf_crates.push((name, deps));
self.leaf_crates.insert(name, deps);
},
CrateManifest::Workspace { members } => {
for mut member in members {
@ -45,7 +46,7 @@ impl ManifestCrawler {
}
},
CrateManifest::Mixed { name, deps, members } => {
self.leaf_crates.push((name, deps));
self.leaf_crates.insert(name, deps);
for mut member in members {
output.paths_of_interest.push(path.clone().join(member));
}

View file

@ -10,6 +10,7 @@ extern crate hyper;
extern crate hyper_tls;
#[macro_use] extern crate lazy_static;
extern crate maud;
extern crate ordermap;
extern crate route_recognizer;
extern crate semver;
#[macro_use] extern crate serde_derive;

View file

@ -6,7 +6,7 @@ use std::str::FromStr;
use failure::Error;
use semver::{Version, VersionReq};
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct CrateName(String);
impl Into<String> for CrateName {