summaryrefslogtreecommitdiffstats
path: root/src/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/config.rs b/src/config.rs
index 79cbd74..3102a87 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -1,5 +1,6 @@
use directories::ProjectDirs;
use serde::{Deserialize, Serialize};
+use std::fmt;
use std::fs;
use std::io::Write;
use std::path::PathBuf;
@@ -8,12 +9,37 @@ use crate::error::{Error, Result};
use crate::utils;
#[derive(Deserialize, Serialize, Debug, Clone)]
+#[serde(rename_all = "lowercase")] // TODO test this
+pub enum SearchEngine {
+ DuckDuckGo,
+ //Google,
+ StackExchange,
+}
+
+#[derive(Deserialize, Serialize, Debug, Clone)]
+#[serde(default)]
pub struct Config {
pub api_key: Option<String>,
pub limit: u16,
pub lucky: bool,
pub sites: Vec<String>,
- pub duckduckgo: bool,
+ pub search_engine: SearchEngine,
+}
+
+impl fmt::Display for SearchEngine {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ let s = match &self {
+ SearchEngine::DuckDuckGo => "duckduckgo",
+ SearchEngine::StackExchange => "stackexchange",
+ };
+ write!(f, "{}", s)
+ }
+}
+
+impl Default for SearchEngine {
+ fn default() -> Self {
+ SearchEngine::DuckDuckGo
+ }
}
// TODO make a friender config file, like the colors.toml below
@@ -24,7 +50,7 @@ impl Default for Config {
limit: 20,
lucky: true,
sites: vec![String::from("stackoverflow")],
- duckduckgo: true,
+ search_engine: SearchEngine::default(),
}
}
}