xflags::xflags! {
    src "./src/flags.rs"

    /// Run custom build command.
    cmd xtask {
        cmd verilogae{
            cmd build{
                optional --force
                optional --manylinux
                optional --windows
                optional --install
            }

            cmd test {
            }

            cmd publish {
                optional --windows
            }

        }

        cmd gen-msvcrt {}

    }
}
// generated start
// The following code is generated by `xflags` macro.
// Run `env UPDATE_XFLAGS=1 cargo build` to regenerate.
#[derive(Debug)]
pub struct Xtask {
    pub subcommand: XtaskCmd,
}

#[derive(Debug)]
pub enum XtaskCmd {
    Verilogae(Verilogae),
    GenMsvcrt(GenMsvcrt),
}

#[derive(Debug)]
pub struct Verilogae {
    pub subcommand: VerilogaeCmd,
}

#[derive(Debug)]
pub enum VerilogaeCmd {
    Build(Build),
    Test(Test),
    Publish(Publish),
}

#[derive(Debug)]
pub struct Build {
    pub force: bool,
    pub manylinux: bool,
    pub windows: bool,
    pub install: bool,
}

#[derive(Debug)]
pub struct Test;

#[derive(Debug)]
pub struct Publish {
    pub windows: bool,
}

#[derive(Debug)]
pub struct GenMsvcrt;

impl Xtask {
    #[allow(dead_code)]
    pub fn from_env_or_exit() -> Self {
        Self::from_env_or_exit_()
    }

    #[allow(dead_code)]
    pub fn from_env() -> xflags::Result<Self> {
        Self::from_env_()
    }

    #[allow(dead_code)]
    pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
        Self::from_vec_(args)
    }
}
// generated end
