// Copyright 2019-2023 Tauri Programme within The Commons Conservancy // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT //! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/cli/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/cli) //! //! Parse arguments from your Command Line Interface. //! //! - Supported platforms: Windows, Linux and macOS. #![doc( html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png", html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png" )] use tauri::{ plugin::{Builder, PluginApi, TauriPlugin}, AppHandle, Manager, Runtime, State, }; mod config; mod error; mod parser; use config::{Arg, Config}; pub use error::{Error, Result}; pub use parser::{ArgData, Matches, SubcommandMatches}; pub struct Cli(PluginApi); impl Cli { pub fn matches(&self) -> Result { parser::get_matches(self.0.config(), self.0.app().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)); Ok(()) }) .build() }