119625d8cSopenharmony_ci// Copyright ⓒ 2015-2018 Kevin B. Knapp 219625d8cSopenharmony_ci// 319625d8cSopenharmony_ci// `clap_complete` is distributed under the terms of both the MIT license and the Apache License 419625d8cSopenharmony_ci// (Version 2.0). 519625d8cSopenharmony_ci// See the [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) files in this repository 619625d8cSopenharmony_ci// for more information. 719625d8cSopenharmony_ci 819625d8cSopenharmony_ci#![doc(html_logo_url = "https://raw.githubusercontent.com/clap-rs/clap/master/assets/clap.png")] 919625d8cSopenharmony_ci#![doc = include_str!("../README.md")] 1019625d8cSopenharmony_ci#![warn(missing_docs, trivial_casts, unused_allocation, trivial_numeric_casts)] 1119625d8cSopenharmony_ci#![forbid(unsafe_code)] 1219625d8cSopenharmony_ci#![allow(clippy::needless_doctest_main)] 1319625d8cSopenharmony_ci 1419625d8cSopenharmony_ci//! ## Quick Start 1519625d8cSopenharmony_ci//! 1619625d8cSopenharmony_ci//! - For generating at compile-time, see [`generate_to`] 1719625d8cSopenharmony_ci//! - For generating at runtime, see [`generate`] 1819625d8cSopenharmony_ci//! 1919625d8cSopenharmony_ci//! [`Shell`] is a convenience `enum` for an argument value type that implements `Generator` 2019625d8cSopenharmony_ci//! for each natively-supported shell type. 2119625d8cSopenharmony_ci//! 2219625d8cSopenharmony_ci//! ## Example 2319625d8cSopenharmony_ci//! 2419625d8cSopenharmony_ci//! ```rust,no_run 2519625d8cSopenharmony_ci//! use clap::{Command, Arg, ValueHint, value_parser, ArgAction}; 2619625d8cSopenharmony_ci//! use clap_complete::{generate, Generator, Shell}; 2719625d8cSopenharmony_ci//! use std::io; 2819625d8cSopenharmony_ci//! 2919625d8cSopenharmony_ci//! fn build_cli() -> Command { 3019625d8cSopenharmony_ci//! Command::new("example") 3119625d8cSopenharmony_ci//! .arg(Arg::new("file") 3219625d8cSopenharmony_ci//! .help("some input file") 3319625d8cSopenharmony_ci//! .value_hint(ValueHint::AnyPath), 3419625d8cSopenharmony_ci//! ) 3519625d8cSopenharmony_ci//! .arg( 3619625d8cSopenharmony_ci//! Arg::new("generator") 3719625d8cSopenharmony_ci//! .long("generate") 3819625d8cSopenharmony_ci//! .action(ArgAction::Set) 3919625d8cSopenharmony_ci//! .value_parser(value_parser!(Shell)), 4019625d8cSopenharmony_ci//! ) 4119625d8cSopenharmony_ci//! } 4219625d8cSopenharmony_ci//! 4319625d8cSopenharmony_ci//! fn print_completions<G: Generator>(gen: G, cmd: &mut Command) { 4419625d8cSopenharmony_ci//! generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout()); 4519625d8cSopenharmony_ci//! } 4619625d8cSopenharmony_ci//! 4719625d8cSopenharmony_ci//! fn main() { 4819625d8cSopenharmony_ci//! let matches = build_cli().get_matches(); 4919625d8cSopenharmony_ci//! 5019625d8cSopenharmony_ci//! if let Some(generator) = matches.get_one::<Shell>("generator").copied() { 5119625d8cSopenharmony_ci//! let mut cmd = build_cli(); 5219625d8cSopenharmony_ci//! eprintln!("Generating completion file for {}...", generator); 5319625d8cSopenharmony_ci//! print_completions(generator, &mut cmd); 5419625d8cSopenharmony_ci//! } 5519625d8cSopenharmony_ci//! } 5619625d8cSopenharmony_ci//! ``` 5719625d8cSopenharmony_ci 5819625d8cSopenharmony_ciconst INTERNAL_ERROR_MSG: &str = "Fatal internal error. Please consider filing a bug \ 5919625d8cSopenharmony_ci report at https://github.com/clap-rs/clap/issues"; 6019625d8cSopenharmony_ci 6119625d8cSopenharmony_ci#[macro_use] 6219625d8cSopenharmony_ci#[allow(missing_docs)] 6319625d8cSopenharmony_cimod macros; 6419625d8cSopenharmony_ci 6519625d8cSopenharmony_cipub mod generator; 6619625d8cSopenharmony_cipub mod shells; 6719625d8cSopenharmony_ci 6819625d8cSopenharmony_cipub use generator::generate; 6919625d8cSopenharmony_cipub use generator::generate_to; 7019625d8cSopenharmony_cipub use generator::Generator; 7119625d8cSopenharmony_cipub use shells::Shell; 7219625d8cSopenharmony_ci 7319625d8cSopenharmony_ci#[cfg(feature = "unstable-dynamic")] 7419625d8cSopenharmony_cipub mod dynamic; 75