From cfc132f2d7c3234d390938631c7833f665874d4d Mon Sep 17 00:00:00 2001 From: hal8174 Date: Fri, 18 Apr 2025 20:58:41 +0200 Subject: [PATCH] Add subfactory cmd utility --- .../src/bin/subfactory.rs | 60 +++++++++++++++++++ .../src/subfactory.rs | 3 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 factorio-blueprint-generator/src/bin/subfactory.rs diff --git a/factorio-blueprint-generator/src/bin/subfactory.rs b/factorio-blueprint-generator/src/bin/subfactory.rs new file mode 100644 index 0000000..dcd82fe --- /dev/null +++ b/factorio-blueprint-generator/src/bin/subfactory.rs @@ -0,0 +1,60 @@ +use clap::Parser; +use factorio_blueprint::{abstraction::serde::AbstractBlueprintString, encode}; +use factorio_blueprint_generator::subfactory::SubFactory; + +#[derive(Parser)] +struct Args { + #[arg(short, long)] + json: bool, + + /// connection-format :[f64] + #[arg(short)] + inputs: Vec, + + #[arg(short)] + outputs: Vec, + + #[command(subcommand)] + subfactory: SubFactory, +} + +fn main() { + let args = Args::parse(); + + let inputs = args + .inputs + .iter() + .map(|s| { + let (a, f) = s.split_once(':').unwrap(); + + (a, f.parse().unwrap()) + }) + .collect::>(); + + let outputs = args + .outputs + .iter() + .map(|s| { + let (a, f) = s.split_once(':').unwrap(); + + (a, f.parse().unwrap()) + }) + .collect::>(); + + dbg!(&inputs); + dbg!(&outputs); + + let (b, m, i, o) = args.subfactory.get_subfactory(&inputs, &outputs); + + dbg!(m); + dbg!(i); + dbg!(o); + + let b = AbstractBlueprintString { blueprint: &b }; + + if args.json { + println!("{}", serde_json::to_string_pretty(&b).unwrap()); + } + + std::fs::write("out.bp", encode(&serde_json::to_string(&b).unwrap())).unwrap(); +} diff --git a/factorio-blueprint-generator/src/subfactory.rs b/factorio-blueprint-generator/src/subfactory.rs index 1186890..415b1da 100644 --- a/factorio-blueprint-generator/src/subfactory.rs +++ b/factorio-blueprint-generator/src/subfactory.rs @@ -1,4 +1,5 @@ use assembling_line::assembly_line_2_input; +use clap::Subcommand; use factorio_blueprint::abstraction::Blueprint; use factorio_core::{ beltoptions::{Beltspeed, Belttype}, @@ -9,7 +10,7 @@ use serde::{Deserialize, Serialize}; pub mod assembling_line; -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, Subcommand)] pub enum SubFactory { AssemblingLine { num_machines: usize,