use std::path::PathBuf; use argh::FromArgs; #[derive(FromArgs, PartialEq, Debug)] #[argh(description = "reid compiler and Virtual Machine")] pub struct MainOpt { #[argh(positional, description = "run compiled .reidc from ")] pub run_path: Option, #[argh(subcommand)] pub subcommand: Option, } #[derive(FromArgs, PartialEq, Debug)] #[argh(subcommand)] pub enum Subcommand { Compile(Compile), Run(Run), } #[derive(FromArgs, PartialEq, Debug)] #[argh( subcommand, name = "compile", description = "compile to .reidc to path" )] pub struct Compile { #[argh(positional, description = "source .reid path")] pub source: String, #[argh(positional, description = "output .reidc path")] pub output: Option, } #[derive(FromArgs, PartialEq, Debug)] #[argh( subcommand, name = "run", description = "compile and run given .reid file" )] pub struct Run { #[argh(positional, description = "source .reid path")] pub source: PathBuf, }