Skip to content

Commit e829526

Browse files
committed
Append command line arguments after alias arguments
Alias arguments are in order of expansion while command line arguments are always last.
1 parent 24708a3 commit e829526

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

lib/cli/mastermind/arg_parse.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ def initialize(arguments=ARGV)
2222
end
2323

2424
def do_command_expansion!(config)
25+
@alias_arguments = []
2526

2627
@mastermind_arguments.map! do |argument|
2728
expand_argument(config, argument)
2829
end
2930

31+
@plan_arguments = @alias_arguments + @plan_arguments
32+
3033
@mastermind_arguments.flatten!
3134
end
3235

@@ -102,7 +105,7 @@ def expand_argument(config, argument)
102105

103106
if plan_arguments
104107
plan_arguments.shift # removes the --
105-
@plan_arguments.concat plan_arguments
108+
@alias_arguments.concat plan_arguments
106109
end
107110

108111
dealiased = plan_names

spec/cli/mastermind/arg_parse_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
config.define_alias('sao', 'shorter argument option')
1010
config.define_alias('ssao', 'shorter sao')
1111
config.define_alias('swa', 'shorter with -- arguments')
12+
config.define_alias('sswa', 'swa -- another')
1213
end
1314

1415
it 'expands aliases from the command line' do
@@ -40,5 +41,26 @@
4041

4142
expect(actual).to eq %w[ arguments ]
4243
end
44+
45+
it 'prepends alias arguments' do
46+
parser.instance_variable_set('@mastermind_arguments', ['swa'])
47+
parser.instance_variable_set('@plan_arguments', ['second'])
48+
49+
parser.do_command_expansion! config
50+
51+
actual = parser.instance_variable_get('@plan_arguments')
52+
53+
expect(actual).to eq %w[ arguments second ]
54+
end
55+
56+
it 'prepends alias arguments in the order their expanded' do
57+
parser.instance_variable_set('@mastermind_arguments', ['sswa'])
58+
59+
parser.do_command_expansion! config
60+
61+
actual = parser.instance_variable_get('@plan_arguments')
62+
63+
expect(actual).to eq %w[ arguments another ]
64+
end
4365
end
4466
end

0 commit comments

Comments
 (0)