Introduce subcommand for completion-script generation.

nbrr
Jan 24, 2022, 11:44 PM
TEDGMEHFZK6QKSXVOHM3Z4MYZC26EDCWRURHWKOU2JLETWJIJPLQC

Dependencies

  • [2] ZDK3GNDB Tag transactions (including a massive refactoring of errors)
  • [*] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [*] EEBKW7VT Keys and identities
  • [*] SNZ3OAMC use native external subcommand support instead of hand-rolled one
  • [*] 5DVRL6MF Hard-unrecord

Change contents

  • edit in pijul/src/main.rs at line 134
    [5.38]
    [6.25]
    /// Shell completion script generation
    Completion(Completion),
  • edit in pijul/src/main.rs at line 262
    [6.687]
    [4.89705]
    SubCommand::Completion(completion) => completion.run(),
  • edit in pijul/src/commands/mod.rs at line 67
    [4.134333]
    [7.1576]
    mod completions;
    pub use completions::*;
  • file addition: completions.rs (----------)
    [4.93386]
    use std::io;
    use clap::IntoApp;
    use clap::Parser;
    use clap_complete::{
    generate,
    shells::{Bash, Elvish, Fish, PowerShell, Zsh},
    };
    use crate::Opts;
    #[derive(Parser, Debug)]
    pub struct Completion {
    #[clap(subcommand)]
    subcmd: Option<SubCommand>,
    }
    #[derive(Parser, Debug)]
    pub enum SubCommand {
    Bash,
    Elvish,
    Fish,
    PowerShell,
    Zsh,
    }
    impl Completion {
    pub fn run(self) -> Result<(), anyhow::Error> {
    let mut app = Opts::into_app();
    match self.subcmd {
    Some(SubCommand::Bash) => {
    generate(Bash, &mut app, "pijul", &mut io::stdout());
    }
    Some(SubCommand::Elvish) => {
    generate(Elvish, &mut app, "pijul", &mut io::stdout());
    }
    Some(SubCommand::Fish) => {
    generate(Fish, &mut app, "pijul", &mut io::stdout());
    }
    Some(SubCommand::PowerShell) => {
    generate(PowerShell, &mut app, "pijul", &mut io::stdout());
    }
    Some(SubCommand::Zsh) => {
    generate(Zsh, &mut app, "pijul", &mut io::stdout());
    }
    None => {}
    }
    Ok(())
    }
    }
  • edit in pijul/Cargo.toml at line 54
    [2.7467]
    [4.197423]
    clap_complete = "3.0.4"