feat: load config file
This commit is contained in:
parent
c8ff4b2694
commit
70aa002048
5 changed files with 58 additions and 7 deletions
17
Cargo.toml
17
Cargo.toml
|
@ -7,19 +7,22 @@ edition = "2021"
|
||||||
#bytes = "1.9"
|
#bytes = "1.9"
|
||||||
clap = { version = "4.5", features = ["cargo", "derive"] }
|
clap = { version = "4.5", features = ["cargo", "derive"] }
|
||||||
color-eyre = "0.6"
|
color-eyre = "0.6"
|
||||||
#derive_more = { version = "1.0", features = [
|
derive_more = { version = "1.0", features = [
|
||||||
# "as_ref",
|
"as_ref",
|
||||||
# "constructor",
|
"constructor",
|
||||||
# "deref",
|
# "deref",
|
||||||
# "display",
|
# "display",
|
||||||
# "from",
|
# "from",
|
||||||
#] }
|
#] }
|
||||||
|
#serde = { version = "1.0", features = ["derive"] }
|
||||||
|
"from",
|
||||||
|
] }
|
||||||
# kxio = {path = "../kxio/"}
|
# kxio = {path = "../kxio/"}
|
||||||
kxio = "3.2"
|
kxio = "3.2"
|
||||||
#serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
#serde_json = "1.0"
|
#serde_json = "1.0"
|
||||||
tokio = { version = "1.41", features = ["full"] }
|
tokio = { version = "1.41", features = ["full"] }
|
||||||
#toml = "0.8"
|
toml = "0.8"
|
||||||
#tracing= "0.1"
|
#tracing= "0.1"
|
||||||
#tracing-subscriber = "0.3"
|
#tracing-subscriber = "0.3"
|
||||||
|
|
||||||
|
|
1
justfile
1
justfile
|
@ -5,6 +5,7 @@ build:
|
||||||
cargo fmt
|
cargo fmt
|
||||||
cargo fmt --check
|
cargo fmt --check
|
||||||
cargo clippy
|
cargo clippy
|
||||||
|
cargo machete
|
||||||
# cargo build
|
# cargo build
|
||||||
cargo tarpaulin --skip-clean --out Html
|
cargo tarpaulin --skip-clean --out Html
|
||||||
# cargo test
|
# cargo test
|
||||||
|
|
24
src/config.rs
Normal file
24
src/config.rs
Normal 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())?)
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ use std::path::PathBuf;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use kxio::{fs::FileSystem, net::Net};
|
use kxio::{fs::FileSystem, net::Net};
|
||||||
|
|
||||||
|
mod config;
|
||||||
mod init;
|
mod init;
|
||||||
mod macros;
|
mod macros;
|
||||||
mod template;
|
mod template;
|
||||||
|
@ -45,6 +46,7 @@ pub async fn run(ctx: Ctx) -> color_eyre::Result<()> {
|
||||||
color_eyre::install()?;
|
color_eyre::install()?;
|
||||||
|
|
||||||
let commands = Commands::parse();
|
let commands = Commands::parse();
|
||||||
|
let _cfg = config::AppConfig::load(&ctx)?;
|
||||||
match commands.command {
|
match commands.command {
|
||||||
Command::Init => init::run(&ctx)?,
|
Command::Init => init::run(&ctx)?,
|
||||||
Command::Check => todo!("check"),
|
Command::Check => todo!("check"),
|
||||||
|
|
|
@ -4,6 +4,27 @@
|
||||||
|
|
||||||
use assert2::let_assert;
|
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 {
|
mod init {
|
||||||
|
|
||||||
use test_log::test;
|
use test_log::test;
|
||||||
|
|
Loading…
Reference in a new issue