use std::path::PathBuf;
use clap::Parser;
use dodo_bindgen_codegen::CodegenOpts;
#[derive(Debug, Parser)]
#[command(
name = "deno-bindgen2",
version,
about = "A Rust FFI bindings generator for Deno. Use this CLI tool with the `deno_bindgen2` library crate",
long_about = None
)]
pub struct Cli {
#[arg(short = 'o', long, value_hint = clap::ValueHint::FilePath)]
pub output: Option<PathBuf>,
#[arg(short = 'r', long)]
pub release: bool,
#[arg(short = 'l', long)]
lazy: bool,
#[arg(short = 'i', long, group = "link")]
pub inline: bool,
#[arg(short = 'e', long, default_value_t = true)]
pub extended: bool,
#[arg(short = 'm', long, group = "link")]
embedded: Option<PathBuf>,
#[arg(short = 'n', long)]
no_expand: bool,
#[arg(short = 'I', long)]
interactive: bool,
#[arg(short = 'N', long)]
no_modules: bool,
}
impl Cli {
pub fn to_codegen_opts(&self, file_name: String, dylib_path: PathBuf) -> CodegenOpts {
CodegenOpts {
file_name,
dylib_path: dylib_path
.to_str()
.expect("unknown utf8 character on dylib path")
.to_string(),
lazy: self.lazy,
extended: self.extended,
embedded: self.embedded.clone(),
}
}
}