minimal config file parsing
This commit is contained in:
parent
b4e5967845
commit
8fda9c2c3e
8 changed files with 153 additions and 0 deletions
2
modular-recipes/code/recipe-loader/.gitignore
vendored
Normal file
2
modular-recipes/code/recipe-loader/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/target
|
||||
Cargo.lock
|
||||
9
modular-recipes/code/recipe-loader/Cargo.toml
Normal file
9
modular-recipes/code/recipe-loader/Cargo.toml
Normal 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"
|
||||
58
modular-recipes/code/recipe-loader/src/main.rs
Normal file
58
modular-recipes/code/recipe-loader/src/main.rs
Normal 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());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue