aboutsummaryrefslogtreecommitdiffstats
path: root/src/config.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-10-27 20:51:54 -0400
committerJesse Luehrs <doy@tozt.net>2021-10-27 21:02:21 -0400
commit7b95f7b9d84c44ca273c1a1ce7ab62925d4a5def (patch)
tree5a61f1f41fbe2aeeb2520d83bd292123d7a84fc9 /src/config.rs
parent9acabc3a7497e3eb3536992212d34f77a649ae16 (diff)
downloadrbw-7b95f7b9d84c44ca273c1a1ce7ab62925d4a5def.tar.gz
rbw-7b95f7b9d84c44ca273c1a1ce7ab62925d4a5def.zip
use a persistent device id
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/config.rs b/src/config.rs
index c6e0787..bbc39f7 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -12,6 +12,8 @@ pub struct Config {
pub lock_timeout: u64,
#[serde(default = "default_pinentry")]
pub pinentry: String,
+ #[serde(default = "stub_device_id")]
+ pub device_id: String,
}
impl Default for Config {
@@ -22,6 +24,7 @@ impl Default for Config {
identity_url: Default::default(),
lock_timeout: default_lock_timeout(),
pinentry: default_pinentry(),
+ device_id: default_device_id(),
}
}
}
@@ -34,6 +37,14 @@ pub fn default_pinentry() -> String {
"pinentry".to_string()
}
+fn default_device_id() -> String {
+ uuid::Uuid::new_v4().to_hyphenated().to_string()
+}
+
+fn stub_device_id() -> String {
+ String::from("fix")
+}
+
impl Config {
pub fn new() -> Self {
Self::default()
@@ -116,10 +127,14 @@ impl Config {
}
pub fn validate() -> Result<()> {
- let config = Self::load()?;
+ let mut config = Self::load()?;
if config.email.is_none() {
return Err(Error::ConfigMissingEmail);
}
+ if config.device_id == stub_device_id() {
+ config.device_id = default_device_id();
+ config.save()?;
+ }
Ok(())
}