Reid/src/args.rs

54 lines
1.2 KiB
Rust

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