Skip to content

Commit 05b2c67

Browse files
committed
Merge branch 'pr-15-shell-completions'
2 parents 2d53f13 + 9dff3ce commit 05b2c67

16 files changed

Lines changed: 85 additions & 43 deletions

File tree

Cargo.lock

Lines changed: 11 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ categories = ["development-tools", "command-line-utilities"]
1515
[dependencies]
1616
anyhow = "1.0.89"
1717
clap = { version = "4.5.20", features = ["derive"] }
18+
clap_complete = "^4.5"
1819
copypasta = "0.8.2"
1920
dirs = "5.0.1"
2021
human-panic = "2.0.2"
@@ -25,7 +26,10 @@ ratatui = "0.28.1"
2526
serde = { version = "1.0.210", features = ["default", "derive"] }
2627
serde_json = "1.0.128"
2728
tui-input = "0.10.1"
28-
ureq = { version = "2.10.1", features = ["gzip", "native-tls"], default-features = false }
29+
ureq = { version = "2.10.1", features = [
30+
"gzip",
31+
"native-tls",
32+
], default-features = false }
2933
url = "2.5.2"
3034
yansi = "1.0.1"
3135

@@ -53,16 +57,16 @@ pkg-url = "{ repo }/releases/download/v{ version }/{ name }-macos-arm64"
5357

5458
[package.metadata.cross.target.x86_64-unknown-linux-gnu]
5559
pre-build = [
56-
"dpkg --add-architecture $CROSS_DEB_ARCH",
57-
"apt-get update && apt-get --assume-yes install pkg-config libssl-dev:$CROSS_DEB_ARCH"
60+
"dpkg --add-architecture $CROSS_DEB_ARCH",
61+
"apt-get update && apt-get --assume-yes install pkg-config libssl-dev:$CROSS_DEB_ARCH",
5862
]
5963
[package.metadata.cross.target.i686-unknown-linux-gnu]
6064
pre-build = [
61-
"dpkg --add-architecture $CROSS_DEB_ARCH",
62-
"apt-get update && apt-get --assume-yes install pkg-config libssl-dev:$CROSS_DEB_ARCH"
65+
"dpkg --add-architecture $CROSS_DEB_ARCH",
66+
"apt-get update && apt-get --assume-yes install pkg-config libssl-dev:$CROSS_DEB_ARCH",
6367
]
6468
[package.metadata.cross.target.aarch64-unknown-linux-gnu]
6569
pre-build = [
66-
"dpkg --add-architecture $CROSS_DEB_ARCH",
67-
"apt-get update && apt-get --assume-yes install pkg-config libssl-dev:$CROSS_DEB_ARCH"
70+
"dpkg --add-architecture $CROSS_DEB_ARCH",
71+
"apt-get update && apt-get --assume-yes install pkg-config libssl-dev:$CROSS_DEB_ARCH",
6872
]

src/cli.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::template::item::Template;
22
use crate::template::list::TemplateList;
33
use anyhow::{bail, Context, Result};
44
use clap::{Args, Parser, Subcommand};
5+
use clap_complete::Shell;
56
use once_cell::sync::Lazy;
67

78
const LONG_ABOUT: &str = r"
@@ -66,6 +67,11 @@ pub enum Commands {
6667
Create(CommandCreate),
6768
/// Choose templates interactively from the GitHub & TopTal collections
6869
Search,
70+
/// Generate completions to stdout
71+
Completions {
72+
/// Specify desired shell
73+
shell: Shell,
74+
},
6975
}
7076

7177
impl Cli {
@@ -76,6 +82,9 @@ impl Cli {
7682
Some(Commands::Search) => {
7783
bail!("Cannot provide template arguments to 'search' command")
7884
}
85+
Some(Commands::Completions { shell: _ }) => {
86+
bail!("Cannot provide template arguments to 'completions' command")
87+
}
7988
None => bail!("Cannot provide template arguments to an unknown command"),
8089
};
8190

src/commands/completions.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use std::io;
2+
3+
use anyhow::Result;
4+
use clap::CommandFactory;
5+
use clap_complete::{generate, Shell};
6+
7+
use crate::cli::Cli;
8+
9+
pub fn command(shell: &Shell) -> Result<()> {
10+
let cmd = &mut Cli::command();
11+
12+
generate(*shell, cmd, cmd.get_name().to_string(), &mut io::stdout());
13+
14+
Ok(())
15+
}

src/commands/create.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ pub fn command(cmd: &CommandCreate) -> Result<()> {
7272
}
7373

7474
// Print template to stdout
75-
println!("{}", output);
75+
println!("{output}");
7676

7777
Ok(())
7878
}

src/commands/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
pub mod completions;
12
pub mod create;
23
pub mod search;

src/commands/search/framework/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/// From: https://github.com/ratatui-org/rust-tui-template
2-
2+
///
33
/// Terminal UI events handler
44
pub mod event;
55

src/commands/search/handlers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ pub fn handle_mouse_events(event: MouseEvent, app: &mut UIState) -> Result<()> {
209209
MouseEventKind::ScrollDown => {
210210
if now.duration_since(app.last_scroll_time) > Duration::from_millis(15) {
211211
app.list_next(if is_shift || is_alt {
212-
println!("Scrolling {} {}", is_shift, is_alt);
212+
println!("Scrolling {is_shift} {is_alt}");
213213
Some(10)
214214
} else {
215215
Some(1)

src/commands/search/views/home/header.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use ratatui::{text, Frame};
1010
fn create_tabs<'a>(tab_titles: Vec<String>, list_tab: usize) -> anyhow::Result<Tabs<'a>> {
1111
let items = tab_titles
1212
.into_iter()
13-
.map(|t| Line::from(format!(" {} ", t)))
13+
.map(|t| Line::from(format!(" {t} ")))
1414
.collect::<Vec<Line>>();
1515
let block = Block::default()
1616
.borders(Borders::ALL)

src/commands/search/views/home/main_side.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fn create_selected<'a>(
3636
.map(|s| {
3737
let name = s.template.value.name().unwrap();
3838
let prefix = s.kind.name();
39-
ListItem::new(format!("{} - {}", prefix, name))
39+
ListItem::new(format!("{prefix} - {name}"))
4040
})
4141
.collect();
4242

0 commit comments

Comments
 (0)