65 lines
1.4 KiB
Rust
65 lines
1.4 KiB
Rust
#![feature(generic_const_exprs)]
|
|
#![feature(let_chains)]
|
|
|
|
use std::fs::File;
|
|
use std::path::PathBuf;
|
|
use anyhow::Context;
|
|
use crate::cli::cli::OutputFormat;
|
|
use crate::system::model::HistoryLine;
|
|
use crate::system::spaces::square_grid::Grid2D;
|
|
use clap::{Parser, Command, Args, Subcommand};
|
|
use serde::de::DeserializeOwned;
|
|
use serde::Deserialize;
|
|
use svg::Node;
|
|
use svg::node::element::Rectangle;
|
|
use crate::system::Position;
|
|
use crate::system::spaces::hexagonal::HexPosition;
|
|
|
|
mod system;
|
|
mod cli;
|
|
mod tools;
|
|
|
|
#[derive(Debug, Parser)]
|
|
enum ToolsCli {
|
|
Render(RenderCli),
|
|
BoxCount(BoxCountCli)
|
|
}
|
|
|
|
#[derive(clap::ValueEnum, Clone, Debug, Copy)]
|
|
enum Space {
|
|
Grid2D,
|
|
}
|
|
|
|
#[derive(Debug, Args)]
|
|
struct RenderCli {
|
|
#[arg(value_enum, short, long, default_value_t = OutputFormat::Positions)]
|
|
format: OutputFormat,
|
|
|
|
#[arg(value_enum, short, long, default_value_t = Space::Grid2D)]
|
|
space: Space,
|
|
|
|
path: PathBuf,
|
|
output: PathBuf,
|
|
|
|
#[arg(short, long, default_value_t = 800)]
|
|
image_size: u32,
|
|
}
|
|
|
|
#[derive(Debug, Args)]
|
|
struct BoxCountCli {
|
|
#[arg(value_enum, short, long, default_value_t = OutputFormat::Positions)]
|
|
format: OutputFormat,
|
|
path: PathBuf,
|
|
output: PathBuf,
|
|
}
|
|
|
|
fn main() {
|
|
let args = ToolsCli::parse();
|
|
dbg!(&args);
|
|
|
|
match args {
|
|
ToolsCli::Render(cli) => tools::render::main(&cli),
|
|
ToolsCli::BoxCount(cli) => tools::boxcount::main(&cli),
|
|
}
|
|
}
|