minimal config file parsing

This commit is contained in:
sigil-03 2025-01-12 22:40:08 -07:00
parent b4e5967845
commit 8fda9c2c3e
8 changed files with 153 additions and 0 deletions

View file

@ -0,0 +1,2 @@
/target
Cargo.lock

View file

@ -0,0 +1,9 @@
[package]
name = "recipe-loader"
version = "0.1.0"
edition = "2021"
[dependencies]
clap = { version = "^4.5.26", features = ["derive"] }
recipe = {path="../recipe"}
toml = "0.8.19"

View file

@ -0,0 +1,58 @@
use clap::Parser;
use recipe::TomlRecipe;
use std::fs;
use std::path::Path;
#[derive(Parser, Debug)]
struct Cli {
#[arg(long)]
/// the recipe you'd like to make (needs to be in the repo)
recipe: String,
#[arg(long)]
/// the repository of your recipes
repo: String,
}
pub struct LoadedEnvironment {
recipes: Vec<TomlRecipe>,
}
impl Default for LoadedEnvironment {
fn default() -> Self {
Self {
recipes: Vec::new(),
}
}
}
impl LoadedEnvironment {
pub fn new(repo: &Path) -> Self {
let paths = fs::read_dir(repo).unwrap();
let mut env = LoadedEnvironment::default();
for path in paths {
let path = path.expect("Failed to unwrap path");
env.recipes.push(TomlRecipe::new(&path.path()))
}
env
}
pub fn print(&self) {
for recipe in &self.recipes {
recipe.print();
println!();
}
}
}
pub fn main() {
let cli = Cli::parse();
let repo = Path::new(&cli.repo);
let env = LoadedEnvironment::new(repo);
env.print();
// let recipe = TomlRecipe::default();
// recipe.print();
println!("{}", repo.display());
}