convoy 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/convoy.gemspec +14 -11
- data/examples/basic_depends_on +2 -2
- data/lib/convoy/action_command/base.rb +9 -9
- data/lib/convoy/app.rb +13 -13
- data/lib/convoy/error/error.rb +2 -2
- data/lib/convoy/formatter/command.rb +2 -2
- data/lib/convoy/formatter/commands.rb +1 -1
- data/lib/convoy/formatter/default_help_formatter.rb +14 -21
- data/lib/convoy/formatter/option.rb +2 -2
- data/lib/convoy/formatter/options.rb +2 -2
- data/lib/convoy/formatter/shell_command_executor.rb +1 -1
- data/lib/convoy/formatter/stream_output_formatter.rb +10 -10
- data/lib/convoy/formatter/string_grid.rb +3 -3
- data/lib/convoy/formatter/string_splitter.rb +1 -1
- data/lib/convoy/global_pre_parser.rb +2 -2
- data/lib/convoy/logger.rb +3 -3
- data/lib/convoy/option_parser.rb +13 -13
- data/lib/convoy/setup/configuration/generator.rb +7 -7
- data/lib/convoy/setup/configuration/loader.rb +1 -1
- data/lib/convoy/setup/configuration/locator/executing_script_directory.rb +1 -1
- data/lib/convoy/setup/dsl/command.rb +10 -10
- data/lib/convoy/setup/dsl/global.rb +1 -1
- data/lib/convoy/setup/dsl/options.rb +7 -7
- data/lib/convoy/setup_accessor.rb +5 -5
- data/lib/convoy/trollop.rb +42 -33
- data/lib/convoy/utils.rb +2 -2
- data/spec/integration/basic_config_file_spec.rb +3 -3
- data/spec/integration/basic_depends_on_spec.rb +2 -2
- data/spec/lib/convoy/action_command/base_spec.rb +32 -32
- data/spec/lib/convoy/formatter/option_spec.rb +1 -1
- data/spec/lib/convoy/formatter/stream_output_formatter_spec.rb +1 -1
- data/spec/lib/convoy/setup/configuration/merge_tool_spec.rb +10 -10
- data/spec/lib/convoy/setup/configuration/reader_spec.rb +3 -3
- data/spec/lib/convoy/setup/configuration/writer_spec.rb +12 -12
- data/spec/lib/convoy/utils_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/support/shared_contexts/integration_setup.rb +5 -5
- data/version.rb +1 -0
- metadata +24 -5
- data/.ruby-version +0 -1
- data/.travis.yml +0 -8
@@ -21,10 +21,10 @@ module Convoy
|
|
21
21
|
commands.each do |command_name|
|
22
22
|
command_name = command_name.to_sym
|
23
23
|
#next if command_name == :convoy
|
24
|
-
options[command_name]
|
25
|
-
options[command_name][:options]
|
24
|
+
options[command_name] = {}
|
25
|
+
options[command_name][:options] = {}
|
26
26
|
options[command_name][:commands] = {}
|
27
|
-
current_context
|
27
|
+
current_context = context.dup
|
28
28
|
current_context << command_name
|
29
29
|
options(current_context, options[command_name][:options]) #command_options
|
30
30
|
options_for_commands(setup.canonical_command_names_for(current_context), current_context, options[command_name][:commands])
|
@@ -34,17 +34,17 @@ module Convoy
|
|
34
34
|
def init_config_hash
|
35
35
|
{
|
36
36
|
:global => {
|
37
|
-
:options
|
37
|
+
:options => {},
|
38
38
|
:commands => {}
|
39
39
|
},
|
40
|
-
:user
|
40
|
+
:user => {}
|
41
41
|
}
|
42
42
|
end
|
43
43
|
|
44
44
|
def options(context = [], options = {})
|
45
45
|
command_names = setup.command_names_for(context)
|
46
|
-
parser
|
47
|
-
parser
|
46
|
+
parser = init_parser(command_names)
|
47
|
+
parser = add_setup_options_to(parser, context)
|
48
48
|
options.merge!(default_option_values(parser))
|
49
49
|
end
|
50
50
|
|
@@ -5,7 +5,7 @@ module Convoy
|
|
5
5
|
class ExecutingScriptDirectory < Base
|
6
6
|
def locate
|
7
7
|
location_directory = File.dirname($0)
|
8
|
-
filepath
|
8
|
+
filepath = File.expand_path(File.join(location_directory, filename))
|
9
9
|
File.exists?(filepath) ? filepath : nil
|
10
10
|
end
|
11
11
|
end
|
@@ -4,8 +4,8 @@ module Convoy
|
|
4
4
|
class Command
|
5
5
|
def initialize(name, options = {}, &block)
|
6
6
|
reset(name)
|
7
|
-
@description
|
8
|
-
@aliases
|
7
|
+
@description = options[:description] || options[:desc] || ""
|
8
|
+
@aliases = [options[:aliases] || []].flatten
|
9
9
|
@requires_arguments ||= options[:requires_arguments]
|
10
10
|
block.call(self) if block_given?
|
11
11
|
rescue => e
|
@@ -22,8 +22,8 @@ module Convoy
|
|
22
22
|
|
23
23
|
def command(name, options = {}, &block)
|
24
24
|
options[:requires_arguments] = @requires_arguments
|
25
|
-
command
|
26
|
-
aliases
|
25
|
+
command = Command.new(name.to_sym, options, &block)
|
26
|
+
aliases = [options[:aliases] || []].flatten + [name]
|
27
27
|
aliases.each do |name|
|
28
28
|
@commands[name.to_sym] = command
|
29
29
|
end
|
@@ -48,13 +48,13 @@ module Convoy
|
|
48
48
|
private
|
49
49
|
|
50
50
|
def reset(name)
|
51
|
-
@name
|
52
|
-
@summary
|
53
|
-
@description
|
51
|
+
@name = name
|
52
|
+
@summary = nil
|
53
|
+
@description = nil
|
54
54
|
@requires_arguments = false
|
55
|
-
@commands
|
56
|
-
@options
|
57
|
-
@action
|
55
|
+
@commands = {}
|
56
|
+
@options = Options.new(name)
|
57
|
+
@action = Action.new(name)
|
58
58
|
custom_reset
|
59
59
|
end
|
60
60
|
|
@@ -12,14 +12,14 @@ module Convoy
|
|
12
12
|
|
13
13
|
def initialize(command_name = :global)
|
14
14
|
@command_name = command_name
|
15
|
-
@options
|
15
|
+
@options = {}
|
16
16
|
@dependencies = {}
|
17
|
-
@conflicts
|
18
|
-
@validations
|
17
|
+
@conflicts = {}
|
18
|
+
@validations = {}
|
19
19
|
end
|
20
20
|
|
21
21
|
def opt(name, desc="", opts={})
|
22
|
-
opts[:desc]
|
22
|
+
opts[:desc] ||= desc
|
23
23
|
@options[name] ||= opts
|
24
24
|
dependency(name, :on => opts[:depends_on]) if opts[:depends_on]
|
25
25
|
conflict(*[name, opts[:conflicts_with]].flatten) if opts[:conflicts_with]
|
@@ -27,7 +27,7 @@ module Convoy
|
|
27
27
|
|
28
28
|
def validate(name, description, &block)
|
29
29
|
@validations[name] ||= []
|
30
|
-
@validations[name] << {:desc => description, :block => block}
|
30
|
+
@validations[name] << { :desc => description, :block => block }
|
31
31
|
end
|
32
32
|
|
33
33
|
def dependency(option_name, opts = {})
|
@@ -42,8 +42,8 @@ module Convoy
|
|
42
42
|
def conflict(*opts)
|
43
43
|
opts.each do |opt|
|
44
44
|
conflicts_for_opt = opts.reject { |value| value == opt }
|
45
|
-
@conflicts[opt]
|
46
|
-
@conflicts[opt]
|
45
|
+
@conflicts[opt] ||= []
|
46
|
+
@conflicts[opt] += conflicts_for_opt
|
47
47
|
@conflicts[opt].uniq!
|
48
48
|
end
|
49
49
|
end
|
@@ -98,7 +98,7 @@ module Convoy
|
|
98
98
|
|
99
99
|
def command_aliases_for(command_name, context = [])
|
100
100
|
with_context(context) do |current_context|
|
101
|
-
commands
|
101
|
+
commands = fetch_instance_variable_from(current_context, :commands)
|
102
102
|
description = fetch_instance_variable_from(commands[command_name], :aliases)
|
103
103
|
end
|
104
104
|
end
|
@@ -121,11 +121,11 @@ module Convoy
|
|
121
121
|
end
|
122
122
|
|
123
123
|
def with_context(context = [], &block)
|
124
|
-
context
|
125
|
-
context
|
124
|
+
context = [] if context.nil? || context.empty?
|
125
|
+
context = [context] unless context.kind_of?(Array)
|
126
126
|
current_context = global_instance
|
127
127
|
context.each do |command_name|
|
128
|
-
commands
|
128
|
+
commands = fetch_instance_variable_from(current_context, :commands)
|
129
129
|
current_context = commands[command_name.to_sym]
|
130
130
|
end
|
131
131
|
block.call(current_context)
|
@@ -137,7 +137,7 @@ module Convoy
|
|
137
137
|
|
138
138
|
def action_block_from(context_object)
|
139
139
|
action_object = fetch_instance_variable_from(context_object, :action)
|
140
|
-
block
|
140
|
+
block = fetch_instance_variable_from(action_object, :block)
|
141
141
|
#TODO make sure that if there is no block we exit with a client error
|
142
142
|
end
|
143
143
|
|
data/lib/convoy/trollop.rb
CHANGED
@@ -60,7 +60,7 @@ module Trollop
|
|
60
60
|
## The complete set of legal values for the +:type+ parameter of #opt.
|
61
61
|
TYPES = FLAG_TYPES + SINGLE_ARG_TYPES + MULTI_ARG_TYPES
|
62
62
|
|
63
|
-
INVALID_SHORT_ARG_REGEX = /[
|
63
|
+
INVALID_SHORT_ARG_REGEX = /[-]/ #:nodoc:
|
64
64
|
|
65
65
|
## The values from the commandline that were not interpreted by #parse.
|
66
66
|
attr_reader :leftovers
|
@@ -73,16 +73,16 @@ module Trollop
|
|
73
73
|
|
74
74
|
## Initializes the parser, and instance-evaluates any block given.
|
75
75
|
def initialize *a, &b
|
76
|
-
@version
|
77
|
-
@leftovers
|
78
|
-
@specs
|
79
|
-
@long
|
80
|
-
@short
|
81
|
-
@order
|
82
|
-
@constraints
|
83
|
-
@stop_words
|
76
|
+
@version = nil
|
77
|
+
@leftovers = []
|
78
|
+
@specs = {}
|
79
|
+
@long = {}
|
80
|
+
@short = {}
|
81
|
+
@order = []
|
82
|
+
@constraints = []
|
83
|
+
@stop_words = []
|
84
84
|
@stop_on_unknown = false
|
85
|
-
@help_formatter
|
85
|
+
@help_formatter = nil
|
86
86
|
|
87
87
|
#instance_eval(&b) if b # can't take arguments
|
88
88
|
cloaker(&b).bind(self).call(*a) if b
|
@@ -257,10 +257,10 @@ module Trollop
|
|
257
257
|
## fill in :multi
|
258
258
|
opts[:multi] ||= false
|
259
259
|
|
260
|
-
opts[:desc]
|
261
|
-
@long[opts[:long]]
|
260
|
+
opts[:desc] ||= desc
|
261
|
+
@long[opts[:long]] = name
|
262
262
|
@short[opts[:short]] = name if opts[:short] && opts[:short] != :none
|
263
|
-
@specs[name]
|
263
|
+
@specs[name] = opts
|
264
264
|
@order << [:opt, name]
|
265
265
|
end
|
266
266
|
|
@@ -327,7 +327,7 @@ module Trollop
|
|
327
327
|
##
|
328
328
|
## throws CommandlineError, HelpNeeded, and VersionNeeded exceptions.
|
329
329
|
def parse cmdline=ARGV
|
330
|
-
vals
|
330
|
+
vals = {}
|
331
331
|
required = {}
|
332
332
|
|
333
333
|
opt :version, 'Prints version and exits' if @version unless @specs[:version] || @long['version']
|
@@ -335,8 +335,8 @@ module Trollop
|
|
335
335
|
|
336
336
|
@specs.each do |sym, opts|
|
337
337
|
required[sym] = true if opts[:required]
|
338
|
-
vals[sym]
|
339
|
-
vals[sym]
|
338
|
+
vals[sym] = opts[:default]
|
339
|
+
vals[sym] = [] if opts[:multi] && !opts[:default] # multi arguments default to [], not nil
|
340
340
|
end
|
341
341
|
|
342
342
|
resolve_default_short_options!
|
@@ -358,7 +358,7 @@ module Trollop
|
|
358
358
|
@long[$1] || @long["no-#{$1}"]
|
359
359
|
else
|
360
360
|
# raise CommandlineError, "invalid argument syntax: '#{arg}'"
|
361
|
-
puts "\n
|
361
|
+
puts "\n \x1B[48;5;196m Error \x1B[0m \xe2\x86\x92 Invalid argument syntax: #{arg}\n\n"
|
362
362
|
exit
|
363
363
|
end
|
364
364
|
|
@@ -366,20 +366,20 @@ module Trollop
|
|
366
366
|
|
367
367
|
# raise CommandlineError, "unknown argument '#{arg}'" unless sym
|
368
368
|
unless sym
|
369
|
-
puts "\n
|
369
|
+
puts "\n \x1B[48;5;196m Error \x1B[0m \xe2\x86\x92 Unknown flag: #{arg}\n\n"
|
370
370
|
exit
|
371
371
|
end
|
372
372
|
|
373
373
|
if given_args.include?(sym) && !@specs[sym][:multi]
|
374
374
|
# raise CommandlineError, "option '#{arg}' specified multiple times"
|
375
|
-
puts "\n
|
375
|
+
puts "\n \x1B[48;5;196m Error \x1B[0m \xe2\x86\x92 Flag specified multiple times: #{arg}\n\n"
|
376
376
|
exit
|
377
377
|
end
|
378
378
|
|
379
|
-
given_args[sym]
|
380
|
-
given_args[sym][:arg]
|
379
|
+
given_args[sym] ||= {}
|
380
|
+
given_args[sym][:arg] = arg
|
381
381
|
given_args[sym][:negative_given] = negative_given
|
382
|
-
given_args[sym][:params]
|
382
|
+
given_args[sym][:params] ||= []
|
383
383
|
|
384
384
|
# The block returns the number of parameters taken.
|
385
385
|
num_params_taken = 0
|
@@ -408,14 +408,20 @@ module Trollop
|
|
408
408
|
|
409
409
|
case type
|
410
410
|
when :depends
|
411
|
-
syms.each { |sym|
|
411
|
+
syms.each { |sym|
|
412
|
+
Blufin::Terminal::error('Missing constraint', "--#{@specs[constraint_sym][:long]} requires --#{@specs[sym][:long]}") unless given_args.include? sym
|
413
|
+
}
|
412
414
|
when :conflicts
|
413
|
-
syms.each { |sym|
|
415
|
+
syms.each { |sym|
|
416
|
+
Blufin::Terminal::error('Conflicting constraint', "--#{@specs[constraint_sym][:long]} conflicts with --#{@specs[sym][:long]}") if given_args.include?(sym) && (sym != constraint_sym)
|
417
|
+
}
|
414
418
|
end
|
415
419
|
end
|
416
420
|
|
417
421
|
required.each do |sym, val|
|
418
|
-
|
422
|
+
unless given_args.include? sym
|
423
|
+
Blufin::Terminal::error('Missing option', "option --#{@specs[sym][:long]} must be specified")
|
424
|
+
end
|
419
425
|
end
|
420
426
|
|
421
427
|
## parse parameters
|
@@ -423,7 +429,10 @@ module Trollop
|
|
423
429
|
arg, params, negative_given = given_data.values_at :arg, :params, :negative_given
|
424
430
|
|
425
431
|
opts = @specs[sym]
|
426
|
-
|
432
|
+
|
433
|
+
if params.empty? && opts[:type] != :flag
|
434
|
+
Blufin::Terminal::error('Missing parameter', "option '#{arg}' needs a parameter")
|
435
|
+
end
|
427
436
|
|
428
437
|
vals["#{sym}_given".intern] = true # mark argument as specified on the commandline
|
429
438
|
|
@@ -516,7 +525,7 @@ module Trollop
|
|
516
525
|
end
|
517
526
|
end
|
518
527
|
|
519
|
-
leftcol_width
|
528
|
+
leftcol_width = left.values.map { |s| s.length }.max || 0
|
520
529
|
rightcol_start = leftcol_width + 6 # spaces
|
521
530
|
|
522
531
|
unless @order.size > 0 && @order.first.first == :text
|
@@ -600,7 +609,7 @@ module Trollop
|
|
600
609
|
## yield successive arg, parameter pairs
|
601
610
|
def each_arg args
|
602
611
|
remains = []
|
603
|
-
i
|
612
|
+
i = 0
|
604
613
|
|
605
614
|
until i >= args.length
|
606
615
|
if @stop_words.member? args[i]
|
@@ -695,7 +704,7 @@ module Trollop
|
|
695
704
|
|
696
705
|
def collect_argument_parameters args, start_at
|
697
706
|
params = []
|
698
|
-
pos
|
707
|
+
pos = start_at
|
699
708
|
while args[pos] && args[pos] !~ PARAM_RE && !@stop_words.member?(args[pos]) do
|
700
709
|
params << args[pos]
|
701
710
|
pos += 1
|
@@ -712,16 +721,16 @@ module Trollop
|
|
712
721
|
c = opts[:long].split(//).find { |d| d !~ INVALID_SHORT_ARG_REGEX && !@short.member?(d) }
|
713
722
|
if c # found a character to use
|
714
723
|
opts[:short] = c
|
715
|
-
@short[c]
|
724
|
+
@short[c] = name
|
716
725
|
end
|
717
726
|
end
|
718
727
|
end
|
719
728
|
|
720
729
|
def wrap_line str, opts={}
|
721
730
|
prefix = opts[:prefix] || 0
|
722
|
-
width
|
723
|
-
start
|
724
|
-
ret
|
731
|
+
width = opts[:width] || (self.width - 1)
|
732
|
+
start = 0
|
733
|
+
ret = []
|
725
734
|
until start > str.length
|
726
735
|
nextt =
|
727
736
|
if start + width >= str.length
|
data/lib/convoy/utils.rb
CHANGED
@@ -5,8 +5,8 @@ module Convoy
|
|
5
5
|
class << self
|
6
6
|
def symbolize_keys(hash)
|
7
7
|
hash.inject({}) do |result, (key, value)|
|
8
|
-
new_key
|
9
|
-
new_value
|
8
|
+
new_key = (key.kind_of?(String) ? key.to_sym : key)
|
9
|
+
new_value = (value.kind_of?(Hash) ? symbolize_keys(value) : value)
|
10
10
|
result[new_key] = new_value
|
11
11
|
result
|
12
12
|
end
|
@@ -35,7 +35,7 @@ describe "Convoy basic app with config file defined", :integration => true do
|
|
35
35
|
context "and config file already exists" do
|
36
36
|
before do
|
37
37
|
FileUtils.mkdir_p(File.dirname path)
|
38
|
-
File.open(path, 'w') { |f| f.write(JSON.pretty_generate({:global => {:commands => {}, :options => {:option1 => 'hello'}}, :user => {}})) }
|
38
|
+
File.open(path, 'w') { |f| f.write(JSON.pretty_generate({ :global => { :commands => {}, :options => { :option1 => 'hello' } }, :user => {} })) }
|
39
39
|
|
40
40
|
begin
|
41
41
|
subject
|
@@ -55,7 +55,7 @@ describe "Convoy basic app with config file defined", :integration => true do
|
|
55
55
|
let(:option_string) { "" }
|
56
56
|
before do
|
57
57
|
FileUtils.mkdir_p(File.dirname path)
|
58
|
-
File.open(path, 'w') { |f| f.write(JSON.pretty_generate({:global => {:commands => {}, :options => {:option1 => 'hello'}}, :user => {}})) }
|
58
|
+
File.open(path, 'w') { |f| f.write(JSON.pretty_generate({ :global => { :commands => {}, :options => { :option1 => 'hello' } }, :user => {} })) }
|
59
59
|
|
60
60
|
begin
|
61
61
|
subject
|
@@ -85,7 +85,7 @@ describe "Convoy basic app with config file defined", :integration => true do
|
|
85
85
|
|
86
86
|
before do
|
87
87
|
FileUtils.mkdir_p(File.dirname path)
|
88
|
-
File.open(path, 'w') { |f| f.write(JSON.pretty_generate({:global => {:commands => {}, :options => {:option1 => 'hello'}}, :user => {}})) }
|
88
|
+
File.open(path, 'w') { |f| f.write(JSON.pretty_generate({ :global => { :commands => {}, :options => { :option1 => 'hello' } }, :user => {} })) }
|
89
89
|
|
90
90
|
begin
|
91
91
|
subject
|
@@ -137,7 +137,7 @@ describe "Convoy basic app with dependent options", :integration => true do
|
|
137
137
|
opts.opt :option1, "Option1", :short => '-o', :long => '--option1', :type => :string
|
138
138
|
opts.opt :option2, "Option2", :short => :none, :long => '--option2', :type => :string, :multi => true
|
139
139
|
|
140
|
-
opts.dependency :option2, :on => {:option1 => 'bar'}
|
140
|
+
opts.dependency :option2, :on => { :option1 => 'bar' }
|
141
141
|
end
|
142
142
|
|
143
143
|
app.action do |options, arguments|
|
@@ -170,7 +170,7 @@ describe "Convoy basic app with dependent options", :integration => true do
|
|
170
170
|
opts.opt :option1, "Option1", :short => '-o', :long => '--option1', :type => :string
|
171
171
|
opts.opt :option2, "Option2", :short => :none, :long => '--option2', :type => :string, :multi => true
|
172
172
|
|
173
|
-
opts.dependency :option2, :on => [:flag1, {:option1 => 'bar'}]
|
173
|
+
opts.dependency :option2, :on => [:flag1, { :option1 => 'bar' }]
|
174
174
|
end
|
175
175
|
|
176
176
|
app.action do |options, arguments|
|
@@ -22,27 +22,27 @@ describe Convoy::SetupAccessor do
|
|
22
22
|
|
23
23
|
context "and options hash is of valid structure" do
|
24
24
|
context "and command is global" do
|
25
|
-
let(:options) { {:global => {:commands => {}}} }
|
25
|
+
let(:options) { { :global => { :commands => {} } } }
|
26
26
|
it { subject.should == [] }
|
27
27
|
end
|
28
28
|
|
29
29
|
context "and command is child of global" do
|
30
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}}}}} }
|
30
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {} } } } } }
|
31
31
|
it { subject.should == [:command1] }
|
32
32
|
|
33
33
|
context "and no commands hash for sub command in options" do
|
34
|
-
let(:options) { {:global => {:commands => {:command1 => {}}}} }
|
34
|
+
let(:options) { { :global => { :commands => { :command1 => {} } } } }
|
35
35
|
it { subject.should == [:command1] }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
context "and command is grandchild of global" do
|
40
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {:sub_command1 => {:commands => {}}}}}}} }
|
40
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => { :sub_command1 => { :commands => {} } } } } } } }
|
41
41
|
it { subject.should == [:command1, :sub_command1] }
|
42
42
|
end
|
43
43
|
|
44
44
|
context "and command is great grandchild of global" do
|
45
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {:sub_command1 => {:commands => {:sub_sub_command1 => {:commands => {}}}}}}}}} }
|
45
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => { :sub_command1 => { :commands => { :sub_sub_command1 => { :commands => {} } } } } } } } } }
|
46
46
|
it { subject.should == [:command1, :sub_command1, :sub_sub_command1] }
|
47
47
|
end
|
48
48
|
end
|
@@ -53,17 +53,17 @@ describe Convoy::SetupAccessor do
|
|
53
53
|
subject { command.send(:command_name) }
|
54
54
|
|
55
55
|
context "when context is global" do
|
56
|
-
let(:options) { {:global => {:commands => {}}} }
|
56
|
+
let(:options) { { :global => { :commands => {} } } }
|
57
57
|
it { subject.should == :global }
|
58
58
|
end
|
59
59
|
|
60
60
|
context "when context is of size 1" do
|
61
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}}}}} }
|
61
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {} } } } } }
|
62
62
|
it { subject.should == :command1 }
|
63
63
|
end
|
64
64
|
|
65
65
|
context "when context is of size 2" do
|
66
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {:sub_command1 => {:commands => {}}}}}}} }
|
66
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => { :sub_command1 => { :commands => {} } } } } } } }
|
67
67
|
it { subject.should == :sub_command1 }
|
68
68
|
end
|
69
69
|
end
|
@@ -72,18 +72,18 @@ describe Convoy::SetupAccessor do
|
|
72
72
|
subject { command.send(:command_options) }
|
73
73
|
|
74
74
|
context "when context is global" do
|
75
|
-
let(:options) { {:global => {:commands => {}, :options => {:hello => :world}}} }
|
76
|
-
it { subject.should == {:hello => :world} }
|
75
|
+
let(:options) { { :global => { :commands => {}, :options => { :hello => :world } } } }
|
76
|
+
it { subject.should == { :hello => :world } }
|
77
77
|
end
|
78
78
|
|
79
79
|
context "when context is of size 1" do
|
80
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}, :options => {:hello => :world}}}}} }
|
81
|
-
it { subject.should == {:hello => :world} }
|
80
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {}, :options => { :hello => :world } } } } } }
|
81
|
+
it { subject.should == { :hello => :world } }
|
82
82
|
end
|
83
83
|
|
84
84
|
context "when context is of size 2" do
|
85
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {:sub_command1 => {:commands => {}, :options => {:hello => :world}}}}}}} }
|
86
|
-
it { subject.should == {:hello => :world} }
|
85
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => { :sub_command1 => { :commands => {}, :options => { :hello => :world } } } } } } } }
|
86
|
+
it { subject.should == { :hello => :world } }
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
@@ -91,13 +91,13 @@ describe Convoy::SetupAccessor do
|
|
91
91
|
subject { command.send(:global_options) }
|
92
92
|
|
93
93
|
context "when context is global" do
|
94
|
-
let(:options) { {:global => {:commands => {}, :options => {:hello => :world}}} }
|
95
|
-
it { subject.should == {:hello => :world} }
|
94
|
+
let(:options) { { :global => { :commands => {}, :options => { :hello => :world } } } }
|
95
|
+
it { subject.should == { :hello => :world } }
|
96
96
|
end
|
97
97
|
|
98
98
|
context "when context is of size 1" do
|
99
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}}}, :options => {:hello => :world}}} }
|
100
|
-
it { subject.should == {:hello => :world} }
|
99
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {} } }, :options => { :hello => :world } } } }
|
100
|
+
it { subject.should == { :hello => :world } }
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -105,18 +105,18 @@ describe Convoy::SetupAccessor do
|
|
105
105
|
subject { command.send(:parent_options) }
|
106
106
|
|
107
107
|
context "when context is global" do
|
108
|
-
let(:options) { {:global => {:commands => {}, :options => {:hello => :world}}} }
|
108
|
+
let(:options) { { :global => { :commands => {}, :options => { :hello => :world } } } }
|
109
109
|
it { subject.should == {} }
|
110
110
|
end
|
111
111
|
|
112
112
|
context "when context is of size 1" do
|
113
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}}}, :options => {:hello => :world}}} }
|
114
|
-
it { subject.should == {:hello => :world} }
|
113
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {} } }, :options => { :hello => :world } } } }
|
114
|
+
it { subject.should == { :hello => :world } }
|
115
115
|
end
|
116
116
|
|
117
117
|
context "when context is of size 2" do
|
118
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {:sub_command1 => {:commands => {}}}, :options => {:hello => :world}}}}} }
|
119
|
-
it { subject.should == {:hello => :world} }
|
118
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => { :sub_command1 => { :commands => {} } }, :options => { :hello => :world } } } } } }
|
119
|
+
it { subject.should == { :hello => :world } }
|
120
120
|
end
|
121
121
|
end
|
122
122
|
|
@@ -124,18 +124,18 @@ describe Convoy::SetupAccessor do
|
|
124
124
|
subject { command.send(:grandparent_options) }
|
125
125
|
|
126
126
|
context "when context is global" do
|
127
|
-
let(:options) { {:global => {:commands => {}, :options => {:hello => :world}}} }
|
127
|
+
let(:options) { { :global => { :commands => {}, :options => { :hello => :world } } } }
|
128
128
|
it { subject.should == {} }
|
129
129
|
end
|
130
130
|
|
131
131
|
context "when context is of size 1" do
|
132
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}}}, :options => {:hello => :world}}} }
|
132
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {} } }, :options => { :hello => :world } } } }
|
133
133
|
it { subject.should == {} }
|
134
134
|
end
|
135
135
|
|
136
136
|
context "when context is of size 2" do
|
137
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {:sub_command1 => {:commands => {}}}}}, :options => {:hello => :world}}} }
|
138
|
-
it { subject.should == {:hello => :world} }
|
137
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => { :sub_command1 => { :commands => {} } } } }, :options => { :hello => :world } } } }
|
138
|
+
it { subject.should == { :hello => :world } }
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
@@ -143,11 +143,11 @@ describe Convoy::SetupAccessor do
|
|
143
143
|
subject { command.send(:ancestor_options, generation_number) }
|
144
144
|
|
145
145
|
context "when context is global" do
|
146
|
-
let(:options) { {:global => {:commands => {}, :options => {:hello => :world}}} }
|
146
|
+
let(:options) { { :global => { :commands => {}, :options => { :hello => :world } } } }
|
147
147
|
|
148
148
|
context "and generation number is 0" do
|
149
149
|
let(:generation_number) { 0 }
|
150
|
-
it { subject.should == {:hello => :world} }
|
150
|
+
it { subject.should == { :hello => :world } }
|
151
151
|
end
|
152
152
|
|
153
153
|
context "and generation number is 1" do
|
@@ -167,16 +167,16 @@ describe Convoy::SetupAccessor do
|
|
167
167
|
end
|
168
168
|
|
169
169
|
context "when context is of size 1" do
|
170
|
-
let(:options) { {:global => {:commands => {:command1 => {:commands => {}, :options => {:foo => :bar}}}, :options => {:hello => :world}}} }
|
170
|
+
let(:options) { { :global => { :commands => { :command1 => { :commands => {}, :options => { :foo => :bar } } }, :options => { :hello => :world } } } }
|
171
171
|
|
172
172
|
context "and generation number is 0" do
|
173
173
|
let(:generation_number) { 0 }
|
174
|
-
it { subject.should == {:foo => :bar} }
|
174
|
+
it { subject.should == { :foo => :bar } }
|
175
175
|
end
|
176
176
|
|
177
177
|
context "and generation number is 1" do
|
178
178
|
let(:generation_number) { 1 }
|
179
|
-
it { subject.should == {:hello => :world} }
|
179
|
+
it { subject.should == { :hello => :world } }
|
180
180
|
end
|
181
181
|
|
182
182
|
context "and generation number is 2" do
|