producer-core 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,8 +6,8 @@ Feature: `file_write' task action
6
6
  """
7
7
  task :file_write_action do
8
8
  file_write 'some_file', 'some_content'
9
- file_write 'some_file_0600', 'some_content', 0600
10
- file_write 'some_file_0700', 'some_content', 0700
9
+ file_write 'some_file_0600', 'some_content', mode: 0600
10
+ file_write 'some_file_0700', 'some_content', mode: 0700
11
11
  end
12
12
  """
13
13
 
@@ -6,8 +6,8 @@ Feature: `mkdir' task action
6
6
  """
7
7
  task :mkdir_action do
8
8
  mkdir 'some_directory'
9
- mkdir 'some_directory_0700', 0700
10
- mkdir 'some_directory_0500', 0500
9
+ mkdir 'some_directory_0700', mode: 0700
10
+ mkdir 'some_directory_0711', mode: 0711
11
11
  end
12
12
  """
13
13
 
@@ -15,10 +15,10 @@ Feature: `mkdir' task action
15
15
  When I successfully execute the recipe on remote target
16
16
  Then the remote directory "some_directory" must exists
17
17
 
18
- Scenario: creates directory with given permissions
18
+ Scenario: creates directory with given attributes
19
19
  When I successfully execute the recipe on remote target
20
20
  Then the remote directory "some_directory_0700" must have 0700 mode
21
- And the remote directory "some_directory_0500" must have 0500 mode
21
+ And the remote directory "some_directory_0711" must have 0711 mode
22
22
 
23
23
  Scenario: creates directories recursively
24
24
  Given a recipe with:
@@ -7,11 +7,13 @@ module Producer
7
7
  def_delegators :@env, :input, :output, :error_output, :remote
8
8
  def_delegators :remote, :fs
9
9
 
10
- attr_reader :env, :arguments
10
+ attr_reader :env, :arguments, :options
11
11
 
12
- def initialize(env, *args)
12
+ def initialize(env, *args, **options)
13
13
  @env = env
14
14
  @arguments = args
15
+ @options = options
16
+ setup if respond_to? :setup
15
17
  end
16
18
 
17
19
  def name
@@ -28,6 +30,12 @@ module Producer
28
30
  def inspect_arguments
29
31
  @arguments.inspect[0, INSPECT_ARGUMENTS_SUM_LEN - name.length]
30
32
  end
33
+
34
+ def check_arguments_size!(size)
35
+ if arguments.compact.size != size
36
+ fail ArgumentError, '`%s\' action requires %d arguments' % [name, size]
37
+ end
38
+ end
31
39
  end
32
40
  end
33
41
  end
@@ -7,7 +7,7 @@ module Producer
7
7
  end
8
8
 
9
9
  def apply
10
- output.puts arguments.first
10
+ output.puts arguments
11
11
  end
12
12
  end
13
13
  end
@@ -2,27 +2,24 @@ module Producer
2
2
  module Core
3
3
  module Actions
4
4
  class FileAppend < Action
5
+ def setup
6
+ check_arguments_size! 2
7
+ @path, @content = arguments
8
+ end
9
+
5
10
  def name
6
11
  'file_append'
7
12
  end
8
13
 
9
14
  def apply
10
- fs.file_write path, combined_content
11
- end
12
-
13
- def path
14
- arguments[0]
15
- end
16
-
17
- def content
18
- arguments[1]
15
+ fs.file_write @path, combined_content
19
16
  end
20
17
 
21
18
  def combined_content
22
- original_content = fs.file_read(path)
19
+ original_content = fs.file_read(@path)
23
20
 
24
- return content unless original_content
25
- original_content + content
21
+ return @content unless original_content
22
+ original_content + @content
26
23
  end
27
24
  end
28
25
  end
@@ -2,28 +2,21 @@ module Producer
2
2
  module Core
3
3
  module Actions
4
4
  class FileReplaceContent < Action
5
+ def setup
6
+ check_arguments_size! 3
7
+ @path, @pattern, @replacement = arguments
8
+ end
9
+
5
10
  def name
6
11
  'file_replace_content'
7
12
  end
8
13
 
9
14
  def apply
10
- fs.file_write path, replaced_content
11
- end
12
-
13
- def path
14
- arguments[0]
15
- end
16
-
17
- def pattern
18
- arguments[1]
19
- end
20
-
21
- def replacement
22
- arguments[2]
15
+ fs.file_write @path, replaced_content
23
16
  end
24
17
 
25
18
  def replaced_content
26
- fs.file_read(path).gsub pattern, replacement
19
+ fs.file_read(@path).gsub @pattern, @replacement
27
20
  end
28
21
  end
29
22
  end
@@ -2,29 +2,20 @@ module Producer
2
2
  module Core
3
3
  module Actions
4
4
  class FileWriter < Action
5
+ def setup
6
+ check_arguments_size! 2
7
+ @path, @content = arguments
8
+ @options[:permissions] = @options.delete :mode if options.key? :mode
9
+ @options[:owner] = @options.delete :user if options.key? :user
10
+ end
11
+
5
12
  def name
6
13
  'file_write'
7
14
  end
8
15
 
9
16
  def apply
10
- case arguments.size
11
- when 2
12
- fs.file_write path, content
13
- when 3
14
- fs.file_write path, content, mode
15
- end
16
- end
17
-
18
- def path
19
- arguments[0]
20
- end
21
-
22
- def content
23
- arguments[1]
24
- end
25
-
26
- def mode
27
- arguments[2]
17
+ fs.file_write @path, @content
18
+ fs.setstat @path, @options unless @options.empty?
28
19
  end
29
20
  end
30
21
  end
@@ -2,28 +2,24 @@ module Producer
2
2
  module Core
3
3
  module Actions
4
4
  class Mkdir < Action
5
+ def setup
6
+ check_arguments_size! 1
7
+ @path = Pathname.new(arguments.first)
8
+ @options[:permissions] = @options.delete :mode if @options.key? :mode
9
+ @options[:owner] = @options.delete :user if @options.key? :user
10
+ end
11
+
5
12
  def name
6
13
  'mkdir'
7
14
  end
8
15
 
9
16
  def apply
10
- path.descend do |p|
17
+ @path.descend do |p|
11
18
  next if fs.dir? p
12
19
  fs.mkdir p.to_s
13
- fs.chmod p.to_s, mode if mode
20
+ fs.setstat p.to_s, @options unless @options.empty?
14
21
  end
15
22
  end
16
-
17
-
18
- private
19
-
20
- def path
21
- Pathname.new(arguments.first)
22
- end
23
-
24
- def mode
25
- arguments[1]
26
- end
27
23
  end
28
24
  end
29
25
  end
@@ -2,12 +2,17 @@ module Producer
2
2
  module Core
3
3
  module Actions
4
4
  class ShellCommand < Action
5
+ def setup
6
+ check_arguments_size! 1
7
+ @command = arguments.first
8
+ end
9
+
5
10
  def name
6
11
  'sh'
7
12
  end
8
13
 
9
14
  def apply
10
- remote.execute(arguments.first, output, error_output)
15
+ remote.execute(@command, output, error_output)
11
16
  end
12
17
  end
13
18
  end
@@ -2,6 +2,7 @@ module Producer
2
2
  module Core
3
3
  Error = Class.new(StandardError)
4
4
  RuntimeError = Class.new(RuntimeError)
5
+ ArgumentError = Class.new(Error)
5
6
  ConditionNotMetError = Class.new(Error)
6
7
  RemoteCommandExecutionError = Class.new(RuntimeError)
7
8
  RegistryKeyError = Class.new(RuntimeError)
@@ -20,13 +20,16 @@ module Producer
20
20
  false
21
21
  end
22
22
 
23
+ def setstat(path, attributes)
24
+ sftp.setstat! path, attributes
25
+ end
26
+
23
27
  def chmod(path, mode)
24
- sftp.setstat! path, permissions: mode
28
+ setstat path, permissions: mode
25
29
  end
26
30
 
27
- def mkdir(path, mode = nil)
28
- options = mode ? { permissions: mode } : {}
29
- sftp.mkdir! path, options
31
+ def mkdir(path, attributes = {})
32
+ ret = sftp.mkdir! path, attributes
30
33
  end
31
34
 
32
35
  def file_read(path)
@@ -35,8 +38,8 @@ module Producer
35
38
  nil
36
39
  end
37
40
 
38
- def file_write(path, content, mode = nil)
39
- sftp.file.open path, 'w', mode do |f|
41
+ def file_write(path, content)
42
+ sftp.file.open path, 'w' do |f|
40
43
  f.write content
41
44
  end
42
45
  end
@@ -1,5 +1,5 @@
1
1
  module Producer
2
2
  module Core
3
- VERSION = '0.4.0'.freeze
3
+ VERSION = '0.4.1'.freeze
4
4
  end
5
5
  end
@@ -2,14 +2,45 @@ require 'spec_helper'
2
2
 
3
3
  module Producer::Core
4
4
  describe Action do
5
+ let(:env) { double 'env'}
6
+ let(:arguments) { [:some, :arguments] }
7
+ let(:options) { { foo: :bar } }
8
+ subject(:action) { described_class.new(env, *arguments, options) }
9
+
5
10
  it_behaves_like 'action'
6
11
 
7
- describe '#name' do
8
- subject(:action) { described_class.new(double 'env') }
12
+ describe '#initialize' do
13
+ it 'calls #setup when defined' do
14
+ action_class = Class.new(described_class)
15
+ action_class.class_eval do
16
+ define_method(:setup) { @arguments = :other_arguments }
17
+ end
18
+ expect(action_class.new(env).arguments).to eq :other_arguments
19
+ end
20
+ end
9
21
 
22
+ describe '#name' do
10
23
  it 'infers action name from class name' do
11
24
  expect(action.name).to eq 'action'
12
25
  end
13
26
  end
27
+
28
+ describe '#to_s' do
29
+ it 'includes action name' do
30
+ expect(action.to_s).to match /\A#{action.name}/
31
+ end
32
+
33
+ it 'includes arguments inspection' do
34
+ expect(action.to_s).to match /#{Regexp.quote(arguments.inspect)}\z/
35
+ end
36
+
37
+ context 'when arguments inspection is very long' do
38
+ let(:arguments) { [:some, :arguments] * 32 }
39
+
40
+ it 'summarizes arguments inspection' do
41
+ expect(action.to_s.length).to be < 70
42
+ end
43
+ end
44
+ end
14
45
  end
15
46
  end
@@ -4,7 +4,8 @@ module Producer::Core
4
4
  module Actions
5
5
  describe Echo, :env do
6
6
  let(:text) { 'hello' }
7
- subject(:echo) { described_class.new(env, text) }
7
+ let(:arguments) { [text] }
8
+ subject(:echo) { described_class.new(env, *arguments) }
8
9
 
9
10
  it_behaves_like 'action'
10
11
 
@@ -6,12 +6,23 @@ module Producer::Core
6
6
  let(:path) { 'some_path' }
7
7
  let(:content) { 'some content' }
8
8
  let(:added_content) { ' added' }
9
- subject(:action) { described_class.new(env, path, added_content) }
9
+ let(:arguments) { [path, added_content] }
10
+ subject(:action) { described_class.new(env, *arguments) }
10
11
 
11
12
  it_behaves_like 'action'
12
13
 
13
14
  before { allow(remote_fs).to receive(:file_read).with(path) { content } }
14
15
 
16
+ describe '#setup' do
17
+ context 'when content is missing' do
18
+ let(:added_content) { nil }
19
+
20
+ it 'raises ArgumentError' do
21
+ expect { action }.to raise_error ArgumentError
22
+ end
23
+ end
24
+ end
25
+
15
26
  describe '#apply' do
16
27
  it 'appends given content to requested file on remote filesystem' do
17
28
  expect(remote_fs)
@@ -20,18 +31,6 @@ module Producer::Core
20
31
  end
21
32
  end
22
33
 
23
- describe '#path' do
24
- it 'returns the file path' do
25
- expect(action.path).to eq path
26
- end
27
- end
28
-
29
- describe '#content' do
30
- it 'returns the content to append' do
31
- expect(action.content).to eq added_content
32
- end
33
- end
34
-
35
34
  describe '#combined_content' do
36
35
  it 'returns original content and added content combined' do
37
36
  expect(action.combined_content).to eq 'some content added'
@@ -7,12 +7,23 @@ module Producer::Core
7
7
  let(:pattern) { 'content' }
8
8
  let(:replacement) { 'other content' }
9
9
  let(:content) { 'some content' }
10
- subject(:action) { described_class.new(env, path, pattern, replacement) }
10
+ let(:arguments) { [path, pattern, replacement] }
11
+ subject(:action) { described_class.new(env, *arguments) }
11
12
 
12
13
  it_behaves_like 'action'
13
14
 
14
15
  before { allow(remote_fs).to receive(:file_read).with(path) { content } }
15
16
 
17
+ describe '#setup' do
18
+ context 'when replacement is missing' do
19
+ let(:replacement) { nil }
20
+
21
+ it 'raises ArgumentError' do
22
+ expect { action }.to raise_error ArgumentError
23
+ end
24
+ end
25
+ end
26
+
16
27
  describe '#apply' do
17
28
  it 'writes replaced content to file on remote filesystem' do
18
29
  expect(remote_fs)
@@ -21,24 +32,6 @@ module Producer::Core
21
32
  end
22
33
  end
23
34
 
24
- describe '#path' do
25
- it 'returns the file path' do
26
- expect(action.path).to eq path
27
- end
28
- end
29
-
30
- describe '#pattern' do
31
- it 'returns the pattern' do
32
- expect(action.pattern).to eq pattern
33
- end
34
- end
35
-
36
- describe '#replacement' do
37
- it 'returns the replacement' do
38
- expect(action.replacement).to eq replacement
39
- end
40
- end
41
-
42
35
  describe '#replaced_content' do
43
36
  it 'returns content with pattern occurrences pattern replaced' do
44
37
  expect(action.replaced_content).to eq 'some other content'
@@ -5,49 +5,45 @@ module Producer::Core
5
5
  describe FileWriter, :env do
6
6
  let(:path) { 'some_path' }
7
7
  let(:content) { 'some_content' }
8
- subject(:writer) { described_class.new(env, path, content) }
8
+ let(:arguments) { [path, content] }
9
+ let(:options) { { } }
10
+ subject(:writer) { described_class.new(env, *arguments, options) }
9
11
 
10
12
  it_behaves_like 'action'
11
13
 
12
- describe '#apply' do
13
- it 'writes content to file on remote filesystem' do
14
- expect(remote_fs).to receive(:file_write).with(path, content)
15
- writer.apply
16
- end
14
+ describe '#setup' do
15
+ let(:options) { { mode: 0700, user: 'root' } }
17
16
 
18
- context 'when a mode was given' do
19
- subject(:writer) { described_class.new(env, path, content, 0600) }
20
-
21
- it 'specifies the given mode' do
22
- expect(remote_fs)
23
- .to receive(:file_write).with(anything, anything, 0600)
24
- writer.apply
25
- end
17
+ it 'translates mode option as permissions' do
18
+ expect(writer.options[:permissions]).to eq 0700
26
19
  end
27
- end
28
20
 
29
- describe '#path' do
30
- it 'returns the path' do
31
- expect(writer.path).to eq path
21
+ it 'translates user option as owner' do
22
+ expect(writer.options[:owner]).to eq 'root'
32
23
  end
33
- end
34
24
 
35
- describe '#content' do
36
- it 'returns the content' do
37
- expect(writer.content).to eq content
25
+ context 'when content is missing' do
26
+ let(:content) { nil }
27
+
28
+ it 'raises ArgumentError' do
29
+ expect { writer }.to raise_error ArgumentError
30
+ end
38
31
  end
39
32
  end
40
33
 
41
- describe '#mode' do
42
- it 'returns nil' do
43
- expect(writer.mode).to be nil
34
+ describe '#apply' do
35
+ it 'writes content to file on remote filesystem' do
36
+ expect(remote_fs)
37
+ .to receive(:file_write).with(path, content)
38
+ writer.apply
44
39
  end
45
40
 
46
- context 'when a mode was given' do
47
- subject(:writer) { described_class.new(env, path, content, 0600) }
41
+ context 'when status options are given' do
42
+ let(:options) { { group: 'wheel' } }
48
43
 
49
- it 'returns the mode' do
50
- expect(writer.mode).to eq 0600
44
+ it 'changes the directory status with given options' do
45
+ expect(remote_fs).to receive(:setstat).with(path, options)
46
+ writer.apply
51
47
  end
52
48
  end
53
49
  end
@@ -4,10 +4,32 @@ module Producer::Core
4
4
  module Actions
5
5
  describe Mkdir, :env do
6
6
  let(:path) { 'some_path' }
7
- subject(:mkdir) { described_class.new(env, path) }
7
+ let(:options) { { } }
8
+ let(:arguments) { [path] }
9
+ subject(:mkdir) { described_class.new(env, *arguments, options) }
8
10
 
9
11
  it_behaves_like 'action'
10
12
 
13
+ describe '#setup' do
14
+ let(:options) { { mode: 0700, user: 'root' } }
15
+
16
+ it 'translates mode option as permissions' do
17
+ expect(mkdir.options[:permissions]).to eq 0700
18
+ end
19
+
20
+ it 'translates user option as owner' do
21
+ expect(mkdir.options[:owner]).to eq 'root'
22
+ end
23
+
24
+ context 'when path is missing' do
25
+ let(:path) { nil }
26
+
27
+ it 'raises ArgumentError' do
28
+ expect { mkdir }.to raise_error ArgumentError
29
+ end
30
+ end
31
+ end
32
+
11
33
  describe '#apply' do
12
34
  before { allow(remote_fs).to receive(:dir?) { false } }
13
35
 
@@ -16,11 +38,11 @@ module Producer::Core
16
38
  mkdir.apply
17
39
  end
18
40
 
19
- context 'when a mode was given' do
20
- subject(:mkdir) { described_class.new(env, path, 0700) }
41
+ context 'when status options are given' do
42
+ let(:options) { { group: 'wheel' } }
21
43
 
22
- it 'changes the directory with given mode' do
23
- expect(remote_fs).to receive(:chmod).with(path, 0700)
44
+ it 'changes the directory status with given options' do
45
+ expect(remote_fs).to receive(:setstat).with(path, options)
24
46
  mkdir.apply
25
47
  end
26
48
  end
@@ -38,7 +60,7 @@ module Producer::Core
38
60
  context 'when directory already exists' do
39
61
  before { allow(remote_fs).to receive(:dir?) { true } }
40
62
 
41
- it 'creates directory on remote filesystem' do
63
+ it 'does not create any directory' do
42
64
  expect(remote_fs).not_to receive(:mkdir)
43
65
  mkdir.apply
44
66
  end
@@ -5,10 +5,21 @@ module Producer::Core
5
5
  describe ShellCommand, :env do
6
6
  let(:command_args) { 'hello from remote host' }
7
7
  let(:command) { "echo #{command_args}" }
8
- subject(:sh) { described_class.new(env, command) }
8
+ let(:arguments) { [command] }
9
+ subject(:sh) { described_class.new(env, *arguments) }
9
10
 
10
11
  it_behaves_like 'action'
11
12
 
13
+ describe '#setup' do
14
+ context 'when command is missing' do
15
+ let(:command) { nil }
16
+
17
+ it 'raises ArgumentError' do
18
+ expect { sh }.to raise_error ArgumentError
19
+ end
20
+ end
21
+ end
22
+
12
23
  describe '#apply' do
13
24
  it 'executes the remote command' do
14
25
  expect_execution(command)
@@ -86,18 +86,12 @@ module Producer::Core
86
86
  end
87
87
 
88
88
  describe '#mkdir' do
89
- let(:path) { 'some_directory_path' }
89
+ let(:path) { 'some_directory_path' }
90
+ let(:attributes) { { foo: :bar } }
90
91
 
91
92
  it 'creates the directory' do
92
- expect(sftp).to receive(:mkdir!).with(path, anything)
93
- fs.mkdir path
94
- end
95
-
96
- it 'specifies permissions from optional mode argument' do
97
- expect(sftp).to receive(:mkdir!) do |_, options|
98
- expect(options[:permissions]).to eq 0700
99
- end
100
- fs.mkdir path, 0700
93
+ expect(sftp).to receive(:mkdir!).with(path, attributes)
94
+ fs.mkdir path, attributes
101
95
  end
102
96
  end
103
97
 
@@ -133,7 +127,7 @@ module Producer::Core
133
127
  let(:content) { 'some_content' }
134
128
 
135
129
  it 'opens the file' do
136
- expect(sftp_file).to receive(:open).with(path, 'w', anything)
130
+ expect(sftp_file).to receive(:open).with(path, 'w')
137
131
  fs.file_write path, content
138
132
  end
139
133
 
@@ -144,11 +138,6 @@ module Producer::Core
144
138
  end
145
139
  fs.file_write path, content
146
140
  end
147
-
148
- it 'accepts an optional mode argument' do
149
- expect(sftp_file).to receive(:open).with(anything, anything, 0600)
150
- fs.file_write path, content, 0600
151
- end
152
141
  end
153
142
  end
154
143
  end
@@ -2,20 +2,8 @@ module Producer::Core
2
2
  shared_examples 'action' do
3
3
  include TestEnvHelpers
4
4
 
5
- let(:arguments) { [:some, :arguments] }
6
- subject(:action) { described_class.new(env, *arguments) }
7
-
8
- describe '#env' do
9
- it 'returns the assigned env' do
10
- expect(action.env).to be env
11
- end
12
- end
13
-
14
- describe '#arguments' do
15
- it 'returns the assigned arguments' do
16
- expect(action.arguments).to eq arguments
17
- end
18
- end
5
+ let(:options) { { foo: :bar } }
6
+ subject(:action) { described_class.new(env, *arguments, options) }
19
7
 
20
8
  describe '#input' do
21
9
  it 'returns env input' do
@@ -52,23 +40,5 @@ module Producer::Core
52
40
  expect(action.name).to match /\A\w+\z/
53
41
  end
54
42
  end
55
-
56
- describe '#to_s' do
57
- it 'includes action name' do
58
- expect(action.to_s).to match /\A#{action.name}/
59
- end
60
-
61
- it 'includes arguments inspection' do
62
- expect(action.to_s).to match /#{Regexp.quote(arguments.inspect)}\z/
63
- end
64
-
65
- context 'when arguments inspection is very long' do
66
- let(:arguments) { [:some, :arguments] * 32 }
67
-
68
- it 'summarizes arguments inspection' do
69
- expect(action.to_s.length).to be < 70
70
- end
71
- end
72
- end
73
43
  end
74
44
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: producer-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Thibault Jouan
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-04-03 00:00:00.000000000 Z
12
+ date: 2014-10-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: net-ssh
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - "~>"
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: net-sftp
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - "~>"
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - "~>"
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - "~>"
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: cucumber
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - "~>"
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - "~>"
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: aruba
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - "~>"
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - "~>"
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: cucumber-sshd
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - "~>"
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - "~>"
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: rake
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - "~>"
109
124
  - !ruby/object:Gem::Version
@@ -242,26 +257,27 @@ files:
242
257
  - spec/support/test_env_helpers.rb
243
258
  homepage: https://rubygems.org/gems/producer-core
244
259
  licenses: []
245
- metadata: {}
246
260
  post_install_message:
247
261
  rdoc_options: []
248
262
  require_paths:
249
263
  - lib
250
264
  required_ruby_version: !ruby/object:Gem::Requirement
265
+ none: false
251
266
  requirements:
252
267
  - - ">="
253
268
  - !ruby/object:Gem::Version
254
269
  version: '0'
255
270
  required_rubygems_version: !ruby/object:Gem::Requirement
271
+ none: false
256
272
  requirements:
257
273
  - - ">="
258
274
  - !ruby/object:Gem::Version
259
275
  version: '0'
260
276
  requirements: []
261
277
  rubyforge_project:
262
- rubygems_version: 2.4.5
278
+ rubygems_version: 1.8.29
263
279
  signing_key:
264
- specification_version: 4
280
+ specification_version: 3
265
281
  summary: Provisioning tool
266
282
  test_files:
267
283
  - features/action_echo.feature
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 8ace21fcdc6845673cc6f94b6210ba2cec34afbb
4
- data.tar.gz: 2766db0d025a2ced6386cd803ddd3f938fd29459
5
- SHA512:
6
- metadata.gz: 5e8d2371facb4acceecc19e3306ad543c0e84bdb1a7b4fc4f503322a5060c10e7d962f68eb9fb3921623a90aee34f19235c7ad030e6bbc9eacd5d88041ded545
7
- data.tar.gz: fa8acb5e15fe715877c63bf24852fac5a45ff5705a295d94c4a5b381f5c62fe33816c4ecbc41037aa5beaa136dd4f430c9f8fc8b4e0b2133d64e689e2475ffb6