feat: load config file
Some checks failed
Test / build (map[name:nightly]) (push) Successful in 2m51s
Test / build (map[name:stable]) (push) Successful in 2m29s
Release Please / Release-plz (push) Failing after 27s

This commit is contained in:
Paul Campbell 2024-11-29 19:19:36 +00:00
parent c8ff4b2694
commit 70aa002048
5 changed files with 58 additions and 7 deletions

View file

@ -7,19 +7,22 @@ edition = "2021"
#bytes = "1.9"
clap = { version = "4.5", features = ["cargo", "derive"] }
color-eyre = "0.6"
#derive_more = { version = "1.0", features = [
# "as_ref",
# "constructor",
derive_more = { version = "1.0", features = [
"as_ref",
"constructor",
# "deref",
# "display",
# "from",
#] }
# "from",
#] }
#serde = { version = "1.0", features = ["derive"] }
"from",
] }
# kxio = {path = "../kxio/"}
kxio = "3.2"
#serde = { version = "1.0", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
#serde_json = "1.0"
tokio = { version = "1.41", features = ["full"] }
#toml = "0.8"
toml = "0.8"
#tracing= "0.1"
#tracing-subscriber = "0.3"

View file

@ -5,6 +5,7 @@ build:
cargo fmt
cargo fmt --check
cargo clippy
cargo machete
# cargo build
cargo tarpaulin --skip-clean --out Html
# cargo test

24
src/config.rs Normal file
View file

@ -0,0 +1,24 @@
//
use color_eyre::Result;
use crate::{f, s, Ctx, NAME};
#[derive(
Clone,
Debug,
derive_more::From,
PartialEq,
Eq,
PartialOrd,
Ord,
derive_more::AsRef,
serde::Deserialize,
)]
pub struct AppConfig {}
impl AppConfig {
pub fn load(ctx: &Ctx) -> Result<Self> {
let file = ctx.fs.base().join(f!("{NAME}.toml"));
let str = ctx.fs.file(&file).reader()?;
Ok(toml::from_str(s!(str).as_str())?)
}
}

View file

@ -4,6 +4,7 @@ use std::path::PathBuf;
use clap::Parser;
use kxio::{fs::FileSystem, net::Net};
mod config;
mod init;
mod macros;
mod template;
@ -45,6 +46,7 @@ pub async fn run(ctx: Ctx) -> color_eyre::Result<()> {
color_eyre::install()?;
let commands = Commands::parse();
let _cfg = config::AppConfig::load(&ctx)?;
match commands.command {
Command::Init => init::run(&ctx)?,
Command::Check => todo!("check"),

View file

@ -4,6 +4,27 @@
use assert2::let_assert;
use crate::{config::AppConfig, f, NAME};
mod config {
use super::*;
#[test]
fn load_config() {
//given
let fs = given::a_filesystem();
let file = fs.base().join(f!("{}.toml", NAME));
fs.file(&file).write("").expect("write file");
let ctx = given::a_context(fs.as_real(), given::a_network().into());
//when
let_assert!(Ok(config) = AppConfig::load(&ctx));
//then
assert_eq!(config, AppConfig {});
}
}
mod init {
use test_log::test;