From eb34adc45dec493023fe5af12b9105fe6189e422 Mon Sep 17 00:00:00 2001 From: Daniel Karzel Date: Fri, 29 Jan 2021 11:31:34 +1100 Subject: [PATCH] Remove config and fs from the lib The settings module has to be part of the lib because settings are used in the test as well. Config is only used in main, thus it should not leak into the lib. Note that this allows to remove the dead_code allowance in fs. --- swap/src/config.rs | 11 +++++++++-- swap/src/fs.rs | 3 --- swap/src/lib.rs | 2 -- swap/src/main.rs | 7 ++++--- swap/src/settings.rs | 16 ++++++---------- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/swap/src/config.rs b/swap/src/config.rs index 4eb21ceb..18a713a3 100644 --- a/swap/src/config.rs +++ b/swap/src/config.rs @@ -1,4 +1,4 @@ -use crate::fs::ensure_directory_exists; +use crate::{fs::ensure_directory_exists, settings::Settings}; use anyhow::{Context, Result}; use config::{Config, ConfigError}; use dialoguer::{theme::ColorfulTheme, Input}; @@ -17,7 +17,6 @@ const DEFAULT_BITCOIND_TESTNET_URL: &str = "http://127.0.0.1:18332"; const DEFAULT_MONERO_WALLET_RPC_TESTNET_URL: &str = "http://127.0.0.1:38083/json_rpc"; #[derive(Clone, Debug, serde::Serialize, serde::Deserialize, PartialEq)] -#[serde(deny_unknown_fields)] pub struct File { pub bitcoin: Bitcoin, pub monero: Monero, @@ -117,6 +116,14 @@ pub fn query_user_for_initial_testnet_config() -> Result { }) } +pub fn settings_from_config_file_and_defaults(config: File) -> Settings { + Settings::testnet( + config.bitcoin.bitcoind_url, + config.bitcoin.wallet_name, + config.monero.wallet_rpc_url, + ) +} + #[cfg(test)] mod tests { use super::*; diff --git a/swap/src/fs.rs b/swap/src/fs.rs index d67caf75..c0de4ec0 100644 --- a/swap/src/fs.rs +++ b/swap/src/fs.rs @@ -5,12 +5,10 @@ use std::path::{Path, PathBuf}; /// This is to store the configuration and seed files // Linux: /home//.config/xmr-btc-swap/ // OSX: /Users//Library/Preferences/xmr-btc-swap/ -#[allow(dead_code)] fn default_config_dir() -> Option { ProjectDirs::from("", "", "xmr-btc-swap").map(|proj_dirs| proj_dirs.config_dir().to_path_buf()) } -#[allow(dead_code)] pub fn default_config_path() -> anyhow::Result { default_config_dir() .map(|dir| Path::join(&dir, "config.toml")) @@ -20,7 +18,6 @@ pub fn default_config_path() -> anyhow::Result { /// This is to store the DB // Linux: /home//.local/share/nectar/ // OSX: /Users//Library/Application Support/nectar/ -#[allow(dead_code)] pub fn default_data_dir() -> Option { ProjectDirs::from("", "", "nectar").map(|proj_dirs| proj_dirs.data_dir().to_path_buf()) } diff --git a/swap/src/lib.rs b/swap/src/lib.rs index 22b7c4a5..dd7d02c3 100644 --- a/swap/src/lib.rs +++ b/swap/src/lib.rs @@ -17,7 +17,6 @@ )] pub mod bitcoin; -pub mod config; pub mod database; pub mod monero; pub mod network; @@ -26,5 +25,4 @@ pub mod seed; pub mod settings; pub mod trace; -mod fs; mod serde_peer_id; diff --git a/swap/src/main.rs b/swap/src/main.rs index 7d2f6ec7..98b4f1a5 100644 --- a/swap/src/main.rs +++ b/swap/src/main.rs @@ -15,15 +15,16 @@ use crate::{ cli::{Command, Options, Resume}, config::{ - initial_setup, query_user_for_initial_testnet_config, read_config, ConfigNotInitialized, + initial_setup, query_user_for_initial_testnet_config, read_config, + settings_from_config_file_and_defaults, ConfigNotInitialized, }, + settings::Settings, }; use anyhow::{Context, Result}; use database::Database; use fs::{default_config_path, default_data_dir}; use prettytable::{row, Table}; use protocol::{alice, bob, bob::Builder, SwapAmounts}; -use settings::Settings; use std::{path::PathBuf, sync::Arc}; use structopt::StructOpt; use trace::init_tracing; @@ -229,7 +230,7 @@ fn init_settings(config_path: Option) -> Result { } }; - let settings = Settings::from_config_file_and_defaults(config); + let settings = settings_from_config_file_and_defaults(config); Ok(settings) } diff --git a/swap/src/settings.rs b/swap/src/settings.rs index dee7b84d..74571078 100644 --- a/swap/src/settings.rs +++ b/swap/src/settings.rs @@ -1,4 +1,4 @@ -use crate::{bitcoin::Timelock, config::File}; +use crate::bitcoin::Timelock; use conquer_once::Lazy; use std::time::Duration; use url::Url; @@ -9,15 +9,11 @@ pub struct Settings { } impl Settings { - pub fn from_config_file_and_defaults(config: File) -> Self { - Settings::testnet( - config.bitcoin.bitcoind_url, - config.bitcoin.wallet_name, - config.monero.wallet_rpc_url, - ) - } - - fn testnet(bitcoind_url: Url, bitcoin_wallet_name: String, monero_wallet_rpc_url: Url) -> Self { + pub fn testnet( + bitcoind_url: Url, + bitcoin_wallet_name: String, + monero_wallet_rpc_url: Url, + ) -> Self { Self { wallets: Wallets::testnet(bitcoind_url, bitcoin_wallet_name, monero_wallet_rpc_url), protocol: Protocol::testnet(),