2020-12-27 19:47:30 +00:00
use super ::* ;
2020-12-27 22:50:20 +00:00
fn build_app ( ) -> App < 'static > {
build_app_with_name ( " myapp " )
}
fn build_app_with_name ( s : & 'static str ) -> App < 'static > {
App ::new ( s )
2021-10-08 17:05:40 +00:00
. version ( " 3.0 " )
2022-02-10 17:51:40 +00:00
. propagate_version ( true )
2020-12-27 22:50:20 +00:00
. about ( " Tests completions " )
. arg (
Arg ::new ( " file " )
. value_hint ( ValueHint ::FilePath )
2021-11-18 16:17:15 +00:00
. help ( " some input file " ) ,
2020-12-27 22:50:20 +00:00
)
. subcommand (
App ::new ( " test " ) . about ( " tests things " ) . arg (
Arg ::new ( " case " )
. long ( " case " )
. takes_value ( true )
2021-11-18 16:17:15 +00:00
. help ( " the case to test " ) ,
2020-12-27 22:50:20 +00:00
) ,
)
}
2020-12-27 19:47:30 +00:00
#[ test ]
fn fish ( ) {
let mut app = build_app ( ) ;
2021-08-18 18:25:43 +00:00
common ( Fish , & mut app , " myapp " , FISH ) ;
2020-12-27 19:47:30 +00:00
}
2021-07-30 03:23:25 +00:00
static FISH : & str = r #" complete -c myapp -n " __fish_use_subcommand " -s h -l help -d 'Print help information'
complete - c myapp - n " __fish_use_subcommand " - s V - l version - d ' Print version information '
2020-12-27 19:47:30 +00:00
complete - c myapp - n " __fish_use_subcommand " - f - a " test " - d ' tests things '
2021-07-30 03:23:25 +00:00
complete - c myapp - n " __fish_use_subcommand " - f - a " help " - d ' Print this message or the help of the given subcommand ( s ) '
2020-12-27 19:47:30 +00:00
complete - c myapp - n " __fish_seen_subcommand_from test " - l case - d ' the case to test ' - r
2021-07-30 03:23:25 +00:00
complete - c myapp - n " __fish_seen_subcommand_from test " - s h - l help - d ' Print help information '
complete - c myapp - n " __fish_seen_subcommand_from test " - s V - l version - d ' Print version information '
2020-12-27 19:47:30 +00:00
" #;
#[ test ]
fn fish_with_special_commands ( ) {
let mut app = build_app_special_commands ( ) ;
2021-08-18 18:25:43 +00:00
common ( Fish , & mut app , " my_app " , FISH_SPECIAL_CMDS ) ;
2020-12-27 19:47:30 +00:00
}
2020-12-27 22:50:20 +00:00
fn build_app_special_commands ( ) -> App < 'static > {
build_app_with_name ( " my_app " )
. subcommand (
App ::new ( " some_cmd " ) . about ( " tests other things " ) . arg (
Arg ::new ( " config " )
. long ( " --config " )
. takes_value ( true )
2021-11-18 16:17:15 +00:00
. help ( " the other case to test " ) ,
2020-12-27 22:50:20 +00:00
) ,
)
2021-10-19 01:38:22 +00:00
. subcommand ( App ::new ( " some-cmd-with-hyphens " ) . alias ( " hyphen " ) )
2020-12-27 22:50:20 +00:00
}
2021-07-30 03:23:25 +00:00
static FISH_SPECIAL_CMDS : & str = r #" complete -c my_app -n " __fish_use_subcommand " -s h -l help -d 'Print help information'
complete - c my_app - n " __fish_use_subcommand " - s V - l version - d ' Print version information '
2020-12-27 19:47:30 +00:00
complete - c my_app - n " __fish_use_subcommand " - f - a " test " - d ' tests things '
complete - c my_app - n " __fish_use_subcommand " - f - a " some_cmd " - d ' tests other things '
2021-10-19 01:38:22 +00:00
complete - c my_app - n " __fish_use_subcommand " - f - a " some-cmd-with-hyphens "
2021-07-30 03:23:25 +00:00
complete - c my_app - n " __fish_use_subcommand " - f - a " help " - d ' Print this message or the help of the given subcommand ( s ) '
2020-12-27 19:47:30 +00:00
complete - c my_app - n " __fish_seen_subcommand_from test " - l case - d ' the case to test ' - r
2021-07-30 03:23:25 +00:00
complete - c my_app - n " __fish_seen_subcommand_from test " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from test " - s V - l version - d ' Print version information '
2020-12-27 19:47:30 +00:00
complete - c my_app - n " __fish_seen_subcommand_from some_cmd " - l config - d ' the other case to test ' - r
2021-07-30 03:23:25 +00:00
complete - c my_app - n " __fish_seen_subcommand_from some_cmd " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd " - s V - l version - d ' Print version information '
2021-10-19 01:38:22 +00:00
complete - c my_app - n " __fish_seen_subcommand_from some-cmd-with-hyphens " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from some-cmd-with-hyphens " - s V - l version - d ' Print version information '
2020-12-27 19:47:30 +00:00
" #;
#[ test ]
fn fish_with_special_help ( ) {
let mut app = build_app_special_help ( ) ;
2021-08-18 18:25:43 +00:00
common ( Fish , & mut app , " my_app " , FISH_SPECIAL_HELP ) ;
2020-12-27 19:47:30 +00:00
}
2020-12-27 22:50:20 +00:00
fn build_app_special_help ( ) -> App < 'static > {
App ::new ( " my_app " )
2021-10-08 17:05:40 +00:00
. version ( " 3.0 " )
2020-12-27 22:50:20 +00:00
. arg (
Arg ::new ( " single-quotes " )
. long ( " single-quotes " )
2021-11-18 16:17:15 +00:00
. help ( " Can be 'always', 'auto', or 'never' " ) ,
2020-12-27 22:50:20 +00:00
)
. arg (
Arg ::new ( " double-quotes " )
. long ( " double-quotes " )
2021-11-18 16:17:15 +00:00
. help ( " Can be \" always \" , \" auto \" , or \" never \" " ) ,
2020-12-27 22:50:20 +00:00
)
. arg (
Arg ::new ( " backticks " )
. long ( " backticks " )
2021-11-18 16:17:15 +00:00
. help ( " For more information see `echo test` " ) ,
2020-12-27 22:50:20 +00:00
)
2021-11-18 16:17:15 +00:00
. arg ( Arg ::new ( " backslash " ) . long ( " backslash " ) . help ( " Avoid ' \\ n' " ) )
2020-12-27 22:50:20 +00:00
. arg (
Arg ::new ( " brackets " )
. long ( " brackets " )
2021-11-18 16:17:15 +00:00
. help ( " List packages [filter] " ) ,
2020-12-27 22:50:20 +00:00
)
. arg (
Arg ::new ( " expansions " )
. long ( " expansions " )
2021-11-18 16:17:15 +00:00
. help ( " Execute the shell command with $SHELL " ) ,
2020-12-27 22:50:20 +00:00
)
}
2021-07-30 03:23:25 +00:00
static FISH_SPECIAL_HELP : & str = r #" complete -c my_app -s h -l help -d 'Print help information'
complete - c my_app - s V - l version - d ' Print version information '
2021-02-22 14:35:07 +00:00
complete - c my_app - l single - quotes - d ' Can be \ ' always \ ' , \ ' auto \ ' , or \ ' never \ ' '
complete - c my_app - l double - quotes - d ' Can be " always " , " auto " , or " never " '
complete - c my_app - l backticks - d ' For more information see ` echo test ` '
complete - c my_app - l backslash - d ' Avoid \ ' \ \ n \ ' '
complete - c my_app - l brackets - d ' List packages [ filter ] '
complete - c my_app - l expansions - d ' Execute the shell command with $SHELL '
2020-12-27 19:47:30 +00:00
" #;
2021-02-15 08:35:25 +00:00
#[ test ]
fn fish_with_aliases ( ) {
let mut app = build_app_with_aliases ( ) ;
2021-08-18 18:25:43 +00:00
common ( Fish , & mut app , " cmd " , FISH_ALIASES ) ;
2021-02-15 08:35:25 +00:00
}
fn build_app_with_aliases ( ) -> App < 'static > {
App ::new ( " cmd " )
2021-10-08 17:05:40 +00:00
. version ( " 3.0 " )
2021-02-15 08:35:25 +00:00
. about ( " testing bash completions " )
. arg (
Arg ::new ( " flag " )
. short ( 'f' )
. visible_short_alias ( 'F' )
. long ( " flag " )
. visible_alias ( " flg " )
2021-11-18 16:17:15 +00:00
. help ( " cmd flag " ) ,
2021-02-15 08:35:25 +00:00
)
. arg (
Arg ::new ( " option " )
. short ( 'o' )
. visible_short_alias ( 'O' )
. long ( " option " )
. visible_alias ( " opt " )
2021-11-18 16:17:15 +00:00
. help ( " cmd option " )
2021-02-15 08:35:25 +00:00
. takes_value ( true ) ,
)
. arg ( Arg ::new ( " positional " ) )
}
2021-02-22 14:35:07 +00:00
static FISH_ALIASES : & str = r #" complete -c cmd -s o -s O -l option -l opt -d 'cmd option' -r
2021-07-30 03:23:25 +00:00
complete - c cmd - s h - l help - d ' Print help information '
complete - c cmd - s V - l version - d ' Print version information '
2021-02-22 14:35:07 +00:00
complete - c cmd - s f - s F - l flag - l flg - d ' cmd flag '
2021-02-15 08:35:25 +00:00
" #;
2021-09-08 14:32:26 +00:00
#[ test ]
fn fish_with_sub_subcommands ( ) {
let mut app = build_app_sub_subcommands ( ) ;
2021-08-18 18:25:43 +00:00
common ( Fish , & mut app , " my_app " , FISH_SUB_SUBCMDS ) ;
2021-09-08 14:32:26 +00:00
}
fn build_app_sub_subcommands ( ) -> App < 'static > {
build_app_with_name ( " my_app " ) . subcommand (
App ::new ( " some_cmd " )
. about ( " top level subcommand " )
. subcommand (
App ::new ( " sub_cmd " ) . about ( " sub-subcommand " ) . arg (
Arg ::new ( " config " )
. long ( " --config " )
. takes_value ( true )
2021-11-18 16:17:15 +00:00
. help ( " the other case to test " ) ,
2021-09-08 14:32:26 +00:00
) ,
) ,
)
}
static FISH_SUB_SUBCMDS : & str = r #" complete -c my_app -n " __fish_use_subcommand " -s h -l help -d 'Print help information'
complete - c my_app - n " __fish_use_subcommand " - s V - l version - d ' Print version information '
complete - c my_app - n " __fish_use_subcommand " - f - a " test " - d ' tests things '
complete - c my_app - n " __fish_use_subcommand " - f - a " some_cmd " - d ' top level subcommand '
complete - c my_app - n " __fish_use_subcommand " - f - a " help " - d ' Print this message or the help of the given subcommand ( s ) '
complete - c my_app - n " __fish_seen_subcommand_from test " - l case - d ' the case to test ' - r
complete - c my_app - n " __fish_seen_subcommand_from test " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from test " - s V - l version - d ' Print version information '
2021-10-12 18:59:56 +00:00
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and not __fish_seen_subcommand_from sub_cmd; and not __fish_seen_subcommand_from help " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and not __fish_seen_subcommand_from sub_cmd; and not __fish_seen_subcommand_from help " - s V - l version - d ' Print version information '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and not __fish_seen_subcommand_from sub_cmd; and not __fish_seen_subcommand_from help " - f - a " sub_cmd " - d ' sub - subcommand '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and not __fish_seen_subcommand_from sub_cmd; and not __fish_seen_subcommand_from help " - f - a " help " - d ' Print this message or the help of the given subcommand ( s ) '
2021-09-08 14:32:26 +00:00
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and __fish_seen_subcommand_from sub_cmd " - l config - d ' the other case to test ' - r
2021-10-12 18:59:56 +00:00
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and __fish_seen_subcommand_from sub_cmd " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and __fish_seen_subcommand_from sub_cmd " - s V - l version - d ' Print version information '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and __fish_seen_subcommand_from help " - s h - l help - d ' Print help information '
complete - c my_app - n " __fish_seen_subcommand_from some_cmd; and __fish_seen_subcommand_from help " - s V - l version - d ' Print version information '
2021-09-08 14:32:26 +00:00
" #;