From 462f0716431ab980e5ce49a38a07ee2c99283076 Mon Sep 17 00:00:00 2001 From: Alexander Weiss Date: Sat, 25 Mar 2023 21:03:14 +0100 Subject: [PATCH] Fix shell completions --- changelog/new.txt | 1 + src/backend/ignore.rs | 2 +- src/commands/completions.rs | 29 +++++++++++++++++++---------- src/commands/repair.rs | 2 +- src/commands/restore.rs | 2 +- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/changelog/new.txt b/changelog/new.txt index 9ebd4e7b..69499524 100644 --- a/changelog/new.txt +++ b/changelog/new.txt @@ -4,6 +4,7 @@ Breaking changes: Bugs fixed: - Fixed compiliation on OpenBSD. +- Fixed shell completions. New features: - REST backend: Set User-Agent header diff --git a/src/backend/ignore.rs b/src/backend/ignore.rs index fe6ac979..c5035291 100644 --- a/src/backend/ignore.rs +++ b/src/backend/ignore.rs @@ -46,7 +46,7 @@ pub struct LocalSourceOptions { ignore_devid: bool, /// Glob pattern to exclude/include (can be specified multiple times) - #[clap(long, short = 'g', help_heading = "EXCLUDE OPTIONS")] + #[clap(long, help_heading = "EXCLUDE OPTIONS")] #[merge(strategy = merge::vec::overwrite_empty)] glob: Vec, diff --git a/src/commands/completions.rs b/src/commands/completions.rs index 90cc5bae..f328cca4 100644 --- a/src/commands/completions.rs +++ b/src/commands/completions.rs @@ -1,3 +1,5 @@ +use std::io::Write; + use clap::{CommandFactory, Parser, ValueEnum}; use clap_complete::{generate, shells, Generator}; @@ -16,18 +18,25 @@ pub(super) enum Variant { pub(super) fn execute(opts: Opts) { match opts.sh { - Variant::Bash => generate_completion(shells::Bash), - Variant::Fish => generate_completion(shells::Fish), - Variant::Zsh => generate_completion(shells::Zsh), + Variant::Bash => generate_completion(shells::Bash, &mut std::io::stdout()), + Variant::Fish => generate_completion(shells::Fish, &mut std::io::stdout()), + Variant::Zsh => generate_completion(shells::Zsh, &mut std::io::stdout()), } } -fn generate_completion(shell: G) { +fn generate_completion(shell: G, buf: &mut dyn Write) { let mut command = super::Opts::command(); - generate( - shell, - &mut command, - env!("CARGO_BIN_NAME"), - &mut std::io::stdout(), - ); + generate(shell, &mut command, env!("CARGO_BIN_NAME"), buf); +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_completions() { + generate_completion(shells::Bash, &mut std::io::sink()); + generate_completion(shells::Fish, &mut std::io::sink()); + generate_completion(shells::Zsh, &mut std::io::sink()); + } } diff --git a/src/commands/repair.rs b/src/commands/repair.rs index ff2a9870..7ead9dc8 100644 --- a/src/commands/repair.rs +++ b/src/commands/repair.rs @@ -56,7 +56,7 @@ struct SnapOpts { dry_run: bool, /// Also remove defect snapshots - WARNING: This can result in data loss! - #[clap(long, short = 'n')] + #[clap(long)] delete: bool, /// Append this suffix to repaired directory or file name diff --git a/src/commands/restore.rs b/src/commands/restore.rs index 7e4421e3..419be17d 100644 --- a/src/commands/restore.rs +++ b/src/commands/restore.rs @@ -43,7 +43,7 @@ pub(super) struct Opts { numeric_id: bool, /// Don't restore ownership (user/group) - #[clap(long, conflicts_with = "numeric_id")] + #[clap(long, conflicts_with = "numeric-id")] no_ownership: bool, /// Warm up needed data pack files by only requesting them without processing