#![allow(unused)]
extern crate usvg;
extern crate clap;
extern crate kurbo;
mod svgps;
mod svgcom;
use svgps::{
generate_from_svg, render_to_svg
};
use std::{
fs::File,
path::PathBuf,
};
#[derive(clap::Parser)]
#[command(version, about, long_about, verbatim_doc_comment)]
struct Args {
#[command(subcommand)]
command: ArgCommand
}
#[derive(clap::Subcommand)]
enum ArgCommand {
Generate(GenerateArgs),
Render(RenderArgs)
}
#[derive(clap::Args)]
pub struct GenerateArgs {
input: PathBuf,
output: PathBuf,
#[arg(short = 'a', long)]
autocut: bool,
#[arg(short = 'e', long, default_value_t = 0.25)]
precision: f64,
#[arg(short = 's', long)]
onlystroked: bool,
}
#[derive(clap::Args)]
pub struct RenderArgs {
input: PathBuf,
output: PathBuf,
#[arg(short = 's', long, default_value = "#000000")]
stroke: String,
#[arg(short = 'f', long, default_value = "none")]
fill: String,
#[arg(id = "WIDTH", short = 'w', long = "stroke-width", default_value_t = 1.0)]
stroke_width: f64,
}
pub type Error = String;
fn main() {
use clap::Parser;
let args = Args::parse();
let result: Result<(), Error> = match args.command {
ArgCommand::Generate(args) => generate_from_svg(args),
ArgCommand::Render(args) => render_to_svg(args),
};
if let Err(message) = result {
println!("Error: {}", message);
}
}