Skip to content

Commit

Permalink
fix(complete): Section off existing completions
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Aug 16, 2024
1 parent 6842ed9 commit 6727c15
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 11 deletions.
File renamed without changes.
File renamed without changes.
52 changes: 52 additions & 0 deletions clap_complete/src/aot/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
//! Prebuilt completions
//!
//! ## Quick Start
//!
//! - For generating at compile-time, see [`generate_to`]
//! - For generating at runtime, see [`generate`]
//!
//! [`Shell`] is a convenience `enum` for an argument value type that implements `Generator`
//! for each natively-supported shell type.
//!
//! ## Example
//!
//! ```rust,no_run
//! use clap::{Command, Arg, ValueHint, value_parser, ArgAction};
//! use clap_complete::{generate, Generator, Shell};
//! use std::io;
//!
//! fn build_cli() -> Command {
//! Command::new("example")
//! .arg(Arg::new("file")
//! .help("some input file")
//! .value_hint(ValueHint::AnyPath),
//! )
//! .arg(
//! Arg::new("generator")
//! .long("generate")
//! .action(ArgAction::Set)
//! .value_parser(value_parser!(Shell)),
//! )
//! }
//!
//! fn print_completions<G: Generator>(gen: G, cmd: &mut Command) {
//! generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout());
//! }
//!
//! fn main() {
//! let matches = build_cli().get_matches();
//!
//! if let Some(generator) = matches.get_one::<Shell>("generator").copied() {
//! let mut cmd = build_cli();
//! eprintln!("Generating completion file for {generator}...");
//! print_completions(generator, &mut cmd);
//! }
//! }
//! ```

mod generator;
mod shells;

pub use clap::ValueHint;
pub use generator::*;
pub use shells::*;
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ fn write_positionals_of(p: &Command) -> String {

#[cfg(test)]
mod tests {
use crate::shells::zsh::{escape_help, escape_value};
use super::{escape_help, escape_value};

#[test]
fn test_escape_value() {
Expand Down
38 changes: 28 additions & 10 deletions clap_complete/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
//!
//! ```rust,no_run
//! use clap::{Command, Arg, ValueHint, value_parser, ArgAction};
//! use clap_complete::{generate, Generator, Shell};
//! use clap_complete::aot::{generate, Generator, Shell};
//! use std::io;
//!
//! fn build_cli() -> Command {
Expand Down Expand Up @@ -65,14 +65,32 @@ const INTERNAL_ERROR_MSG: &str = "Fatal internal error. Please consider filing a
#[allow(missing_docs)]
mod macros;

pub mod generator;
pub mod shells;

pub use clap::ValueHint;
pub use generator::generate;
pub use generator::generate_to;
pub use generator::Generator;
pub use shells::Shell;

pub mod aot;
#[cfg(feature = "unstable-dynamic")]
pub mod dynamic;

/// Deprecated, see [`aot`]
pub mod generator {
pub use crate::aot::generate;
pub use crate::aot::generate_to;
pub use crate::aot::utils;
pub use crate::aot::Generator;
}
/// Deprecated, see [`aot`]
pub mod shells {
pub use crate::aot::Bash;
pub use crate::aot::Elvish;
pub use crate::aot::Fish;
pub use crate::aot::PowerShell;
pub use crate::aot::Shell;
pub use crate::aot::Zsh;
}
/// Deprecated, see [`aot::generate`]
pub use aot::generate;
/// Deprecated, see [`aot::generate_to`]
pub use aot::generate_to;
/// Deprecated, see [`aot::Generator`]
pub use aot::Generator;
/// Deprecated, see [`aot::Shell`]
pub use aot::Shell;
pub use clap::ValueHint;

0 comments on commit 6727c15

Please sign in to comment.