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", "powerfmt",
] ]
[[package]]
name = "diff"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
[[package]] [[package]]
name = "dotenv" name = "dotenv"
version = "0.15.0" version = "0.15.0"
@ -464,6 +470,7 @@ dependencies = [
"dotenv", "dotenv",
"gitea-rs", "gitea-rs",
"octocrab", "octocrab",
"pretty_assertions",
"serde", "serde",
"tokio", "tokio",
"toml", "toml",
@ -1075,6 +1082,16 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 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]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.86" version = "1.0.86"
@ -2151,6 +2168,12 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "yansi"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
[[package]] [[package]]
name = "zeroize" name = "zeroize"
version = "1.8.1" 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" } gitea-rs = { git = "https://git.front.kjuulh.io/kjuulh/gitea-rs", version = "1.22.1" }
url = "2.5.2" url = "2.5.2"
octocrab = "0.39.0" 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 anyhow::Context;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq)] #[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct Config { pub struct Config {
#[serde(default)]
pub settings: Settings,
#[serde(default)] #[serde(default)]
pub providers: Providers, 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)] #[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
pub struct Providers { pub struct Providers {
#[serde(default)] #[serde(default)]
@ -149,10 +163,13 @@ mod test {
fn test_can_parse_config() -> anyhow::Result<()> { fn test_can_parse_config() -> anyhow::Result<()> {
let content = r#" let content = r#"
[[providers.github]] [[providers.github]]
current_user = "kjuulh"
access_token = "some-token"
users = ["kjuulh"] users = ["kjuulh"]
organisations = ["lunarway"] organisations = ["lunarway"]
[[providers.github]] [[providers.github]]
access_token = { env = "something" }
users = ["other"] users = ["other"]
organisations = ["org"] organisations = ["org"]
@ -173,7 +190,7 @@ mod test {
let config = Config::from_string(content)?; let config = Config::from_string(content)?;
assert_eq!( pretty_assertions::assert_eq!(
Config { Config {
providers: Providers { providers: Providers {
github: vec![ github: vec![
@ -217,6 +234,11 @@ mod test {
current_user: None current_user: None
}, },
] ]
},
settings: Settings {
cache: Cache {
location: Some(PathBuf::from("$HOME/.cache/gitnow/"))
}
} }
}, },
config config
@ -238,6 +260,9 @@ mod test {
providers: Providers { providers: Providers {
github: vec![], github: vec![],
gitea: vec![] gitea: vec![]
},
settings: Settings {
cache: Cache { location: None }
} }
}, },
config config