Skip to content

Commit 8e6a92c

Browse files
authored
Add apt generator for available repo packages (#207)
1 parent 5eaa386 commit 8e6a92c

3 files changed

Lines changed: 32 additions & 2 deletions

File tree

command-signatures/json/apt-get.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"args": {
5656
"generatorName": [
5757
"list_all_deb_files_in_cwd",
58-
"list_all_packages"
58+
"list_available_packages"
5959
]
6060
},
6161
"isVariadic": true,

command-signatures/json/aptitude.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"args": {
2626
"generatorName": [
2727
"list_all_deb_files_in_cwd",
28-
"list_all_packages"
28+
"list_available_packages"
2929
]
3030
},
3131
"isVariadic": true,

command-signatures/src/generators/apt.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ use warp_completion_metadata::{
77
const LIST_ALL_PACKAGES_NAME: &str = "list_all_packages";
88
const LIST_ALL_PACKAGES_COMMAND: &str = r#"dpkg-query --show --showformat '${Package}\n'"#;
99

10+
const LIST_AVAILABLE_PACKAGES_NAME: &str = "list_available_packages";
11+
const LIST_AVAILABLE_PACKAGES_COMMAND: &str = "apt-cache pkgnames";
12+
1013
const LIST_ALL_DEB_FILES_NAME: &str = "list_all_deb_files_in_cwd";
1114
const LIST_ALL_DEB_FILES_COMMAND: &str = r#"find . -maxdepth 1 -type f -name '*.deb'"#;
1215

@@ -21,6 +24,19 @@ pub fn list_all_packages(output: &str) -> GeneratorResults {
2124
targets.into_iter().collect_unordered_results()
2225
}
2326

27+
pub fn list_available_packages(output: &str) -> GeneratorResults {
28+
let mut targets = Vec::new();
29+
for package_name in output.lines() {
30+
if !package_name.is_empty() {
31+
targets.push(Suggestion::with_description(
32+
package_name.to_string(),
33+
"package",
34+
));
35+
}
36+
}
37+
targets.into_iter().collect_unordered_results()
38+
}
39+
2440
pub fn list_all_deb_files_in_cwd(output: &str) -> GeneratorResults {
2541
let mut targets = Vec::new();
2642
for file in output.lines() {
@@ -42,6 +58,13 @@ pub fn apt_get_generators() -> CommandSignatureGenerators {
4258
list_all_packages,
4359
),
4460
)
61+
.add_generator(
62+
LIST_AVAILABLE_PACKAGES_NAME,
63+
Generator::script(
64+
CommandBuilder::single_command(LIST_AVAILABLE_PACKAGES_COMMAND),
65+
list_available_packages,
66+
),
67+
)
4568
.add_generator(
4669
LIST_ALL_DEB_FILES_NAME,
4770
Generator::script(
@@ -60,6 +83,13 @@ pub fn aptitude_generators() -> CommandSignatureGenerators {
6083
list_all_packages,
6184
),
6285
)
86+
.add_generator(
87+
LIST_AVAILABLE_PACKAGES_NAME,
88+
Generator::script(
89+
CommandBuilder::single_command(LIST_AVAILABLE_PACKAGES_COMMAND),
90+
list_available_packages,
91+
),
92+
)
6393
.add_generator(
6494
LIST_ALL_DEB_FILES_NAME,
6595
Generator::script(

0 commit comments

Comments
 (0)