feat: add settings config
All checks were successful
continuous-integration/drone/push Build is passing

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
Kasper Juul Hermansen 2024-09-14 15:21:49 +02:00
parent 6a0900e190
commit 1cc771be1e
Signed by: kjuulh
GPG Key ID: D85D7535F18F35FA
3 changed files with 53 additions and 2 deletions

23
Cargo.lock generated
View File

@ -260,6 +260,12 @@ dependencies = [
"powerfmt",
]
[[package]]
name = "diff"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
[[package]]
name = "dotenv"
version = "0.15.0"
@ -464,6 +470,7 @@ dependencies = [
"dotenv",
"gitea-rs",
"octocrab",
"pretty_assertions",
"serde",
"tokio",
"toml",
@ -1075,6 +1082,16 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "pretty_assertions"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
dependencies = [
"diff",
"yansi",
]
[[package]]
name = "proc-macro2"
version = "1.0.86"
@ -2151,6 +2168,12 @@ dependencies = [
"memchr",
]
[[package]]
name = "yansi"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
[[package]]
name = "zeroize"
version = "1.8.1"

View File

@ -20,3 +20,6 @@ toml = "0.8.19"
gitea-rs = { git = "https://git.front.kjuulh.io/kjuulh/gitea-rs", version = "1.22.1" }
url = "2.5.2"
octocrab = "0.39.0"
[dev-dependencies]
pretty_assertions = "1.4.0"

View File

@ -1,14 +1,28 @@
use std::path::Path;
use std::path::{Path, PathBuf};
use anyhow::Context;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct Config {
#[serde(default)]
pub settings: Settings,
#[serde(default)]
pub providers: Providers,
}
#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
pub struct Settings {
#[serde(default)]
cache: Cache,
}
#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
pub struct Cache {
location: Option<PathBuf>,
}
#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
pub struct Providers {
#[serde(default)]
@ -149,10 +163,13 @@ mod test {
fn test_can_parse_config() -> anyhow::Result<()> {
let content = r#"
[[providers.github]]
current_user = "kjuulh"
access_token = "some-token"
users = ["kjuulh"]
organisations = ["lunarway"]
[[providers.github]]
access_token = { env = "something" }
users = ["other"]
organisations = ["org"]
@ -173,7 +190,7 @@ mod test {
let config = Config::from_string(content)?;
assert_eq!(
pretty_assertions::assert_eq!(
Config {
providers: Providers {
github: vec![
@ -217,6 +234,11 @@ mod test {
current_user: None
},
]
},
settings: Settings {
cache: Cache {
location: Some(PathBuf::from("$HOME/.cache/gitnow/"))
}
}
},
config
@ -238,6 +260,9 @@ mod test {
providers: Providers {
github: vec![],
gitea: vec![]
},
settings: Settings {
cache: Cache { location: None }
}
},
config