aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJon Heinritz <jon.heinritz@protonmail.com>2025-03-10 21:14:34 +0100
committerGitHub <noreply@github.com>2025-03-10 20:14:34 +0000
commit87b6c1262544a463703a34d8404ef339b7d18536 (patch)
tree97334c2dd0de14ec3602096ce806e58b3b048e6d /src
parentb351f6ff220560d96a260d8dd3ad794000923481 (diff)
downloadniri-87b6c1262544a463703a34d8404ef339b7d18536.tar.gz
niri-87b6c1262544a463703a34d8404ef339b7d18536.tar.bz2
niri-87b6c1262544a463703a34d8404ef339b7d18536.zip
Add Shell completions (#1226)
* feat(cli): add subcommand to generate shell completions * Update src/cli.rs Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com> --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/cli.rs3
-rw-r--r--src/main.rs6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/cli.rs b/src/cli.rs
index 9b106485..a01bc109 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -2,6 +2,7 @@ use std::ffi::OsString;
use std::path::PathBuf;
use clap::{Parser, Subcommand};
+use clap_complete::Shell;
use niri_ipc::{Action, OutputAction};
use crate::utils::version;
@@ -54,6 +55,8 @@ pub enum Sub {
},
/// Cause a panic to check if the backtraces are good.
Panic,
+ /// Generate shell completions.
+ Completions { shell: Shell },
}
#[derive(Subcommand)]
diff --git a/src/main.rs b/src/main.rs
index e11cd112..fd34ae82 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,7 +9,7 @@ use std::path::{Path, PathBuf};
use std::process::Command;
use std::{env, mem};
-use clap::Parser;
+use clap::{CommandFactory, Parser};
use directories::ProjectDirs;
use niri::cli::{Cli, Sub};
#[cfg(feature = "dbus")]
@@ -106,6 +106,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
return Ok(());
}
Sub::Panic => cause_panic(),
+ Sub::Completions { shell } => {
+ clap_complete::generate(shell, &mut Cli::command(), "niri", &mut io::stdout());
+ return Ok(());
+ }
}
}