diff --git a/Cargo.lock b/Cargo.lock index 09a50ff8..0e271bc6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,21 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "addr2line" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "ansi_term" version = "0.12.1" @@ -26,6 +11,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "anyhow" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" + [[package]] name = "atty" version = "0.2.14" @@ -37,39 +28,12 @@ dependencies = [ "winapi", ] -[[package]] -name = "backtrace" -version = "0.3.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "cc" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - [[package]] name = "clap" version = "2.34.0" @@ -89,42 +53,15 @@ dependencies = [ name = "crypto-ecosystems" version = "0.2.0" dependencies = [ - "failure", + "anyhow", "glob", "serde", "serde_json", "structopt", + "thiserror", "toml", ] -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "gimli" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" - [[package]] name = "glob" version = "0.3.0" @@ -167,30 +104,6 @@ version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "miniz_oxide" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" -dependencies = [ - "adler", -] - -[[package]] -name = "object" -version = "0.28.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" -dependencies = [ - "memchr", -] - [[package]] name = "proc-macro-error" version = "1.0.4" @@ -233,12 +146,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - [[package]] name = "ryu" version = "1.0.10" @@ -317,18 +224,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -338,6 +233,26 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "thiserror" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "toml" version = "0.5.9" @@ -365,12 +280,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" -[[package]] -name = "unicode-xid" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" - [[package]] name = "vec_map" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 2c5ab5e8..ed89d50b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,9 +5,10 @@ authors = ["Curtis Spencer"] edition = "2021" [dependencies] -toml = "0.5.9" +anyhow = "1.0" glob = "0.3.0" -failure = "0.1.8" serde = { version = "1.0.137", features = ["derive"] } serde_json = "1.0.81" structopt = "0.3.26" +thiserror = "1.0.31" +toml = "0.5.9" diff --git a/src/main.rs b/src/main.rs index 076f4e1a..90d4c738 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use failure::{Fail, Fallible}; +use anyhow::Result; use glob::glob; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; @@ -6,8 +6,7 @@ use std::fmt::{Display, Formatter}; use std::fs::{read_to_string, File}; use std::path::{Path, PathBuf}; use structopt::StructOpt; - -type Result = std::result::Result; +use thiserror::Error; #[derive(Debug, StructOpt)] #[structopt(about = "Taxonomy of crypto open source repositories")] @@ -58,9 +57,9 @@ struct Repo { pub tags: Option>, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] enum CEError { - #[fail(display = "Toml Parse Error in {}: {}", path, toml_error)] + #[error("Toml Parse Error in {path:?}: {toml_error:?}")] TomlParseError { path: String, toml_error: toml::de::Error, @@ -144,7 +143,7 @@ fn validate_ecosystems(ecosystem_map: &EcosystemMap) -> Vec { errors } -fn validate(data_path: String) -> Fallible<()> { +fn validate(data_path: String) -> Result<()> { let toml_files = get_toml_files(Path::new(&data_path))?; match parse_toml_files(&toml_files) { Ok(ecosystem_map) => { @@ -164,7 +163,7 @@ fn validate(data_path: String) -> Fallible<()> { Ok(()) } -fn export(data_path: String, output_path: String) -> Fallible<()> { +fn export(data_path: String, output_path: String) -> Result<()> { let toml_files = get_toml_files(Path::new(&data_path))?; match parse_toml_files(&toml_files) { Ok(ecosystem_map) => { @@ -182,7 +181,7 @@ fn export(data_path: String, output_path: String) -> Fallible<()> { Ok(()) } -fn main() -> Fallible<()> { +fn main() -> Result<()> { let args = Cli::from_args(); match args { Cli::Validate { data_path } => {