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