@@ -7,6 +7,9 @@ use warp_completion_metadata::{
77const LIST_ALL_PACKAGES_NAME : & str = "list_all_packages" ;
88const 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+
1013const LIST_ALL_DEB_FILES_NAME : & str = "list_all_deb_files_in_cwd" ;
1114const 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+
2440pub 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