aboutsummaryrefslogtreecommitdiff
path: root/server/tools/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/tools/src/main.rs')
-rw-r--r--server/tools/src/main.rs49
1 files changed, 39 insertions, 10 deletions
diff --git a/server/tools/src/main.rs b/server/tools/src/main.rs
index c121d5a1..cb5fda13 100644
--- a/server/tools/src/main.rs
+++ b/server/tools/src/main.rs
@@ -20,6 +20,7 @@ pub mod book;
pub mod book_html;
pub mod diagram_dot;
pub mod diagram_layout;
+pub mod diagram_svg;
pub mod graph;
pub mod graph_summary;
pub mod map_linter;
@@ -28,7 +29,9 @@ pub mod recipe_diagram;
use crate::{
book::{book, print_book},
book_html::render_html_book,
- diagram_dot::diagram_dot,
+ diagram_dot::{diagram_dot, diagram_dot_svg},
+ diagram_layout::diagram_layout,
+ diagram_svg::diagram_svg,
graph::graph,
graph_summary::graph_summary,
map_linter::check_map,
@@ -42,13 +45,27 @@ use hurrycurry_server::data::DataIndex;
enum Action {
Graph,
GraphSummary,
- GraphSingle { out: String },
+ GraphSingle {
+ out: String,
+ #[arg(short)]
+ custom_svg: bool,
+ #[arg(short)]
+ dot_out: bool,
+ },
Book,
BookHtml,
- MapDemands { map: String },
- MapItems { map: String },
- MapTiles { map: String },
- CheckMap { map: String },
+ MapDemands {
+ map: String,
+ },
+ MapItems {
+ map: String,
+ },
+ MapTiles {
+ map: String,
+ },
+ CheckMap {
+ map: String,
+ },
}
fn main() -> Result<()> {
@@ -57,13 +74,25 @@ fn main() -> Result<()> {
match action {
Action::Graph => graph()?,
Action::GraphSummary => graph_summary()?,
- Action::GraphSingle { out } => {
+ Action::GraphSingle {
+ out,
+ custom_svg,
+ dot_out,
+ } => {
let mut index = DataIndex::default();
index.reload()?;
let (data, serverdata, _) = index.generate("5star")?;
- let diagram = recipe_diagram(&data, &serverdata, &[&out])?;
- let dot = diagram_dot(&data, &diagram)?;
- println!("{dot}");
+ let mut diagram = recipe_diagram(&data, &serverdata, &[&out])?;
+ let out = if dot_out {
+ diagram_dot(&data, &diagram, false)?
+ } else if custom_svg {
+ diagram_layout(&mut diagram)?;
+ diagram_svg(&data, &diagram)?
+ } else {
+ diagram_layout(&mut diagram)?;
+ diagram_dot_svg(&data, &diagram)?
+ };
+ println!("{out}");
}
Action::Book => {
let mut index = DataIndex::default();