clap_complete/lib.rs
1// Copyright ⓒ 2015-2018 Kevin B. Knapp
2//
3// `clap_complete` is distributed under the terms of both the MIT license and the Apache License
4// (Version 2.0).
5// See the [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) files in this repository
6// for more information.
7
8#![doc(html_logo_url = "https://raw.githubusercontent.com/clap-rs/clap/master/assets/clap.png")]
9#![doc = include_str!("../README.md")]
10#![cfg_attr(docsrs, feature(doc_auto_cfg))]
11#![warn(missing_docs, trivial_casts, unused_allocation, trivial_numeric_casts)]
12#![forbid(unsafe_code)]
13#![allow(clippy::needless_doctest_main)]
14
15//! ## Quick Start
16//!
17//! - For generating at compile-time, see [`generate_to`]
18//! - For generating at runtime, see [`generate`]
19//!
20//! [`Shell`] is a convenience `enum` for an argument value type that implements `Generator`
21//! for each natively-supported shell type.
22//!
23//! ## Example
24//!
25//! ```rust,no_run
26//! use clap::{Command, Arg, ValueHint, value_parser, ArgAction};
27//! use clap_complete::{generate, Generator, Shell};
28//! use std::io;
29//!
30//! fn build_cli() -> Command {
31//! Command::new("example")
32//! .arg(Arg::new("file")
33//! .help("some input file")
34//! .value_hint(ValueHint::AnyPath),
35//! )
36//! .arg(
37//! Arg::new("generator")
38//! .long("generate")
39//! .action(ArgAction::Set)
40//! .value_parser(value_parser!(Shell)),
41//! )
42//! }
43//!
44//! fn print_completions<G: Generator>(gen: G, cmd: &mut Command) {
45//! generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout());
46//! }
47//!
48//! fn main() {
49//! let matches = build_cli().get_matches();
50//!
51//! if let Some(generator) = matches.get_one::<Shell>("generator").copied() {
52//! let mut cmd = build_cli();
53//! eprintln!("Generating completion file for {generator}...");
54//! print_completions(generator, &mut cmd);
55//! }
56//! }
57//! ```
58
59#![cfg_attr(docsrs, feature(doc_auto_cfg))]
60#![warn(missing_docs)]
61#![warn(clippy::print_stderr)]
62#![warn(clippy::print_stdout)]
63
64const INTERNAL_ERROR_MSG: &str = "Fatal internal error. Please consider filing a bug \
65 report at https://github.com/clap-rs/clap/issues";
66
67#[macro_use]
68#[allow(missing_docs)]
69mod macros;
70
71pub mod generator;
72pub mod shells;
73
74pub use generator::generate;
75pub use generator::generate_to;
76pub use generator::Generator;
77pub use shells::Shell;
78
79#[cfg(feature = "unstable-dynamic")]
80pub mod dynamic;