gene_system 0.4.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 559379df624aadc40f65cb1c3c9ab01f152fbbbaa238e1b5e2f71fcb97d84874
4
- data.tar.gz: a0dbf8ab2cba60a31d8022601922660d93c87d8e6bf3c0a2653c344ce9e6aeed
3
+ metadata.gz: 4aa7960e15136bb83ad4d59cee4f04eb90329849e4afb122b71aa3c154221061
4
+ data.tar.gz: fd63a576848edc472d677278fbe0e59014fbefbc2341e8dc63accf6b8539fd8f
5
5
  SHA512:
6
- metadata.gz: 79a46d8e6cfbe40d422ba6fdb8c7de1575dd52a94664c4550e4cfc54f5f9be72a0d541137e0dee65cbc535ea98a02a8d5f57e698f0ca3e23e5c9b5531815a83d
7
- data.tar.gz: f052a0aea8250f8ec4e6a412c0a4af883f315ef2a2e6a85021cbcded1adfab4165a9efdc3c92d95d0c98b56ae64ff053a0e2ed289d0342c0a783e4ecab338ae9
6
+ metadata.gz: c8fa68614f9a03faa1e4e79bafe180e30016b913d0f5d92216295f252c83e0564941b4f16a6acc2ae3a9e52b28a028c8db58b777e2d3ba89154f9294785837ba
7
+ data.tar.gz: 43dce4572183820584a8c1a0a9c0d2f28cc6f33eb85d123b9f973c220ea1fef8f6bd1a05e24c9a04452399713f46444718d41626e13c829f0d993e28584d053b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gene_system (0.4.0)
4
+ gene_system (0.5.0)
5
5
  hashie
6
6
  highline (~> 2.0)
7
7
  jsonnet
@@ -43,6 +43,18 @@ module GeneSystem
43
43
  desc: 'Path to manifest (i.e. manifest.json)'
44
44
  )
45
45
 
46
+ method_option(
47
+ :include_tags,
48
+ type: :array,
49
+ desc: 'List of tags to include'
50
+ )
51
+
52
+ method_option(
53
+ :exclude_tags,
54
+ type: :array,
55
+ desc: 'List of tags to exclude'
56
+ )
57
+
46
58
  def install
47
59
  cmd = GeneSystem::Commands::InstallManifest.new(options)
48
60
  cmd.run
@@ -56,6 +68,18 @@ module GeneSystem
56
68
  desc: 'Path to manifest (i.e. manifest.json)'
57
69
  )
58
70
 
71
+ method_option(
72
+ :include_tags,
73
+ type: :array,
74
+ desc: 'List of tags to include'
75
+ )
76
+
77
+ method_option(
78
+ :exclude_tags,
79
+ type: :array,
80
+ desc: 'List of tags to exclude'
81
+ )
82
+
59
83
  def remove
60
84
  cmd = GeneSystem::Commands::RemoveManifest.new(options)
61
85
  cmd.run
@@ -0,0 +1,107 @@
1
+ module GeneSystem
2
+ module Commands
3
+ # Install/Remove shared helper functions
4
+ module Helpers
5
+ ##
6
+ # Asks for user input when given prompts
7
+ #
8
+ # @param prompts [Array]
9
+ #
10
+ # @return Hashie::Mash
11
+ #
12
+ def ask(prompts = [])
13
+ answers = @manifest.variables
14
+ return answers if prompts.nil? || prompts.empty?
15
+
16
+ prompts.each do |prompt|
17
+ resp = @prompt.ask(prompt.prompt)
18
+ answers[prompt.var] = resp
19
+ end
20
+
21
+ answers
22
+ end
23
+
24
+ ##
25
+ # Determines whether to skip a step
26
+ #
27
+ # @param [GeneSystem::Step] step
28
+ # @param [GeneSystem::Platform] platform
29
+ #
30
+ # @return [Boolean]
31
+ #
32
+ def skip?(direction, step, platform)
33
+ return false if step.send(direction).skip.nil?
34
+
35
+ platform.execute_command(
36
+ step.send(direction).skip
37
+ ).zero?
38
+ end
39
+
40
+ ##
41
+ # Returns manifest steps that match command
42
+ # options
43
+ #
44
+ # If there are no inclusions or exclusions then
45
+ # all of the steps are returned.
46
+ #
47
+ # If there is an include and/or an exclude filter
48
+ # then the steps are filtered
49
+ #
50
+ # @return [GeneSystem::StepCollection]
51
+ #
52
+ def steps
53
+ steps = @manifest.steps
54
+ return steps unless filters?
55
+
56
+ filters.each do |matcher, tags|
57
+ steps = steps.filter(
58
+ matcher, tags: tags
59
+ )
60
+ end
61
+
62
+ steps
63
+ end
64
+
65
+ ##
66
+ # Constructs a filter function hash
67
+ #
68
+ # The key of the hash is the filter function
69
+ # and the value is the tags to filter by
70
+ #
71
+ # If no inclusions or exclusions are specified
72
+ # then an empty hash is returned
73
+ #
74
+ # @return [Hash]
75
+ #
76
+ def filters
77
+ filters = {}
78
+
79
+ if @options.include_tags
80
+ filters[StepCollection::STEP_INCLUDE_ANY_TAG] = @options.include_tags
81
+ end
82
+
83
+ if @options.exclude_tags
84
+ filters[StepCollection::STEP_EXCLUDE_ANY_TAG] = @options.exclude_tags
85
+ end
86
+
87
+ filters
88
+ end
89
+
90
+ ##
91
+ # Returns true when an inclusion filter
92
+ # and/or an exclusion filter is specified
93
+ # in command options.
94
+ #
95
+ # Otherwise it returns false
96
+ #
97
+ # @return [Boolean]
98
+ #
99
+ def filters?
100
+ return true if @options.include_tags
101
+ return true if @options.exclude_tags
102
+
103
+ false
104
+ end
105
+ end
106
+ end
107
+ end
@@ -2,6 +2,8 @@ module GeneSystem
2
2
  module Commands
3
3
  # Install manifest command
4
4
  class InstallManifest
5
+ include GeneSystem::Commands::Helpers
6
+
5
7
  ##
6
8
  # Default name of gene system manifest
7
9
  #
@@ -29,8 +31,8 @@ module GeneSystem
29
31
 
30
32
  puts("INSTALL #{@manifest.name_and_version}")
31
33
 
32
- @manifest.steps.each do |step|
33
- next if skip?(step, platform)
34
+ steps.each do |step|
35
+ next if skip?(:install, step, platform)
34
36
 
35
37
  vars = ask(step.install.prompts)
36
38
 
@@ -44,43 +46,6 @@ module GeneSystem
44
46
  "✔ Manifest #{@manifest.name_and_version} successfully installed"
45
47
  )
46
48
  end
47
-
48
- private
49
-
50
- ##
51
- # Asks for user input when given prompts
52
- #
53
- # @param prompts [Array]
54
- #
55
- # @return Hashie::Mash
56
- #
57
- def ask(prompts = [])
58
- answers = @manifest.variables
59
- return answers if prompts.nil? || prompts.empty?
60
-
61
- prompts.each do |prompt|
62
- resp = @prompt.ask(prompt.prompt)
63
- answers[prompt.var] = resp
64
- end
65
-
66
- answers
67
- end
68
-
69
- ##
70
- # Determines whether to skip a step
71
- #
72
- # @param [GeneSystem::Step] step
73
- # @param [GeneSystem::Platform] platform
74
- #
75
- # @return [Boolean]
76
- #
77
- def skip?(step, platform)
78
- return false if step.install.skip.nil?
79
-
80
- platform.execute_command(
81
- step.install.skip
82
- ).zero?
83
- end
84
49
  end
85
50
  end
86
51
  end
@@ -2,6 +2,8 @@ module GeneSystem
2
2
  module Commands
3
3
  # Remove manifest command
4
4
  class RemoveManifest
5
+ include GeneSystem::Commands::Helpers
6
+
5
7
  ##
6
8
  # Default name of gene system manifest
7
9
  #
@@ -29,8 +31,8 @@ module GeneSystem
29
31
 
30
32
  puts("REMOVE #{@manifest.name_and_version}")
31
33
 
32
- @manifest.steps.each do |step|
33
- next if skip?(step, platform)
34
+ steps.each do |step|
35
+ next if skip?(:remove, step, platform)
34
36
 
35
37
  vars = ask(step.remove.prompts)
36
38
 
@@ -44,43 +46,6 @@ module GeneSystem
44
46
  "✔ Manifest #{@manifest.name_and_version} successfully removed"
45
47
  )
46
48
  end
47
-
48
- private
49
-
50
- ##
51
- # Asks for user input when given prompts
52
- #
53
- # @param prompts [Array]
54
- #
55
- # @return Hashie::Mash
56
- #
57
- def ask(prompts = [])
58
- answers = @manifest.variables
59
- return answers if prompts.nil?
60
-
61
- prompts.each do |prompt|
62
- resp = @prompt.ask(prompt.prompt)
63
- answers[prompt.var] = resp
64
- end
65
-
66
- answers
67
- end
68
-
69
- ##
70
- # Determines whether to skip a step
71
- #
72
- # @param [GeneSystem::Step] step
73
- # @param [GeneSystem::Platform] platform
74
- #
75
- # @return [Boolean]
76
- #
77
- def skip?(step, platform)
78
- return false if step.remove.skip.nil?
79
-
80
- platform.execute_command(
81
- step.remove.skip
82
- ).zero?
83
- end
84
49
  end
85
50
  end
86
51
  end
@@ -144,26 +144,12 @@ module GeneSystem
144
144
  end
145
145
 
146
146
  ##
147
- # Steps executes a query function in a select call against each step to
148
- # return a list of steps relevant to an operation.
147
+ # Returns a steps as a step collection
149
148
  #
150
- # The given query function should evaluate to true when the desired step
151
- # should be in the return set.
149
+ # @return [GeneSystem::StepCollection]
152
150
  #
153
- # By default a all steps will be returned.
154
- #
155
- # Example:
156
- # query = ->(step) { step.tags.include?("foo") }
157
- # manifest.steps(query)
158
- #
159
- # @param [Lambda] query
160
- #
161
- # @return [Array]
162
- #
163
- def steps(query = DEFAULT_QUERY)
164
- @steps.select do |step|
165
- query.call(step)
166
- end
151
+ def steps
152
+ GeneSystem::StepCollection.new(@steps)
167
153
  end
168
154
 
169
155
  ##
@@ -0,0 +1,95 @@
1
+ require 'forwardable'
2
+
3
+ module GeneSystem
4
+ # Filterable and mergable collection of steps
5
+ class StepCollection
6
+ attr_reader :steps
7
+ extend Forwardable
8
+
9
+ ##
10
+ # Default filter will match each step
11
+ #
12
+ DEFAULT_QUERY = lambda do |_step, _query = {}|
13
+ true
14
+ end
15
+
16
+ ##
17
+ # Function that returns true if step has
18
+ # any of the provided tags
19
+ #
20
+ # @param [GeneSystem::Step] step
21
+ # @param [Hash] query
22
+ #
23
+ # @return [Boolean]
24
+ #
25
+ STEP_INCLUDE_ANY_TAG = lambda do |step, query = {}|
26
+ raise 'query must include tags' unless query[:tags]&.is_a?(Array)
27
+
28
+ results = query[:tags].map do |tag|
29
+ step.tags.include?(tag)
30
+ end
31
+
32
+ results.any?(true)
33
+ end
34
+
35
+ ##
36
+ # Function that returns true if step does
37
+ # not have any of the provided tags
38
+ #
39
+ # @param [GeneSystem::Step] step
40
+ # @param [Hash] query
41
+ #
42
+ # @return [Boolean]
43
+ #
44
+ STEP_EXCLUDE_ANY_TAG = lambda do |step, query = {}|
45
+ raise 'query must include tags' unless query[:tags]&.is_a?(Array)
46
+
47
+ results = query[:tags].map do |tag|
48
+ step.tags.include?(tag)
49
+ end
50
+
51
+ results.all?(false)
52
+ end
53
+
54
+ def initialize(steps = [])
55
+ @steps = steps
56
+ end
57
+
58
+ def_delegators(:@steps, :count, :map, :each)
59
+
60
+ ##
61
+ # Filters steps by given matcher function
62
+ #
63
+ # The matcher function must take a step as an
64
+ # argument and return true or false as to whether
65
+ # it should be in the returned collection.
66
+ #
67
+ # @param [Proc] matcher
68
+ # @param [Hash] query
69
+ #
70
+ # @returns [GeneSystem::StepCollection]
71
+ #
72
+ def filter(matcher = DEFAULT_FILTER, query = {})
73
+ GeneSystem::StepCollection.new(
74
+ @steps.select do |step|
75
+ matcher.call(step, query)
76
+ end
77
+ )
78
+ end
79
+
80
+ ##
81
+ # Creates a collection which is a union
82
+ # of the given collection and this
83
+ # collection.
84
+ #
85
+ # @param [GeneSystem::StepCollection] collection
86
+ #
87
+ # @return [GeneSystem::StepCollection]
88
+ #
89
+ def merge(collection)
90
+ GeneSystem::StepCollection.new(
91
+ @steps + collection.steps
92
+ )
93
+ end
94
+ end
95
+ end
@@ -1,3 +1,3 @@
1
1
  module GeneSystem
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.5.0'.freeze
3
3
  end
data/lib/gene_system.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'gene_system/version'
2
+ require 'gene_system/step_collection'
2
3
  require 'gene_system/generators'
3
4
  require 'gene_system/manifest'
4
5
  require 'gene_system/step'
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe GeneSystem::Commands::Helpers do
4
+ let(:manifest) { double(GeneSystem::Manifest) }
5
+ let(:step) { double(GeneSystem::Step) }
6
+ let(:steps) { [step, step] }
7
+ let(:options) { Hashie::Mash.new }
8
+
9
+ subject { GeneSystem::Commands::RemoveManifest.new(options) }
10
+
11
+ before do
12
+ subject.instance_variable_set(:@manifest, manifest)
13
+ allow(manifest).to receive(:steps).and_return(steps)
14
+ end
15
+
16
+ describe '#steps' do
17
+ context 'when there are no filters' do
18
+ it 'returns all manifest steps' do
19
+ expect(subject.steps).to eq steps
20
+ end
21
+ end
22
+
23
+ context 'when there are filters' do
24
+ let(:options) do
25
+ Hashie::Mash.new(exclude_tags: %w[bags of tags])
26
+ end
27
+
28
+ before do
29
+ allow(steps).to receive(:filter)
30
+ subject.steps
31
+ end
32
+
33
+ it 'filters steps' do
34
+ expect(steps)
35
+ .to have_received(:filter)
36
+ .with(
37
+ GeneSystem::StepCollection::STEP_EXCLUDE_ANY_TAG,
38
+ tags: %w[bags of tags]
39
+ )
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '#filters' do
45
+ context 'when include_tags is enabled' do
46
+ let(:options) do
47
+ Hashie::Mash.new(include_tags: %w[bags of tags])
48
+ end
49
+
50
+ it 'has STEP_INCLUDE_ANY_TAG function and tags' do
51
+ expect(subject.filters).to eq(
52
+ GeneSystem::StepCollection::STEP_INCLUDE_ANY_TAG => %w[bags of tags]
53
+ )
54
+ end
55
+ end
56
+
57
+ context 'when exclude_tags is enabled' do
58
+ let(:options) do
59
+ Hashie::Mash.new(exclude_tags: %w[bags of tags])
60
+ end
61
+
62
+ it 'has STEP_EXCLUDE_ANY_TAG function and tags' do
63
+ expect(subject.filters).to eq(
64
+ GeneSystem::StepCollection::STEP_EXCLUDE_ANY_TAG => %w[bags of tags]
65
+ )
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '#filters?' do
71
+ context 'when neither include_tags or exclude_tags' do
72
+ it 'returns false' do
73
+ expect(subject.filters?).to be false
74
+ end
75
+ end
76
+
77
+ context 'when include_tags is enabled' do
78
+ let(:options) do
79
+ Hashie::Mash.new(include_tags: 'true')
80
+ end
81
+
82
+ it 'returns true' do
83
+ expect(subject.filters?).to be true
84
+ end
85
+ end
86
+
87
+ context 'when exclude_tags is enabled' do
88
+ let(:options) do
89
+ Hashie::Mash.new(exclude_tags: 'true')
90
+ end
91
+
92
+ it 'returns true' do
93
+ expect(subject.filters?).to be true
94
+ end
95
+ end
96
+ end
97
+ end
@@ -182,7 +182,10 @@ RSpec.describe GeneSystem::Commands::InstallManifest do
182
182
  it 'prints success message' do
183
183
  expect(subject)
184
184
  .to have_received(:puts)
185
- .with("✔ Manifest #{manifest_name} v#{version} successfully installed")
185
+ .with(
186
+ "✔ Manifest #{manifest_name} v#{version} "\
187
+ 'successfully installed'
188
+ )
186
189
  end
187
190
  end
188
191
 
@@ -251,7 +254,10 @@ RSpec.describe GeneSystem::Commands::InstallManifest do
251
254
  it 'prints success message' do
252
255
  expect(subject)
253
256
  .to have_received(:puts)
254
- .with("✔ Manifest #{manifest_name} v#{version} successfully installed")
257
+ .with(
258
+ "✔ Manifest #{manifest_name} v#{version} "\
259
+ 'successfully installed'
260
+ )
255
261
  end
256
262
  end
257
263
  end
@@ -255,23 +255,7 @@ RSpec.describe GeneSystem::Manifest do
255
255
  end
256
256
 
257
257
  it 'returns all steps by defualt' do
258
- expect(@manifest.steps).to eq steps
259
- end
260
-
261
- context 'when given a query' do
262
- let(:target_step) { double(GeneSystem::Step) }
263
- let(:steps) { [step, target_step, step] }
264
-
265
- before do
266
- query = ->(step) { step == target_step }
267
- @manifest.instance_variable_set(:@steps, steps)
268
-
269
- @result = @manifest.steps(query)
270
- end
271
-
272
- it 'returns steps responding to query' do
273
- expect(@result).to eq [target_step]
274
- end
258
+ expect(@manifest.steps.steps).to eq steps
275
259
  end
276
260
  end
277
261
 
@@ -0,0 +1,199 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe GeneSystem::StepCollection do
4
+ let(:step_name) { 'step-name' }
5
+ let(:step) do
6
+ double(GeneSystem::Step, name: step_name)
7
+ end
8
+
9
+ let(:steps) { [step, step] }
10
+ subject { described_class.new(steps) }
11
+
12
+ describe 'DEFAULT_QUERY' do
13
+ it 'returns true' do
14
+ expect(
15
+ described_class::DEFAULT_QUERY.call(step)
16
+ ).to be true
17
+ end
18
+ end
19
+
20
+ describe 'STEP_INCLUDE_ANY_TAG' do
21
+ let(:tag) { 'foo' }
22
+
23
+ context 'when query does not include tags' do
24
+ it 'raises runtime error' do
25
+ expect do
26
+ described_class::STEP_INCLUDE_ANY_TAG.call(step)
27
+ end.to raise_error(
28
+ RuntimeError,
29
+ 'query must include tags'
30
+ )
31
+ end
32
+ end
33
+
34
+ context 'when step has tag' do
35
+ let(:step) do
36
+ double(GeneSystem::Step, tags: [tag, 'bar', 'biz'])
37
+ end
38
+
39
+ before do
40
+ @result = described_class::STEP_INCLUDE_ANY_TAG.call(
41
+ step,
42
+ tags: [tag]
43
+ )
44
+ end
45
+
46
+ it 'returns true' do
47
+ expect(@result).to be true
48
+ end
49
+ end
50
+
51
+ context 'when step does not have tag' do
52
+ let(:step) do
53
+ double(GeneSystem::Step, tags: %w[bar biz])
54
+ end
55
+
56
+ before do
57
+ @result = described_class::STEP_INCLUDE_ANY_TAG.call(
58
+ step,
59
+ tags: [tag]
60
+ )
61
+ end
62
+
63
+ it 'returns false' do
64
+ expect(@result).to be false
65
+ end
66
+ end
67
+ end
68
+
69
+ describe 'STEP_EXCLUDE_ANY_TAG' do
70
+ let(:tag) { 'foo' }
71
+
72
+ context 'when query does not include tags' do
73
+ it 'raises runtime error' do
74
+ expect do
75
+ described_class::STEP_EXCLUDE_ANY_TAG.call(step)
76
+ end.to raise_error(
77
+ RuntimeError,
78
+ 'query must include tags'
79
+ )
80
+ end
81
+ end
82
+
83
+ context 'when step has tag' do
84
+ let(:step) do
85
+ double(GeneSystem::Step, tags: [tag, 'bar', 'biz'])
86
+ end
87
+
88
+ before do
89
+ @result = described_class::STEP_EXCLUDE_ANY_TAG.call(
90
+ step,
91
+ tags: [tag]
92
+ )
93
+ end
94
+
95
+ it 'returns false' do
96
+ expect(@result).to be false
97
+ end
98
+ end
99
+
100
+ context 'when step does not have tag' do
101
+ let(:step) do
102
+ double(GeneSystem::Step, tags: %w[bar biz])
103
+ end
104
+
105
+ before do
106
+ @result = described_class::STEP_EXCLUDE_ANY_TAG.call(
107
+ step,
108
+ tags: [tag]
109
+ )
110
+ end
111
+
112
+ it 'returns true' do
113
+ expect(@result).to be true
114
+ end
115
+ end
116
+ end
117
+
118
+ describe '#count' do
119
+ it 'returns step count' do
120
+ expect(subject.count).to eq steps.count
121
+ end
122
+ end
123
+
124
+ describe '#map' do
125
+ before do
126
+ @result = subject.map(&:name)
127
+ end
128
+
129
+ it 'maps step names' do
130
+ expect(@result).to eq [step_name, step_name]
131
+ end
132
+ end
133
+
134
+ describe '#each' do
135
+ before do
136
+ @result = []
137
+
138
+ subject.each do |step|
139
+ @result << step.name
140
+ end
141
+ end
142
+
143
+ it 'can iterate through steps' do
144
+ expect(@result).to eq [step_name, step_name]
145
+ end
146
+ end
147
+
148
+ describe '#filter' do
149
+ let(:matching_step) do
150
+ double(GeneSystem::Step, tags: %w[target foo])
151
+ end
152
+
153
+ let(:steps) do
154
+ [step, step, matching_step]
155
+ end
156
+
157
+ before do
158
+ allow(matching_step)
159
+ .to receive(:tags)
160
+ .and_return(%w[target foo])
161
+
162
+ allow(step)
163
+ .to receive(:tags)
164
+ .and_return([])
165
+
166
+ @steps = subject
167
+ .filter(
168
+ described_class::STEP_INCLUDE_ANY_TAG,
169
+ tags: ['target']
170
+ )
171
+ end
172
+
173
+ it 'returns a step collection' do
174
+ expect(@steps).to be_a(GeneSystem::StepCollection)
175
+ end
176
+
177
+ it 'only returns matching step' do
178
+ expect(@steps.steps.count).to be 1
179
+ expect(@steps.steps.first).to eq matching_step
180
+ end
181
+ end
182
+
183
+ describe '#merge' do
184
+ let(:another_collection) { described_class.new(steps) }
185
+
186
+ before do
187
+ @merged = subject.merge(another_collection)
188
+ end
189
+
190
+ it 'returns a new step collection' do
191
+ expect(@merged).not_to eq subject
192
+ expect(@merged).not_to eq another_collection
193
+ end
194
+
195
+ it 'is a union of the 2 collections' do
196
+ expect(@merged.count).to eq 2 * subject.count
197
+ end
198
+ end
199
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gene_system
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Bigger
@@ -330,6 +330,7 @@ files:
330
330
  - lib/gene_system/cli.rb
331
331
  - lib/gene_system/commands.rb
332
332
  - lib/gene_system/commands/create_manifest.rb
333
+ - lib/gene_system/commands/helpers.rb
333
334
  - lib/gene_system/commands/install_manifest.rb
334
335
  - lib/gene_system/commands/print_version.rb
335
336
  - lib/gene_system/commands/remove_manifest.rb
@@ -337,16 +338,19 @@ files:
337
338
  - lib/gene_system/manifest.rb
338
339
  - lib/gene_system/platform.rb
339
340
  - lib/gene_system/step.rb
341
+ - lib/gene_system/step_collection.rb
340
342
  - lib/gene_system/version.rb
341
343
  - manifest.json
342
344
  - spec/gene_system/cli_spec.rb
343
345
  - spec/gene_system/commands/create_manifest_spec.rb
346
+ - spec/gene_system/commands/helpers_spec.rb
344
347
  - spec/gene_system/commands/install_manifest_spec.rb
345
348
  - spec/gene_system/commands/print_version_spec.rb
346
349
  - spec/gene_system/commands/remove_manifest_spec.rb
347
350
  - spec/gene_system/generators_spec.rb
348
351
  - spec/gene_system/manifest_spec.rb
349
352
  - spec/gene_system/platform_spec.rb
353
+ - spec/gene_system/step_collection_spec.rb
350
354
  - spec/gene_system/step_spec.rb
351
355
  - spec/spec_helper.rb
352
356
  homepage: https://github.com/andrewbigger/gene_system
@@ -375,11 +379,13 @@ summary: System configuration tool for applying settings
375
379
  test_files:
376
380
  - spec/gene_system/cli_spec.rb
377
381
  - spec/gene_system/commands/create_manifest_spec.rb
382
+ - spec/gene_system/commands/helpers_spec.rb
378
383
  - spec/gene_system/commands/install_manifest_spec.rb
379
384
  - spec/gene_system/commands/print_version_spec.rb
380
385
  - spec/gene_system/commands/remove_manifest_spec.rb
381
386
  - spec/gene_system/generators_spec.rb
382
387
  - spec/gene_system/manifest_spec.rb
383
388
  - spec/gene_system/platform_spec.rb
389
+ - spec/gene_system/step_collection_spec.rb
384
390
  - spec/gene_system/step_spec.rb
385
391
  - spec/spec_helper.rb