berkshelf 3.0.0.beta7 → 3.0.0.beta8

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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +4 -1
  4. data/CONTRIBUTING.md +1 -1
  5. data/Gemfile +0 -1
  6. data/Guardfile +0 -8
  7. data/README.md +33 -13
  8. data/berkshelf.gemspec +3 -3
  9. data/features/commands/install.feature +16 -88
  10. data/features/commands/search.feature +15 -0
  11. data/features/commands/shelf/show.feature +2 -2
  12. data/features/commands/shelf/uninstall.feature +1 -1
  13. data/features/commands/show.feature +3 -3
  14. data/features/commands/update.feature +29 -1
  15. data/features/commands/upload.feature +172 -7
  16. data/features/commands/vendor.feature +32 -0
  17. data/features/json_formatter.feature +26 -24
  18. data/features/lifecycle.feature +285 -0
  19. data/features/lockfile.feature +9 -7
  20. data/features/step_definitions/chef_server_steps.rb +1 -0
  21. data/features/step_definitions/cli_steps.rb +2 -2
  22. data/features/step_definitions/filesystem_steps.rb +2 -4
  23. data/gem_graph.png +0 -0
  24. data/generator_files/chefignore +0 -2
  25. data/lib/berkshelf.rb +39 -14
  26. data/lib/berkshelf/berksfile.rb +161 -113
  27. data/lib/berkshelf/cached_cookbook.rb +2 -2
  28. data/lib/berkshelf/cli.rb +15 -3
  29. data/lib/berkshelf/commands/shelf.rb +3 -7
  30. data/lib/berkshelf/community_rest.rb +9 -9
  31. data/lib/berkshelf/config.rb +3 -3
  32. data/lib/berkshelf/cookbook_generator.rb +0 -8
  33. data/lib/berkshelf/cookbook_store.rb +1 -2
  34. data/lib/berkshelf/dependency.rb +25 -138
  35. data/lib/berkshelf/downloader.rb +41 -7
  36. data/lib/berkshelf/errors.rb +113 -214
  37. data/lib/berkshelf/formatters/base.rb +42 -0
  38. data/lib/berkshelf/formatters/human.rb +145 -0
  39. data/lib/berkshelf/formatters/json.rb +149 -133
  40. data/lib/berkshelf/formatters/null.rb +8 -18
  41. data/lib/berkshelf/init_generator.rb +1 -1
  42. data/lib/berkshelf/installer.rb +115 -104
  43. data/lib/berkshelf/location.rb +22 -121
  44. data/lib/berkshelf/locations/base.rb +75 -0
  45. data/lib/berkshelf/locations/git.rb +196 -0
  46. data/lib/berkshelf/locations/github.rb +8 -0
  47. data/lib/berkshelf/locations/path.rb +78 -0
  48. data/lib/berkshelf/lockfile.rb +452 -290
  49. data/lib/berkshelf/logger.rb +9 -3
  50. data/lib/berkshelf/mixin/logging.rb +4 -9
  51. data/lib/berkshelf/resolver.rb +12 -12
  52. data/lib/berkshelf/source.rb +13 -1
  53. data/lib/berkshelf/version.rb +1 -1
  54. data/spec/fixtures/cookbooks/example_cookbook-0.5.0/metadata.rb +3 -7
  55. data/spec/fixtures/cookbooks/example_cookbook/metadata.rb +3 -6
  56. data/spec/spec_helper.rb +5 -6
  57. data/spec/support/matchers/file_system_matchers.rb +4 -0
  58. data/spec/support/shared_examples/formatter.rb +11 -0
  59. data/spec/unit/berkshelf/berksfile_spec.rb +25 -28
  60. data/spec/unit/berkshelf/cli_spec.rb +19 -11
  61. data/spec/unit/berkshelf/dependency_spec.rb +4 -164
  62. data/spec/unit/berkshelf/formatters/base_spec.rb +35 -0
  63. data/spec/unit/berkshelf/formatters/human_spec.rb +7 -0
  64. data/spec/unit/berkshelf/formatters/json_spec.rb +7 -0
  65. data/spec/unit/berkshelf/formatters/null_spec.rb +7 -11
  66. data/spec/unit/berkshelf/location_spec.rb +16 -144
  67. data/spec/unit/berkshelf/locations/base_spec.rb +80 -0
  68. data/spec/unit/berkshelf/locations/git_spec.rb +249 -0
  69. data/spec/unit/berkshelf/locations/path_spec.rb +107 -0
  70. data/spec/unit/berkshelf/lockfile_parser_spec.rb +3 -3
  71. data/spec/unit/berkshelf/lockfile_spec.rb +55 -11
  72. data/spec/unit/berkshelf/logger_spec.rb +2 -2
  73. data/spec/unit/berkshelf/mixin/logging_spec.rb +5 -9
  74. data/spec/unit/berkshelf/source_spec.rb +32 -13
  75. data/spec/unit/berkshelf_spec.rb +6 -9
  76. metadata +33 -33
  77. data/.ruby-version +0 -1
  78. data/berkshelf-complete.sh +0 -75
  79. data/lib/berkshelf/formatters.rb +0 -110
  80. data/lib/berkshelf/formatters/human_readable.rb +0 -142
  81. data/lib/berkshelf/git.rb +0 -204
  82. data/lib/berkshelf/locations/git_location.rb +0 -135
  83. data/lib/berkshelf/locations/github_location.rb +0 -55
  84. data/lib/berkshelf/locations/mercurial_location.rb +0 -114
  85. data/lib/berkshelf/locations/path_location.rb +0 -88
  86. data/lib/berkshelf/mercurial.rb +0 -146
  87. data/lib/berkshelf/mixin.rb +0 -7
  88. data/spec/support/mercurial.rb +0 -123
  89. data/spec/unit/berkshelf/formatters_spec.rb +0 -114
  90. data/spec/unit/berkshelf/git_spec.rb +0 -312
  91. data/spec/unit/berkshelf/locations/git_location_spec.rb +0 -126
  92. data/spec/unit/berkshelf/locations/mercurial_location_spec.rb +0 -131
  93. data/spec/unit/berkshelf/locations/path_location_spec.rb +0 -25
  94. data/spec/unit/berkshelf/mercurial_spec.rb +0 -172
@@ -0,0 +1,107 @@
1
+ require 'spec_helper'
2
+
3
+ module Berkshelf
4
+ describe PathLocation do
5
+ let(:berksfile) { double('berksfile', filepath: __FILE__) }
6
+ let(:constraint) { double('constraint', satisfies?: true) }
7
+ let(:dependency) do
8
+ double('dependency',
9
+ name: 'nginx',
10
+ version_constraint: constraint,
11
+ berksfile: berksfile,
12
+ )
13
+ end
14
+ let(:path) { fixtures_path.join('cookbooks', 'example_cookbook').to_s }
15
+ let(:relative_path) { '../../../fixtures/cookbooks/example_cookbook' }
16
+
17
+ subject { described_class.new(dependency, path: path) }
18
+
19
+ describe '#installed?' do
20
+ it 'returns false' do
21
+ expect(subject.installed?).to be_false
22
+ end
23
+ end
24
+
25
+ describe '#install' do
26
+ it 'validates the cached cookbook' do
27
+ expect(subject).to receive(:validate_cached!).with(path)
28
+ subject.install
29
+ end
30
+ end
31
+
32
+ describe '#cached_cookbook' do
33
+ it 'loads the cached cookbook at the path' do
34
+ expect(CachedCookbook).to receive(:from_path).with(path)
35
+ subject.cached_cookbook
36
+ end
37
+ end
38
+
39
+ describe '#relative_path' do
40
+ it 'returns the path to the Berksfile' do
41
+ expect(subject.relative_path).to eq(relative_path)
42
+ end
43
+ end
44
+
45
+ describe '#expanded_path' do
46
+ it 'returns the expanded path, relative to the Berksfile' do
47
+ absolute_path = File.expand_path(relative_path, File.dirname(berksfile.filepath))
48
+ expect(subject.expanded_path).to eq(absolute_path)
49
+ end
50
+ end
51
+
52
+ describe '#==' do
53
+ it 'is false when compared with a non-PathLocation' do
54
+ this = PathLocation.new(dependency, path: '.')
55
+ that = 'A string'
56
+ expect(this).to_not eq(that)
57
+ end
58
+
59
+ it 'is false when the metadata? is not the same' do
60
+ this = PathLocation.new(dependency, path: '.')
61
+ that = PathLocation.new(dependency, path: '.', metadata: true)
62
+ expect(this).to_not eq(that)
63
+ end
64
+
65
+ it 'is false when the expanded paths are different' do
66
+ this = PathLocation.new(dependency, path: '.')
67
+ that = PathLocation.new(dependency, path: '..')
68
+ expect(this).to_not eq(that)
69
+ end
70
+
71
+ it 'is true when they are the same' do
72
+ this = PathLocation.new(dependency, path: '.', metadata: true)
73
+ that = PathLocation.new(dependency, path: '.', metadata: true)
74
+ expect(this).to eq(that)
75
+ end
76
+ end
77
+
78
+ describe '#to_lock' do
79
+ it 'includes the path relative to the Berksfile' do
80
+ expect(subject.to_lock).to eq <<-EOH.gsub(/^ {10}/, '')
81
+ path: #{relative_path}
82
+ EOH
83
+ end
84
+
85
+ it 'includes the metadata attribute' do
86
+ subject.stub(:metadata?).and_return(true)
87
+ expect(subject.to_lock).to eq <<-EOH.gsub(/^ {10}/, '')
88
+ path: #{relative_path}
89
+ metadata: true
90
+ EOH
91
+ end
92
+ end
93
+
94
+ describe '#to_s' do
95
+ it 'uses the expanded path' do
96
+ expect(subject.to_s).to eq("source at #{relative_path}")
97
+ end
98
+ end
99
+
100
+ describe '#inspect' do
101
+ it 'includes the right information' do
102
+ subject.stub(:metadata?).and_return(true)
103
+ expect(subject.inspect).to eq("#<Berkshelf::PathLocation metadata: true, path: #{relative_path}>")
104
+ end
105
+ end
106
+ end
107
+ end
@@ -14,7 +14,7 @@ describe Berkshelf::Lockfile do
14
14
  end
15
15
 
16
16
  it 'warns the user' do
17
- expect(Berkshelf.ui).to receive(:warn)
17
+ expect(Berkshelf.formatter).to receive(:warn)
18
18
  subject.parse
19
19
  end
20
20
 
@@ -49,7 +49,7 @@ describe Berkshelf::Lockfile do
49
49
  let(:fixture) { fixtures_path.join('lockfiles/blank.lock') }
50
50
 
51
51
  it 'warns the user' do
52
- expect(Berkshelf.ui).to receive(:warn)
52
+ expect(Berkshelf.formatter).to receive(:warn)
53
53
  subject.parse
54
54
  end
55
55
 
@@ -66,7 +66,7 @@ describe Berkshelf::Lockfile do
66
66
  let(:fixture) { fixtures_path.join('lockfiles/empty.lock') }
67
67
 
68
68
  it 'does not warn the user' do
69
- expect(Berkshelf.ui).to_not receive(:warn)
69
+ expect(Berkshelf.formatter).to_not receive(:warn)
70
70
  subject.parse
71
71
  end
72
72
 
@@ -55,10 +55,14 @@ describe Berkshelf::Lockfile do
55
55
 
56
56
  describe '#trusted?' do
57
57
  it 'returns true when the lockfile is trusted' do
58
+ cookbook = double('apt-1.0.0', dependencies: {})
58
59
  apt = double('apt',
60
+ name: 'apt',
59
61
  version_constraint: Solve::Constraint.new('>= 0.0.0'),
60
62
  version: '1.0.0',
61
63
  location: 'api',
64
+ dependencies: {},
65
+ cached_cookbook: cookbook,
62
66
  )
63
67
  berksfile = double('berksfile', dependencies: [apt])
64
68
  subject.instance_variable_set(:@berksfile, berksfile)
@@ -68,8 +72,46 @@ describe Berkshelf::Lockfile do
68
72
  expect(subject.trusted?).to be_true
69
73
  end
70
74
 
75
+ it 'returns true when the lockfile is trusted with transitive dependencies' do
76
+ cookbook = double('apt-1.0.0', dependencies: { 'bacon' => '1.0.0' })
77
+ apt = double('apt',
78
+ name: 'apt',
79
+ version_constraint: Solve::Constraint.new('>= 0.0.0'),
80
+ version: '1.0.0',
81
+ location: 'api',
82
+ dependencies: { 'bacon' => '1.0.0' },
83
+ cached_cookbook: cookbook,
84
+ )
85
+ bacon = double(name: 'bacon', version: '1.0.0', dependencies: {})
86
+ berksfile = double('berksfile', dependencies: [apt])
87
+ subject.instance_variable_set(:@berksfile, berksfile)
88
+ subject.stub(:find).with(apt).and_return(apt)
89
+ subject.graph.stub(:find).with('bacon').and_return(bacon)
90
+ subject.graph.stub(:find).with(apt).and_return(apt)
91
+
92
+ expect(subject.trusted?).to be_true
93
+ end
94
+
95
+ it 'returns false when the lockfile is not trusted because of transitive dependencies' do
96
+ cookbook = double('apt-1.0.0', dependencies: { 'bacon' => '1.0.0', 'flip' => '2.0.0' })
97
+ apt = double('apt',
98
+ name: 'apt',
99
+ version_constraint: Solve::Constraint.new('>= 0.0.0'),
100
+ version: '1.0.0',
101
+ location: 'api',
102
+ dependencies: { 'bacon' => '1.0.0' },
103
+ cached_cookbook: cookbook,
104
+ )
105
+ berksfile = double('berksfile', dependencies: [apt])
106
+ subject.instance_variable_set(:@berksfile, berksfile)
107
+ subject.stub(:find).with(apt).and_return(apt)
108
+ subject.graph.stub(:find).with(apt).and_return(apt)
109
+
110
+ expect(subject.trusted?).to be_false
111
+ end
112
+
71
113
  it 'returns false if the dependency is not in the lockfile' do
72
- apt = double('apt', version_constraint: nil)
114
+ apt = double('apt', name: 'apt', version_constraint: nil)
73
115
  berksfile = double('berksfile', dependencies: [apt])
74
116
  subject.instance_variable_set(:@berksfile, berksfile)
75
117
 
@@ -77,20 +119,24 @@ describe Berkshelf::Lockfile do
77
119
  end
78
120
 
79
121
  it 'returns false if the dependency is not in the graph' do
80
- apt = double('apt', version_constraint: nil)
122
+ apt = double('apt', name: 'apt', version_constraint: nil)
81
123
  berksfile = double('berksfile', dependencies: [apt])
82
124
  subject.instance_variable_set(:@berksfile, berksfile)
83
125
  subject.stub(:find).with(apt).and_return(true)
84
- subject.graph.stub(:find).with(apt).and_return(false)
126
+ subject.graph.stub(:find).with(apt).and_return(nil)
85
127
 
86
128
  expect(subject.trusted?).to be_false
87
129
  end
88
130
 
89
131
  it 'returns false if the constraint is not satisfied' do
132
+ cookbook = double('apt-1.0.0', dependencies: {})
90
133
  apt = double('apt',
134
+ name: 'apt',
91
135
  version_constraint: Solve::Constraint.new('< 1.0.0'),
92
136
  version: '1.0.0',
93
- location: 'api'
137
+ location: 'api',
138
+ dependencies: {},
139
+ cached_cookbook: cookbook,
94
140
  )
95
141
  berksfile = double('berksfile', dependencies: [apt])
96
142
  subject.instance_variable_set(:@berksfile, berksfile)
@@ -101,10 +147,14 @@ describe Berkshelf::Lockfile do
101
147
  end
102
148
 
103
149
  it 'returns false if the locations are different' do
150
+ cookbook = double('apt-1.0.0', dependencies: {})
104
151
  apt = double('apt',
152
+ name: 'apt',
105
153
  version_constraint: Solve::Constraint.new('< 1.0.0'),
106
154
  version: '1.0.0',
107
- location: 'api'
155
+ location: 'api',
156
+ dependencies: {},
157
+ cached_cookbook: cookbook,
108
158
  )
109
159
  apt_master = apt.dup
110
160
  apt_master.stub(location: 'github')
@@ -196,12 +246,6 @@ describe Berkshelf::Lockfile do
196
246
  end
197
247
 
198
248
  describe '#unlock' do
199
- it 'raises an exception when the dependency does not exist' do
200
- expect {
201
- subject.unlock('foo')
202
- }.to raise_error(Berkshelf::CookbookNotFound)
203
- end
204
-
205
249
  it 'removes the dependency from the graph' do
206
250
  subject.add('apache2')
207
251
  subject.unlock('apache2')
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Berkshelf::Logger do
4
- %w(info warn error fatal debug deprecate).each do |meth|
4
+ %w(info warn error fatal debug deprecate exception).each do |meth|
5
5
  describe "##{meth}" do
6
6
  it 'responds' do
7
- expect(Berkshelf::Logger).to respond_to(meth.to_sym)
7
+ expect(subject).to respond_to(meth.to_sym)
8
8
  end
9
9
  end
10
10
  end
@@ -5,19 +5,15 @@ describe Berkshelf::Mixin::Logging do
5
5
  Class.new { include Berkshelf::Mixin::Logging }.new
6
6
  end
7
7
 
8
- describe '#log' do
8
+ describe '#logger' do
9
9
  it 'returns the Berkshelf::Logger' do
10
- expect(subject.log).to eq(Berkshelf::Logger)
10
+ expect(subject.logger).to be_a(Berkshelf::Logger)
11
11
  end
12
12
  end
13
13
 
14
- describe '#log_exception' do
15
- it 'logs the exception and backtrace as fatal' do
16
- ex = Exception.new('msg')
17
- ex.stub(:backtrace).and_return(['one', 'two'])
18
- subject.log.should_receive(:fatal).exactly(2).times
19
-
20
- subject.log_exception(ex)
14
+ describe '#log' do
15
+ it 'returns the Berkshelf::Logger' do
16
+ expect(subject.log).to be_a(Berkshelf::Logger)
21
17
  end
22
18
  end
23
19
  end
@@ -1,23 +1,42 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Berkshelf::Source do
4
- describe "#universe"
5
- describe "#cookbook"
6
- describe "#versions"
3
+ module Berkshelf
4
+ describe Source do
5
+ describe "#universe"
6
+ describe "#cookbook"
7
+ describe "#versions"
7
8
 
8
- describe "#==" do
9
- it "is the same if the uri matches" do
10
- first = described_class.new("http://localhost:8080")
11
- other = described_class.new("http://localhost:8080")
9
+ describe "#==" do
10
+ it "is the same if the uri matches" do
11
+ first = described_class.new("http://localhost:8080")
12
+ other = described_class.new("http://localhost:8080")
12
13
 
13
- expect(first).to eq(other)
14
+ expect(first).to eq(other)
15
+ end
16
+
17
+ it "is not the same if the uri is different" do
18
+ first = described_class.new("http://localhost:8089")
19
+ other = described_class.new("http://localhost:8080")
20
+
21
+ expect(first).to_not eq(other)
22
+ end
14
23
  end
15
24
 
16
- it "is not the same if the uri is different" do
17
- first = described_class.new("http://localhost:8089")
18
- other = described_class.new("http://localhost:8080")
25
+ describe '.default?' do
26
+ it 'returns true when the source is the default' do
27
+ instance = described_class.new(Berksfile::DEFAULT_API_URL)
28
+ expect(instance).to be_default
29
+ end
30
+
31
+ it 'returns true when the scheme is different' do
32
+ instance = described_class.new('http://api.berkshelf.com')
33
+ expect(instance).to be_default
34
+ end
19
35
 
20
- expect(first).to_not eq(other)
36
+ it 'returns false when the source is not the default' do
37
+ instance = described_class.new('http://localhost:8080')
38
+ expect(instance).to_not be_default
39
+ end
21
40
  end
22
41
  end
23
42
  end
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Berkshelf do
4
- describe '::formatter' do
3
+ module Berkshelf
4
+ describe '.formatter' do
5
5
  context 'with default formatter' do
6
6
  before { Berkshelf.instance_variable_set(:@formatter, nil) }
7
7
 
8
- it 'should be human readable' do
9
- expect(Berkshelf.formatter).to be_an_instance_of(Berkshelf::Formatters::HumanReadable)
8
+ it 'is human readable' do
9
+ expect(Berkshelf.formatter).to be_an_instance_of(HumanFormatter)
10
10
  end
11
11
  end
12
12
 
@@ -15,10 +15,7 @@ describe Berkshelf do
15
15
  Berkshelf.instance_eval { @formatter = nil }
16
16
  end
17
17
 
18
- class CustomFormatter
19
- include Berkshelf::Formatters::AbstractFormatter
20
- register_formatter :custom
21
- end
18
+ class CustomFormatter < BaseFormatter; end
22
19
 
23
20
  before do
24
21
  Berkshelf.set_format :custom
@@ -32,7 +29,7 @@ describe Berkshelf do
32
29
 
33
30
  describe '::log' do
34
31
  it 'returns Berkshelf::Logger' do
35
- expect(Berkshelf.log).to eq(Berkshelf::Logger)
32
+ expect(Berkshelf.log).to be_a(Berkshelf::Logger)
36
33
  end
37
34
  end
38
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: berkshelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta7
4
+ version: 3.0.0.beta8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Winsor
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-02-21 00:00:00.000000000 Z
15
+ date: 2014-04-03 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: addressable
@@ -34,14 +34,14 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '1.1'
37
+ version: 1.2.0.rc2
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: '1.1'
44
+ version: 1.2.0.rc2
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: buff-config
47
47
  requirement: !ruby/object:Gem::Requirement
@@ -90,14 +90,14 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 0.8.5
93
+ version: 0.9.0
94
94
  type: :runtime
95
95
  prerelease: false
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  requirements:
98
98
  - - ~>
99
99
  - !ruby/object:Gem::Version
100
- version: 0.8.5
100
+ version: 0.9.0
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: minitar
103
103
  requirement: !ruby/object:Gem::Requirement
@@ -132,14 +132,14 @@ dependencies:
132
132
  requirements:
133
133
  - - ~>
134
134
  - !ruby/object:Gem::Version
135
- version: '2.3'
135
+ version: 3.0.0.rc1
136
136
  type: :runtime
137
137
  prerelease: false
138
138
  version_requirements: !ruby/object:Gem::Requirement
139
139
  requirements:
140
140
  - - ~>
141
141
  - !ruby/object:Gem::Version
142
- version: '2.3'
142
+ version: 3.0.0.rc1
143
143
  - !ruby/object:Gem::Dependency
144
144
  name: solve
145
145
  requirement: !ruby/object:Gem::Requirement
@@ -321,7 +321,6 @@ extensions: []
321
321
  extra_rdoc_files: []
322
322
  files:
323
323
  - .gitignore
324
- - .ruby-version
325
324
  - .travis.yml
326
325
  - CHANGELOG.md
327
326
  - CONTRIBUTING.md
@@ -331,7 +330,6 @@ files:
331
330
  - PLUGINS.md
332
331
  - README.md
333
332
  - Thorfile
334
- - berkshelf-complete.sh
335
333
  - berkshelf.gemspec
336
334
  - bin/berks
337
335
  - features/berksfile.feature
@@ -343,6 +341,7 @@ files:
343
341
  - features/commands/list.feature
344
342
  - features/commands/outdated.feature
345
343
  - features/commands/package.feature
344
+ - features/commands/search.feature
346
345
  - features/commands/shelf/list.feature
347
346
  - features/commands/shelf/show.feature
348
347
  - features/commands/shelf/uninstall.feature
@@ -354,6 +353,7 @@ files:
354
353
  - features/config.feature
355
354
  - features/help.feature
356
355
  - features/json_formatter.feature
356
+ - features/lifecycle.feature
357
357
  - features/lockfile.feature
358
358
  - features/resolver.feature
359
359
  - features/step_definitions/berksfile_steps.rb
@@ -368,6 +368,7 @@ files:
368
368
  - features/step_definitions/utility_steps.rb
369
369
  - features/support/aruba.rb
370
370
  - features/support/env.rb
371
+ - gem_graph.png
371
372
  - generator_files/Berksfile.erb
372
373
  - generator_files/CHANGELOG.md.erb
373
374
  - generator_files/Gemfile.erb
@@ -404,22 +405,19 @@ files:
404
405
  - lib/berkshelf/dependency.rb
405
406
  - lib/berkshelf/downloader.rb
406
407
  - lib/berkshelf/errors.rb
407
- - lib/berkshelf/formatters.rb
408
- - lib/berkshelf/formatters/human_readable.rb
408
+ - lib/berkshelf/formatters/base.rb
409
+ - lib/berkshelf/formatters/human.rb
409
410
  - lib/berkshelf/formatters/json.rb
410
411
  - lib/berkshelf/formatters/null.rb
411
- - lib/berkshelf/git.rb
412
412
  - lib/berkshelf/init_generator.rb
413
413
  - lib/berkshelf/installer.rb
414
414
  - lib/berkshelf/location.rb
415
- - lib/berkshelf/locations/git_location.rb
416
- - lib/berkshelf/locations/github_location.rb
417
- - lib/berkshelf/locations/mercurial_location.rb
418
- - lib/berkshelf/locations/path_location.rb
415
+ - lib/berkshelf/locations/base.rb
416
+ - lib/berkshelf/locations/git.rb
417
+ - lib/berkshelf/locations/github.rb
418
+ - lib/berkshelf/locations/path.rb
419
419
  - lib/berkshelf/lockfile.rb
420
420
  - lib/berkshelf/logger.rb
421
- - lib/berkshelf/mercurial.rb
422
- - lib/berkshelf/mixin.rb
423
421
  - lib/berkshelf/mixin/dsl_eval.rb
424
422
  - lib/berkshelf/mixin/logging.rb
425
423
  - lib/berkshelf/packager.rb
@@ -458,8 +456,8 @@ files:
458
456
  - spec/support/kitchen.rb
459
457
  - spec/support/matchers/file_system_matchers.rb
460
458
  - spec/support/matchers/filepath_matchers.rb
461
- - spec/support/mercurial.rb
462
459
  - spec/support/path_helpers.rb
460
+ - spec/support/shared_examples/formatter.rb
463
461
  - spec/unit/berkshelf/berksfile_spec.rb
464
462
  - spec/unit/berkshelf/cached_cookbook_spec.rb
465
463
  - spec/unit/berkshelf/cli_spec.rb
@@ -472,19 +470,19 @@ files:
472
470
  - spec/unit/berkshelf/dependency_spec.rb
473
471
  - spec/unit/berkshelf/downloader_spec.rb
474
472
  - spec/unit/berkshelf/errors_spec.rb
473
+ - spec/unit/berkshelf/formatters/base_spec.rb
474
+ - spec/unit/berkshelf/formatters/human_spec.rb
475
+ - spec/unit/berkshelf/formatters/json_spec.rb
475
476
  - spec/unit/berkshelf/formatters/null_spec.rb
476
- - spec/unit/berkshelf/formatters_spec.rb
477
- - spec/unit/berkshelf/git_spec.rb
478
477
  - spec/unit/berkshelf/init_generator_spec.rb
479
478
  - spec/unit/berkshelf/installer_spec.rb
480
479
  - spec/unit/berkshelf/location_spec.rb
481
- - spec/unit/berkshelf/locations/git_location_spec.rb
482
- - spec/unit/berkshelf/locations/mercurial_location_spec.rb
483
- - spec/unit/berkshelf/locations/path_location_spec.rb
480
+ - spec/unit/berkshelf/locations/base_spec.rb
481
+ - spec/unit/berkshelf/locations/git_spec.rb
482
+ - spec/unit/berkshelf/locations/path_spec.rb
484
483
  - spec/unit/berkshelf/lockfile_parser_spec.rb
485
484
  - spec/unit/berkshelf/lockfile_spec.rb
486
485
  - spec/unit/berkshelf/logger_spec.rb
487
- - spec/unit/berkshelf/mercurial_spec.rb
488
486
  - spec/unit/berkshelf/mixin/dsl_eval_spec.rb
489
487
  - spec/unit/berkshelf/mixin/logging_spec.rb
490
488
  - spec/unit/berkshelf/packager_spec.rb
@@ -528,6 +526,7 @@ test_files:
528
526
  - features/commands/list.feature
529
527
  - features/commands/outdated.feature
530
528
  - features/commands/package.feature
529
+ - features/commands/search.feature
531
530
  - features/commands/shelf/list.feature
532
531
  - features/commands/shelf/show.feature
533
532
  - features/commands/shelf/uninstall.feature
@@ -539,6 +538,7 @@ test_files:
539
538
  - features/config.feature
540
539
  - features/help.feature
541
540
  - features/json_formatter.feature
541
+ - features/lifecycle.feature
542
542
  - features/lockfile.feature
543
543
  - features/resolver.feature
544
544
  - features/step_definitions/berksfile_steps.rb
@@ -578,8 +578,8 @@ test_files:
578
578
  - spec/support/kitchen.rb
579
579
  - spec/support/matchers/file_system_matchers.rb
580
580
  - spec/support/matchers/filepath_matchers.rb
581
- - spec/support/mercurial.rb
582
581
  - spec/support/path_helpers.rb
582
+ - spec/support/shared_examples/formatter.rb
583
583
  - spec/unit/berkshelf/berksfile_spec.rb
584
584
  - spec/unit/berkshelf/cached_cookbook_spec.rb
585
585
  - spec/unit/berkshelf/cli_spec.rb
@@ -592,19 +592,19 @@ test_files:
592
592
  - spec/unit/berkshelf/dependency_spec.rb
593
593
  - spec/unit/berkshelf/downloader_spec.rb
594
594
  - spec/unit/berkshelf/errors_spec.rb
595
+ - spec/unit/berkshelf/formatters/base_spec.rb
596
+ - spec/unit/berkshelf/formatters/human_spec.rb
597
+ - spec/unit/berkshelf/formatters/json_spec.rb
595
598
  - spec/unit/berkshelf/formatters/null_spec.rb
596
- - spec/unit/berkshelf/formatters_spec.rb
597
- - spec/unit/berkshelf/git_spec.rb
598
599
  - spec/unit/berkshelf/init_generator_spec.rb
599
600
  - spec/unit/berkshelf/installer_spec.rb
600
601
  - spec/unit/berkshelf/location_spec.rb
601
- - spec/unit/berkshelf/locations/git_location_spec.rb
602
- - spec/unit/berkshelf/locations/mercurial_location_spec.rb
603
- - spec/unit/berkshelf/locations/path_location_spec.rb
602
+ - spec/unit/berkshelf/locations/base_spec.rb
603
+ - spec/unit/berkshelf/locations/git_spec.rb
604
+ - spec/unit/berkshelf/locations/path_spec.rb
604
605
  - spec/unit/berkshelf/lockfile_parser_spec.rb
605
606
  - spec/unit/berkshelf/lockfile_spec.rb
606
607
  - spec/unit/berkshelf/logger_spec.rb
607
- - spec/unit/berkshelf/mercurial_spec.rb
608
608
  - spec/unit/berkshelf/mixin/dsl_eval_spec.rb
609
609
  - spec/unit/berkshelf/mixin/logging_spec.rb
610
610
  - spec/unit/berkshelf/packager_spec.rb