diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 9ff7dc3..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM debian:testing - -RUN ( \ - set -e; \ - apt-get -yq update; \ - apt-get -yq install \ - build-essential \ - curl \ - mdbook \ - plantuml \ - vim-nox \ - ; \ - apt-get clean; \ -) - -ENV RUSTUP_HOME=/opt/rustup -ENV CARGO_HOME=/opt/cargo - -RUN ( \ - set -e; \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y ; \ - chmod 777 /opt/rustup /opt/cargo; \ -) - -ENV PATH="$PATH:$CARGO_HOME/bin" diff --git a/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_2_inch.toml b/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_2_inch.toml index 38f8d88..48ab75c 100644 --- a/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_2_inch.toml +++ b/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_2_inch.toml @@ -1,12 +1,11 @@ [inputs] -capital = { quantity = { amount=2.59, unit="USDollar" } } +capital = { quantity = { amount=5.75, unit="USDollar" } } [dependencies] operator = {skills=["vendor interaction"]} [action.purchase] vendor = [ - "https://acmehydroponics.net/collections/plumbing/products/fill-drain-1-2-fitting", "https://www.ebay.com/itm/134772441988", "https://www.ebay.com/itm/251050375775?var=554293415440", "https://www.ebay.com/itm/251313018420", diff --git a/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_inch.toml b/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_inch.toml index e111c11..1a0994c 100644 --- a/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_inch.toml +++ b/modular-recipes/repos/minimal_hydroponics_setup/barb_fitting_1_inch.toml @@ -1,11 +1,10 @@ [inputs] -capital = { quantity = { amount=2.49, unit="USDollar" } } +capital = { quantity = { amount=15.19, unit="USDollar" } } [dependencies] operator = {skills=["vendor interaction"]} [action.purchase] vendor = [ - "https://www.botanicare.com/products/fittings/", - "https://acmehydroponics.net/collections/plumbing/products/fill-drain-1-fitting" + "https://www.botanicare.com/products/fittings/" ] diff --git a/modular-recipes/repos/minimal_hydroponics_setup/filter.toml b/modular-recipes/repos/minimal_hydroponics_setup/filter.toml deleted file mode 100644 index 8c03d18..0000000 --- a/modular-recipes/repos/minimal_hydroponics_setup/filter.toml +++ /dev/null @@ -1,12 +0,0 @@ -[inputs] -capital = { quantity = { amount=0.96, unit="USDollar" } } - -[dependencies] -operator = {skills=["vendor interaction"]} - -[action.purchase] -vendor = [ - "https://acmehydroponics.net/collections/plumbing/products/screen-fitting-plumbing", - "https://hydrobuilder.com/products/grow1-ebb-flow-screen-fittings-pack-of-10", - "https://www.ebay.com/itm/256644061627" -] diff --git a/modular-recipes/repos/minimal_hydroponics_setup/nutrient_reservoir_lid.toml b/modular-recipes/repos/minimal_hydroponics_setup/nutrient_reservoir_lid.toml index e5a0e69..4b52191 100644 --- a/modular-recipes/repos/minimal_hydroponics_setup/nutrient_reservoir_lid.toml +++ b/modular-recipes/repos/minimal_hydroponics_setup/nutrient_reservoir_lid.toml @@ -2,11 +2,8 @@ food_safe_bucket_lid = {} [dependencies] -tools = [ "hack saw" ] +tools = [ "hole saw" ] [action] -process = """Use the holes drilled in the `plant_tray_basin` to mark -the `food_safe_bucket_lid`. Cut the lid to make room for the two barb -fittings, so the `plant_tray_basin` can sit in the lid comfortably. -This cut will also make room for the `nutrient_pump` power cord to -exit.""" +process = """Drill three holes in the lid the right size to fit the 1 +inch tube, the 1/2 inch tube, and the pump's power cord through.""" diff --git a/modular-recipes/repos/minimal_hydroponics_setup/overflow_fitting.toml b/modular-recipes/repos/minimal_hydroponics_setup/overflow_fitting.toml deleted file mode 100644 index 97fd3c5..0000000 --- a/modular-recipes/repos/minimal_hydroponics_setup/overflow_fitting.toml +++ /dev/null @@ -1,12 +0,0 @@ -[inputs] -barb_fitting_1_inch = {} -riser = { quantity = { amount = 2 } } -filter = {} - -[dependencies] -operator = {skills=["assembly"]} - -[action] -process = """ -Attach the risers and filter to the barb fitting. -""" diff --git a/modular-recipes/repos/minimal_hydroponics_setup/plant_tray.toml b/modular-recipes/repos/minimal_hydroponics_setup/plant_tray.toml index 96763db..11a60bf 100644 --- a/modular-recipes/repos/minimal_hydroponics_setup/plant_tray.toml +++ b/modular-recipes/repos/minimal_hydroponics_setup/plant_tray.toml @@ -1,15 +1,13 @@ [inputs] plant_tray_basin = {} clay_pebble_grow_medium = { quantity = { amount=5, unit="Liter" } } -pump_fitting = {} -overflow_fitting = {} +barb_fitting_1_inch = {} +barb_fitting_1_2_inch = {} [dependencies] tools = [ "hack saw" ] [action] -process = """ -* Attach the pump fitting. -* Attach the overflow fitting. -* Add the grow medium. -""" +process = """Attach the two fittings. + +Add the grow medium.""" diff --git a/modular-recipes/repos/minimal_hydroponics_setup/plant_tray_basin.toml b/modular-recipes/repos/minimal_hydroponics_setup/plant_tray_basin.toml index 7b229bb..bccefbe 100644 --- a/modular-recipes/repos/minimal_hydroponics_setup/plant_tray_basin.toml +++ b/modular-recipes/repos/minimal_hydroponics_setup/plant_tray_basin.toml @@ -5,20 +5,10 @@ plant_tray_basin = { comment = "Alternatively use commercial plastic bus tubs." food_safe_5_gallon_bucket = {} [dependencies] -tools = [ "hack saw", "step drill correct size for both barb fittings" ] +tools = [ "hack saw", "step drill" ] [action] -process = """ +process = """* Cut the top of the bucket off, leaving a kind of deep dish +or bowl that will holds the plant growth medium and the plants. -* Drill holes for the two fittings. The holes should be pretty close -together, but far enough apart that there's sufficient room for the nuts -that compress the barb fitting gaskets. - -* Temporarily install the overflow fitting, and mark the wall of the -bucket a few inches above the top of the overflow fitting. - -* Cut the top of the bucket off at the mark. This leaves a kind of deep -dish or bowl that will holds the plant growth medium and the plants. -a few inches above the top of the overflow fitting. - -""" +* Drill holes for the two fittings.""" diff --git a/modular-recipes/repos/minimal_hydroponics_setup/pump_fitting.toml b/modular-recipes/repos/minimal_hydroponics_setup/pump_fitting.toml deleted file mode 100644 index 55e4d3e..0000000 --- a/modular-recipes/repos/minimal_hydroponics_setup/pump_fitting.toml +++ /dev/null @@ -1,11 +0,0 @@ -[inputs] -barb_fitting_1_2_inch = {} -filter = {} - -[dependencies] -operator = {skills=["assembly"]} - -[action] -process = """ -Attach the filter to the barb fitting. -""" diff --git a/modular-recipes/repos/minimal_hydroponics_setup/riser.toml b/modular-recipes/repos/minimal_hydroponics_setup/riser.toml deleted file mode 100644 index b154f7e..0000000 --- a/modular-recipes/repos/minimal_hydroponics_setup/riser.toml +++ /dev/null @@ -1,11 +0,0 @@ -[inputs] -capital = { quantity = { amount=0.97, unit="USDollar" } } - -[dependencies] -operator = {skills=["vendor interaction"]} - -[action.purchase] -vendor = [ - "https://acmehydroponics.net/collections/plumbing/products/extension-fitting-plumbing", - "https://www.ebay.com/itm/256644065109" -] diff --git a/tools/src/bin/parser/main.rs b/tools/src/bin/parser/main.rs index ef0ca9c..6db3277 100644 --- a/tools/src/bin/parser/main.rs +++ b/tools/src/bin/parser/main.rs @@ -3,47 +3,26 @@ use clap::Parser; #[derive(Debug, clap::Parser)] #[command(version, about, long_about = None)] struct Args { - /// Directories containing repos, eg "../my-repos". + /// The name of the recipe to build. + target: String, + + /// Directories containing repos. #[arg(short, long)] + // repo: String, repo: Vec, - - /// Type of behavior/output. - #[command(subcommand)] - command: Commands, -} - -#[derive(clap::Subcommand, Debug)] -enum Commands { - /// Produce an mdbook of the specified recipe. - Mdbook { - /// The name of the recipe to create MD Book for, eg "my_widget". - target: String, - }, - /// Show parsed recipe, probably not very useful. - Info { - /// The name of the recipe to show info for, eg "my_widget". - target: String, - }, } fn main() -> anyhow::Result<()> { let args = Args::parse(); - + // let repo = tools::Repo::new(&args.repo).unwrap(); + // repo.compile(&args.target)?; let mut repos = tools::Repos::default(); for repo_path in &args.repo { repos.add_repo(repo_path)?; } - match &args.command { - Commands::Mdbook { target } => { - let build_plan = repos.compile(target)?; - build_plan.make_mdbook()?; - } - Commands::Info { target } => { - let recipe = repos.get_recipe(target)?; - println!("{:#?}", recipe); - } - } + let build_plan = repos.compile(&args.target)?; + build_plan.make_mdbook()?; Ok(()) } diff --git a/tools/src/build_plan.rs b/tools/src/build_plan.rs index 3fd22e4..858b1cd 100644 --- a/tools/src/build_plan.rs +++ b/tools/src/build_plan.rs @@ -215,8 +215,6 @@ impl<'a> BuildPlan<'a> { writeln!(bom_md_file, "# Bill of materials")?; writeln!(bom_md_file, "")?; - let mut total_cost: f32 = 0.0; - let mut names: Vec<&String> = self.bom.keys().collect(); names.sort(); for name in names { @@ -228,14 +226,13 @@ impl<'a> BuildPlan<'a> { )))?; let recipe = self.repos.get_recipe(name)?; let unit_cost = recipe.unit_cost()?; - let item_total_cost = unit_cost * item.quantity.amount; - total_cost += item_total_cost; + let total_cost = unit_cost * item.quantity.amount; writeln!(bom_md_file, "* {name}")?; writeln!(bom_md_file, " * quantity {:?}", item.quantity)?; writeln!( bom_md_file, " * cost {:.2} ({:.2} each)", - item_total_cost, unit_cost + total_cost, unit_cost )?; writeln!(bom_md_file, " * vendors:")?; match &recipe.action { @@ -253,9 +250,6 @@ impl<'a> BuildPlan<'a> { } } - writeln!(bom_md_file, "")?; - writeln!(bom_md_file, "Total cost: {:.2}", total_cost)?; - writeln!( summary_md_file, " - [Bill of Materials](overview/bom.md)"