1
- use clap:: { Command , CommandFactory , Parser } ;
1
+ use clap:: { CommandFactory , Parser } ;
2
+ use clap_complete:: Shell ;
2
3
use clap_complete:: { generate, Generator } ;
3
- use cli_config:: { App , Commands , EncodeArgs } ;
4
+ use clap_complete_nushell:: Nushell ;
5
+ use cli_config:: { App , Commands , EncodeArgs , ShellCompletion } ;
4
6
use std:: io;
5
7
use std:: process:: exit;
6
8
use translators:: decode:: { decode_token, print_decoded_token} ;
@@ -16,8 +18,22 @@ fn warn_unsupported(arguments: &EncodeArgs) {
16
18
} ;
17
19
}
18
20
19
- fn print_completions < G : Generator > ( gen : G , cmd : & mut Command ) {
20
- generate ( gen, cmd, cmd. get_name ( ) . to_string ( ) , & mut io:: stdout ( ) ) ;
21
+ fn print_completions ( shell : & ShellCompletion ) {
22
+ fn generate_completions ( gen : impl Generator ) {
23
+ let mut cmd = App :: command ( ) ;
24
+ let name = cmd. get_name ( ) . to_string ( ) ;
25
+
26
+ generate ( gen, & mut cmd, name, & mut io:: stdout ( ) ) ;
27
+ }
28
+
29
+ match shell {
30
+ ShellCompletion :: Nushell => generate_completions ( Nushell ) ,
31
+ ShellCompletion :: Bash => generate_completions ( Shell :: Bash ) ,
32
+ ShellCompletion :: Elvish => generate_completions ( Shell :: Elvish ) ,
33
+ ShellCompletion :: Fish => generate_completions ( Shell :: Fish ) ,
34
+ ShellCompletion :: Powershell => generate_completions ( Shell :: PowerShell ) ,
35
+ ShellCompletion :: Zsh => generate_completions ( Shell :: Zsh ) ,
36
+ }
21
37
}
22
38
23
39
fn main ( ) {
@@ -48,8 +64,7 @@ fn main() {
48
64
) ;
49
65
}
50
66
Commands :: Completion ( arguments) => {
51
- let mut cmd = App :: command ( ) ;
52
- print_completions ( arguments. shell , & mut cmd) ;
67
+ print_completions ( & arguments. shell ) ;
53
68
exit ( 0 )
54
69
}
55
70
} ;
0 commit comments