convoy 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|