Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: export argc__fn and argc__args #106

Merged
merged 1 commit into from
May 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/argc_value.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ pub enum ArgcValue {
PositionalSingle(String, String),
PositionalSingleFn(String, String),
PositionalMultiple(String, Vec<String>),
ExtraPositionalMultiple(Vec<String>),
CmdFn(String),
ParamFn(String),
Error((String, i32)),
Expand Down Expand Up @@ -81,7 +82,20 @@ impl ArgcValue {
));
positional_args.extend(values);
}
ArgcValue::ExtraPositionalMultiple(values) => {
let values = values
.iter()
.map(|v| escape_shell_words(v))
.collect::<Vec<String>>();
positional_args.extend(values);
}
ArgcValue::CmdFn(name) => {
variables.push(format!(
"{}__args=( {} )",
VARIABLE_PREFIX,
positional_args.join(" ")
));
variables.push(format!("{}__fn={}", VARIABLE_PREFIX, name));
if positional_args.is_empty() {
variables.push(name.to_string());
} else {
Expand Down
3 changes: 1 addition & 2 deletions src/matcher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,7 @@ impl<'a, 'b> Matcher<'a, 'b> {
let (cmd, cmd_paths) = self.get_cmd_and_paths(self.cmds.len() - 1);
let mut output = if cmd.without_params_or_subcommands() && !self.positional_args.is_empty()
{
vec![ArgcValue::PositionalMultiple(
"_args".into(),
vec![ArgcValue::ExtraPositionalMultiple(
self.positional_args.iter().map(|v| v.to_string()).collect(),
)]
} else {
Expand Down
66 changes: 0 additions & 66 deletions tests/main_fn_test.rs

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

2 changes: 2 additions & 0 deletions tests/snapshots/integration__spec_test__spec_cmd_alias.snap
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ RUN
spec alias

OUTPUT
argc__args=( )
argc__fn=cmd_alias
cmd_alias

Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ spec cmd_combine_shorts -ac yes
OUTPUT
argc_a=1
argc_c=yes
argc__args=( )
argc__fn=cmd_combine_shorts
cmd_combine_shorts

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_flag_formats --foo5 --foo5 --foo5

OUTPUT
argc_foo5=3
argc__args=( )
argc__fn=cmd_flag_formats
cmd_flag_formats

Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@ argc_opt7=a
argc_opt8=a
argc_opt9=`_fn_foo`
argc_op11=a1
argc__args=( )
argc__fn=cmd_option_names
cmd_option_names

Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@ argc_opt7=a
argc_opt8=a
argc_opt9=`_fn_foo`
argc_op11=a1
argc__args=( )
argc__fn=cmd_option_names
cmd_option_names

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_option_notations --opt2 foo bar

OUTPUT
argc_opt2=( foo bar )
argc__args=( )
argc__fn=cmd_option_notations
cmd_option_notations

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_positional_with_choices_and_default

OUTPUT
argc_arg=a
argc__args=( a )
argc__fn=cmd_positional_with_choices_and_default
cmd_positional_with_choices_and_default a

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_positional_with_choices a

OUTPUT
argc_arg=a
argc__args=( a )
argc__fn=cmd_positional_with_choices
cmd_positional_with_choices a

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_positional_with_choices_fn2 xyz

OUTPUT
argc_arg=xyz
argc__args=( xyz )
argc__fn=cmd_positional_with_choices_fn2
cmd_positional_with_choices_fn2 xyz

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_positional_with_default

OUTPUT
argc_arg=a
argc__args=( a )
argc__fn=cmd_positional_with_default
cmd_positional_with_default a

Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ OUTPUT
argc_flag1=1
argc_opt1=A
argc_arg1=( AB 'C D' )
argc__args=( AB 'C D' )
argc__fn=cmd_preferred
cmd_preferred AB 'C D'

Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ spec cmd_single_dash -flag1 -opt1 abc
OUTPUT
argc_flag1=1
argc_opt1=abc
argc__args=( )
argc__fn=cmd_single_dash
cmd_single_dash

Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ spec cmd_two_multiple_positionals abc def cjk
OUTPUT
argc_val1=( abc def )
argc_val2=( cjk )
argc__args=( abc def cjk )
argc__fn=cmd_two_multiple_positionals
cmd_two_multiple_positionals abc def cjk

Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ spec cmd_two_multiple_positionals -- abc def cjk
OUTPUT
argc_val1=( abc def )
argc_val2=( cjk )
argc__args=( abc def cjk )
argc__fn=cmd_two_multiple_positionals
cmd_two_multiple_positionals abc def cjk

Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ spec cmd_two_multiple_positionals abc -- def cjk
OUTPUT
argc_val1=( abc )
argc_val2=( def cjk )
argc__args=( abc def cjk )
argc__fn=cmd_two_multiple_positionals
cmd_two_multiple_positionals abc def cjk

Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ OUTPUT
argc_hyphen_flag=1
argc_hyphen_option=bar
argc_hyphen_positional=foo
argc__args=( foo )
argc__fn=cmd_with_hyphens
cmd_with_hyphens foo

Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ RUN
spec cmd_without_any_arg

OUTPUT
argc__args=( )
argc__fn=cmd_without_any_arg
cmd_without_any_arg

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ spec cmd_without_any_arg --opt2 foo bar

OUTPUT
argc__args=( --opt2 foo bar )
argc__fn=cmd_without_any_arg
cmd_without_any_arg --opt2 foo bar

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ spec cmd_without_any_arg foo bar

OUTPUT
argc__args=( foo bar )
argc__fn=cmd_without_any_arg
cmd_without_any_arg foo bar

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ spec cmd_without_any_arg foo bar

OUTPUT
argc__args=( foo bar )
argc__fn=cmd_without_any_arg
cmd_without_any_arg foo bar

Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ RUN
spec cmd_nested_command2

OUTPUT
argc__args=( )
argc__fn=cmd_nested_command2::main
cmd_nested_command2::main

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ spec cmd_nested_command foo --opt1 abc

OUTPUT
argc_opt1=abc
argc__args=( )
argc__fn=cmd_nested_command::foo
cmd_nested_command::foo

1 change: 0 additions & 1 deletion tests/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ mod export;
mod fail_test;
#[cfg(unix)]
mod interrupt;
mod main_fn_test;
mod param_fn_test;
mod spec_test;

Expand Down