use tauri::{ plugin::{Builder, PluginApi, TauriPlugin}, AppHandle, Manager, Runtime, State, }; mod config; mod error; mod parser; use config::{Arg, Config}; pub use error::Error; type Result = std::result::Result; // TODO: use PluginApi#app when 2.0.0-alpha.9 is released pub struct Cli(PluginApi, AppHandle); impl Cli { pub fn matches(&self) -> Result { parser::get_matches(self.0.config(), self.1.package_info()) } } pub trait CliExt { fn cli(&self) -> &Cli; } impl> CliExt for T { fn cli(&self) -> &Cli { self.state::>().inner() } } #[tauri::command] fn cli_matches(_app: AppHandle, cli: State<'_, Cli>) -> Result { cli.matches() } pub fn init() -> TauriPlugin { Builder::new("cli") .invoke_handler(tauri::generate_handler![cli_matches]) .setup(|app, api| { app.manage(Cli(api, app.clone())); Ok(()) }) .build() }