diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a04eb0e66f205def6556571b18eaf85f9a6e1d33..5c20baabeb80b06a88e1db840f0f182d56c89bfd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -69,7 +69,7 @@ fmt: <<: *rust_nightly_env stage: fmt before_script: - - cargo install --force rustfmt-nightly + - rustup component add rustfmt-preview --toolchain nightly script: - cargo fmt -- --check allow_failure: true diff --git a/Cargo.lock b/Cargo.lock index eca11a63ad1ef13f9383bc42f8bceac36e0f7bfa..9d5feab3c0c49df44bdc1e7d604f4be71e507561 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -166,6 +166,15 @@ dependencies = [ "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "dirs" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "dtoa" version = "0.4.2" @@ -175,6 +184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "duniter-blockchain" version = "0.1.0-a0.1" dependencies = [ + "dirs 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "duniter-conf 0.1.0-a0.1", "duniter-crypto 0.2.0-a0.1", "duniter-dal 0.1.0-a0.1", @@ -199,6 +209,7 @@ dependencies = [ name = "duniter-conf" version = "0.1.0-a0.1" dependencies = [ + "dirs 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "duniter-crypto 0.2.0-a0.1", "duniter-module 0.1.0-a0.1", "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -212,6 +223,7 @@ name = "duniter-core" version = "0.1.0-a0.1" dependencies = [ "clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "duniter-blockchain 0.1.0-a0.1", "duniter-conf 0.1.0-a0.1", "duniter-crypto 0.2.0-a0.1", @@ -1134,6 +1146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" +"checksum dirs 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "37a76dd8b997af7107d0bb69d43903cf37153a18266f8b3fdb9911f28efb5444" "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" "checksum failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "934799b6c1de475a012a02dab0ace1ace43789ee4b99bcfbf1a2e3e8ced5de82" diff --git a/blockchain/Cargo.toml b/blockchain/Cargo.toml index dd30659f14e06409c5d9c924e5e5261617c24661..44ba92d6d331c74c010fbdc6c94ce9b457cc6f78 100644 --- a/blockchain/Cargo.toml +++ b/blockchain/Cargo.toml @@ -9,6 +9,7 @@ license = "AGPL-3.0" path = "lib.rs" [dependencies] +dirs = "1.0.2" duniter-conf = { path = "../conf" } duniter-crypto = { path = "../crypto" } duniter-dal = { path = "../dal" } diff --git a/blockchain/lib.rs b/blockchain/lib.rs index af5544074fbaa34a2d9fe106b084221c87bf59f8..40d256276c6decefe5a6839f39192d95fdfceb64 100644 --- a/blockchain/lib.rs +++ b/blockchain/lib.rs @@ -16,16 +16,26 @@ //! Module managing the Duniter blockchain. #![cfg_attr(feature = "strict", deny(warnings))] -#![cfg_attr(feature = "cargo-clippy", allow(unused_collect, duration_subsec))] +#![cfg_attr( + feature = "cargo-clippy", + allow(unused_collect, duration_subsec) +)] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] #[macro_use] extern crate log; +extern crate dirs; extern crate duniter_conf; extern crate duniter_crypto; extern crate duniter_dal; @@ -47,7 +57,6 @@ mod sync; mod ts_parsers; use std::collections::HashMap; -use std::env; use std::fmt::Debug; use std::ops::Deref; use std::path::PathBuf; @@ -204,11 +213,11 @@ impl BlockchainModule { verif_inner_hash: bool, ) { // get db_ts_path - let mut db_ts_path = match env::home_dir() { + let mut db_ts_path = match dirs::config_dir() { Some(path) => path, - None => panic!("Impossible to get your home dir!"), + None => panic!("Impossible to get user config directory !"), }; - db_ts_path.push(".config/duniter/"); + db_ts_path.push("duniter/"); db_ts_path.push(ts_profile); db_ts_path.push("duniter.db"); if !db_ts_path.as_path().exists() { diff --git a/conf/Cargo.toml b/conf/Cargo.toml index f5482419e05aa1d4356cfea52f9d4754611ccbbc..12e9ed3462894553001895bd11fcf65c8023d663 100644 --- a/conf/Cargo.toml +++ b/conf/Cargo.toml @@ -13,6 +13,7 @@ rand = "0.4.*" serde = "1.0.*" serde_derive = "1.0.*" serde_json = "1.0.*" +dirs = "1.0.2" duniter-crypto = { path = "../crypto" } duniter-module = { path = "../module" } diff --git a/conf/lib.rs b/conf/lib.rs index eed6f9218623e2a0600a39a3f98783b226925637..7ebf86f278e7d2eb19d43fd89d21dc18b257d291 100644 --- a/conf/lib.rs +++ b/conf/lib.rs @@ -18,8 +18,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] @@ -28,6 +34,7 @@ extern crate serde_derive; #[macro_use] extern crate serde_json; +extern crate dirs; extern crate duniter_crypto; extern crate duniter_module; extern crate rand; @@ -37,7 +44,6 @@ use duniter_module::{Currency, DuniterConf, ModuleId, RequiredKeys, RequiredKeys use rand::Rng; use serde::ser::{Serialize, SerializeStruct, Serializer}; use std::collections::HashSet; -use std::env; use std::fs; use std::fs::File; use std::io::prelude::*; @@ -271,14 +277,10 @@ pub fn datas_path(profile: &str, currency: &Currency) -> PathBuf { /// Returns the path to the folder containing the user data of the running profile pub fn get_profile_path(profile: &str) -> PathBuf { // Define and create datas directory if not exist - let mut profile_path = match env::home_dir() { + let mut profile_path = match dirs::config_dir() { Some(path) => path, - None => panic!("Impossible to get your home dir !"), + None => panic!("Impossible to get user config directory !"), }; - profile_path.push(".config/"); - if !profile_path.as_path().exists() { - fs::create_dir(profile_path.as_path()).expect("Impossible to create ~/.config dir !"); - } profile_path.push(USER_DATAS_FOLDER); if !profile_path.as_path().exists() { fs::create_dir(profile_path.as_path()).unwrap_or_else(|_| { @@ -425,11 +427,10 @@ pub fn get_blockchain_db_path(profile: &str, currency: &Currency) -> PathBuf { /// Returns the path to the binary file containing the state of the web of trust pub fn get_wot_path(profile: String, currency: &Currency) -> PathBuf { - let mut wot_path = match env::home_dir() { + let mut wot_path = match dirs::config_dir() { Some(path) => path, None => panic!("Impossible to get your home dir!"), }; - wot_path.push(".config/"); wot_path.push(USER_DATAS_FOLDER); wot_path.push(profile); wot_path.push(currency.to_string()); diff --git a/core/Cargo.toml b/core/Cargo.toml index 087eb9f519631780a180b9afc45c1872abefb8db..550ca8c00b9b808ddf00f82942006c66f00aa3c9 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -10,6 +10,7 @@ path = "lib.rs" [dependencies] clap = {version = "2.31.2", features = ["yaml"]} +dirs = "1.0.2" duniter-blockchain = { path = "../blockchain" } duniter-conf = { path = "../conf" } duniter-crypto = { path = "../crypto" } diff --git a/core/lib.rs b/core/lib.rs index 91f98d8ae8a363bc226f9af9a80c0965b0f7d713..c4e2d0911c24e24f0b46692118efa8f61baecec2 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -18,8 +18,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(implicit_hasher))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] @@ -29,6 +35,7 @@ extern crate clap; #[macro_use] extern crate log; +extern crate dirs; extern crate duniter_blockchain; extern crate duniter_conf; extern crate duniter_crypto; @@ -52,7 +59,6 @@ use duniter_network::{NetworkModule, SyncEndpoint}; use log::Level; use simplelog::*; use std::collections::HashSet; -use std::env; use std::fs; use std::fs::{File, OpenOptions}; use std::sync::mpsc; @@ -277,9 +283,9 @@ impl DuniterCore<DuRsConf> { } None } else if let Some(matches) = cli_args.subcommand_matches("reset") { - let mut profile_path = match env::home_dir() { + let mut profile_path = match dirs::config_dir() { Some(path) => path, - None => panic!("Impossible to get your home dir !"), + None => panic!("Impossible to get user config directory !"), }; profile_path.push(".config"); profile_path.push(duniter_conf::get_user_datas_folder()); @@ -679,9 +685,9 @@ pub fn dbex<DC: DuniterConf>(profile: &str, conf: &DC, csv: bool, query: &DBExQu /// Initialize logger pub fn init_logger(profile: &str, soft_name: &'static str, cli_args: &ArgMatches) { // Get datas folder path - let mut log_file_path = match env::home_dir() { + let mut log_file_path = match dirs::config_dir() { Some(path) => path, - None => panic!("Fatal error : Impossible to get your home dir!"), + None => panic!("Fatal error : Impossible to get user config directory"), }; log_file_path.push(".config"); if !log_file_path.as_path().exists() { diff --git a/crypto/lib.rs b/crypto/lib.rs index 5f43cce266558af94012e3305a84eed8dc2eb16d..c05b5fc79217ec29b634dc90fa6a851124c2d55a 100644 --- a/crypto/lib.rs +++ b/crypto/lib.rs @@ -17,8 +17,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/dal/dal_requests.rs b/dal/dal_requests.rs index 366a5cb570da1c818ff3ef8648c3d52f6a6f78a5..8f9e76c6fb28fddc3bd20f7fe17a3ad0a4df4283 100644 --- a/dal/dal_requests.rs +++ b/dal/dal_requests.rs @@ -80,7 +80,7 @@ pub enum DALResPendings { /// All pending identities without their pending certifications AllPendingIdentitiesWithoutCerts(HashMap<Hash, PendingIdtyDatas>), /// All pending datas for given pubkey - PendingWotDatasForPubkey(PendingIdtyDatas), + PendingWotDatasForPubkey(Box<PendingIdtyDatas>), } #[derive(Debug, Clone)] @@ -102,5 +102,5 @@ pub enum DALResponse { /// Response to a DALReqBlockchain request Blockchain(Box<DALResBlockchain>), /// Response to a DALReqPendings request - Pendings(ModuleReqFullId, DALResPendings), + Pendings(ModuleReqFullId, Box<DALResPendings>), } diff --git a/dal/lib.rs b/dal/lib.rs index b43899a7ea47df048a07c61eb9cb1c6e0f131cd4..6eba641596e485ac02e499cb3a981f3bfd747abf 100644 --- a/dal/lib.rs +++ b/dal/lib.rs @@ -19,8 +19,15 @@ #![cfg_attr(feature = "cargo-clippy", allow(implicit_hasher))] #![cfg_attr(feature = "exp", allow(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, + unused_qualifications )] #[macro_use] diff --git a/dal/tools.rs b/dal/tools.rs index bc65497aeb210ae1cfda804fa03433ce1658309e..15cad56eb218305c1c486a3fe19a201bf8a2db6f 100644 --- a/dal/tools.rs +++ b/dal/tools.rs @@ -52,24 +52,22 @@ pub fn get_sentry_requirement(members_count: usize, step_max: u32) -> u32 { 9 } else if members_count < 100_001 { 10 - } else if members_count < 100_001 { - 11 } else if members_count < 161_052 { - 12 + 11 } else if members_count < 248_833 { - 13 + 12 } else if members_count < 371_294 { - 14 + 13 } else if members_count < 537_825 { - 15 + 14 } else if members_count < 759_376 { - 16 + 15 } else if members_count < 1_048_577 { - 17 + 16 } else if members_count < 1_419_858 { - 18 + 17 } else if members_count < 1_889_569 { - 19 + 18 } else { panic!( "get_sentry_requirement not define for members_count greater than 1_889_569 !" diff --git a/documents/lib.rs b/documents/lib.rs index 1ea9914223164135b15c3b245f0ad71d2135ff89..39f8166116c646e562312b2240d88e38df17e1a1 100644 --- a/documents/lib.rs +++ b/documents/lib.rs @@ -18,8 +18,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(unused_collect))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/message/lib.rs b/message/lib.rs index 1b89f4dc38a45067b16333d1e5b4ace3e468a11f..d95c506b5ab2a7b38c1291c0104ad22c17d48ada 100644 --- a/message/lib.rs +++ b/message/lib.rs @@ -18,8 +18,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/module/lib.rs b/module/lib.rs index bd332484d3c2d6d6b519449ee321aa8358a935c1..a11db06413dd4726088e093f385be59ba634601e 100644 --- a/module/lib.rs +++ b/module/lib.rs @@ -17,9 +17,16 @@ //! as well as the DuniterModule trait that all modules must implement. #![cfg_attr(feature = "strict", deny(warnings))] +#![cfg_attr(feature = "cargo-clippy", allow(implicit_hasher))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/network/lib.rs b/network/lib.rs index 466f4476365ee92bba234d180f80240d51359130..41c066dae134aed4aaf310ad84f83844bce09b75 100644 --- a/network/lib.rs +++ b/network/lib.rs @@ -17,8 +17,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/src/main.rs b/src/main.rs index eacbede7127d6d3001943d637eac47312c4f8c02..f275ed88608829d3a46d2b772e71e0df34f5ba37 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,8 +17,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/tui/lib.rs b/tui/lib.rs index 29e0013dd2d717f5690cc2d760108e617d0e62b1..2c00a948760bef9da8bf28b2868f163346a56ef2 100644 --- a/tui/lib.rs +++ b/tui/lib.rs @@ -18,8 +18,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/wotb/lib.rs b/wotb/lib.rs index a68352c5b6be9ee1fe94e6bcacead24f6872ae34..3926037bfc22061f3f942d610f0fc797807c2337 100644 --- a/wotb/lib.rs +++ b/wotb/lib.rs @@ -28,8 +28,14 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, - trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces, unused_qualifications )] diff --git a/ws2p/lib.rs b/ws2p/lib.rs index 87ccffe675b9d31326eb1fd753e4da216468676d..f659c1071061a5dba83da64070d2a712ce7f9a9b 100644 --- a/ws2p/lib.rs +++ b/ws2p/lib.rs @@ -18,8 +18,13 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(cyclomatic_complexity))] #![deny( - missing_debug_implementations, missing_copy_implementations, trivial_casts, unsafe_code, - unstable_features, unused_import_braces, unused_qualifications + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + unsafe_code, + unstable_features, + unused_import_braces, + unused_qualifications )] #![recursion_limit = "256"]