berkshelf 6.0.1 → 6.1.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +8 -3
  3. data/Gemfile +1 -28
  4. data/Gemfile.lock +27 -94
  5. data/Rakefile +10 -0
  6. data/appveyor.yml +2 -2
  7. data/berkshelf.gemspec +2 -1
  8. data/features/commands/install.feature +21 -0
  9. data/features/step_definitions/berksfile_steps.rb +1 -1
  10. data/features/step_definitions/environment_steps.rb +1 -1
  11. data/features/step_definitions/json_steps.rb +2 -2
  12. data/features/support/env.rb +0 -2
  13. data/lib/berkshelf/berksfile.rb +1 -1
  14. data/lib/berkshelf/chef_repo_universe.rb +45 -0
  15. data/lib/berkshelf/cli.rb +1 -2
  16. data/lib/berkshelf/community_rest.rb +6 -37
  17. data/lib/berkshelf/config.rb +3 -0
  18. data/lib/berkshelf/downloader.rb +2 -2
  19. data/lib/berkshelf/formatters/human.rb +3 -1
  20. data/lib/berkshelf/installer.rb +14 -6
  21. data/lib/berkshelf/locations/git.rb +0 -2
  22. data/lib/berkshelf/mixin/git.rb +4 -3
  23. data/lib/berkshelf/shell_out.rb +17 -0
  24. data/lib/berkshelf/source.rb +30 -17
  25. data/lib/berkshelf/source_uri.rb +1 -1
  26. data/lib/berkshelf/ssl_policies.rb +1 -1
  27. data/lib/berkshelf/streaming_file_adapter.rb +22 -0
  28. data/lib/berkshelf/version.rb +1 -1
  29. data/lib/berkshelf/visualizer.rb +3 -3
  30. data/spec/fixtures/complex-cookbook-path/cookbooks/app/metadata.rb +2 -0
  31. data/spec/fixtures/complex-cookbook-path/cookbooks/jenkins-config/metadata.rb +4 -0
  32. data/spec/fixtures/complex-cookbook-path/cookbooks/jenkins/metadata.rb +2 -0
  33. data/spec/support/git.rb +18 -17
  34. data/spec/support/kitchen.rb +0 -14
  35. data/spec/unit/berkshelf/chef_repo_universe_spec.rb +37 -0
  36. data/spec/unit/berkshelf/config_spec.rb +46 -0
  37. data/spec/unit/berkshelf/cookbook_generator_spec.rb +0 -8
  38. data/spec/unit/berkshelf/downloader_spec.rb +12 -9
  39. data/spec/unit/berkshelf/init_generator_spec.rb +0 -1
  40. data/spec/unit/berkshelf/locations/git_spec.rb +2 -2
  41. data/spec/unit/berkshelf/resolver/graph_spec.rb +3 -2
  42. data/spec/unit/berkshelf/source_spec.rb +55 -44
  43. data/spec/unit/berkshelf/ssl_policies_spec.rb +3 -2
  44. data/spec/unit/berkshelf/uploader_spec.rb +1 -0
  45. data/spec/unit/berkshelf/visualizer_spec.rb +1 -1
  46. metadata +30 -7
  47. data/Guardfile +0 -18
  48. data/lib/berkshelf/commands/test_command.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d617756f57bd00473621c9bf8f95912ff28b264e
4
- data.tar.gz: a2f9697345df907bc82be9953a1f16ffa7cd3bef
3
+ metadata.gz: cb46a7f69b8ffe285a82a5d5c2f3c50a8c0675fe
4
+ data.tar.gz: cdffca6593306424fcc6b610ec9461432aecfd30
5
5
  SHA512:
6
- metadata.gz: 7aebefd6e55c3560d177d3416c04feb0aaeb81612508461d9c46c796deb535bf8ddc0f3aec35762dc1a5c1752987a79c4e69fb76d4dd86dc9bae9263741e0c8d
7
- data.tar.gz: 9a5e5bdd6350206ca16bbba643fc328399ae1104a2b476edbc4fadfda2176cd5ff3a366e8b443a28dcd22b9d632ba7f208da08435c7f0b72b1c1d2ed3e61e7a0
6
+ metadata.gz: 861440210543c39944ddb44aaab1aa47ca3fa3cdf4de430d66b5e15945ecc08aef4a151b08a444bf1ed94752f6383b4cf8e7775b1110d2d18bef327a78f1c540
7
+ data.tar.gz: 96d9786d0c9c023954200ee7a3cc4b13febb96bf261f270bde5e4801e90af1befcd853cedc3d2e58543f45c982b13cb3610dff0a7bda8593e1a46f6a8cded031
@@ -27,11 +27,10 @@ notifications:
27
27
  branches:
28
28
  only:
29
29
  - master
30
- #bundler_args: --without guard changelog --jobs 7
31
30
  before_install:
32
31
  - gem update --system
33
32
  - gem install bundler
34
- install: travis_wait bundle install --without guard changelog --jobs 7 --retry=3
33
+ install: travis_wait bundle install --without changelog --jobs 7 --retry=3
35
34
  before_script:
36
35
  - echo "StrictHostKeyChecking no" > ~/.ssh/config
37
36
  - git config --global user.email "ci@berkshelf.com"
@@ -43,7 +42,13 @@ matrix:
43
42
  - rvm: ruby-head
44
43
  - rvm: 2.4.1
45
44
  before_install:
46
- rm Gemfile.lock
45
+ - gem update --system
46
+ - gem install bundler
47
+ - rm Gemfile.lock
48
+ - rvm: 2.3.3
49
+ env:
50
+ CHEFSTYLE: 1
51
+ script: bundle exec rake style
47
52
  - rvm: 2.4.1
48
53
  before_install:
49
54
  # Failures in the berkshelf-api gemspec were happening with bundler 1.8
data/Gemfile CHANGED
@@ -6,33 +6,6 @@ group :changelog do
6
6
  gem "github_changelog_generator"
7
7
  end
8
8
 
9
- group :guard do
10
- gem "coolline"
11
- gem "guard"
12
- gem "guard-cucumber"
13
- gem "guard-rspec"
14
-
15
- require "rbconfig"
16
-
17
- install_if -> { RbConfig::CONFIG["target_os"] =~ /darwin/i } do
18
- gem "growl", require: false
19
- gem "rb-fsevent", require: false
20
-
21
- install_if -> { `uname`.strip == "Darwin" && `sw_vers -productVersion`.strip >= "10.8" } do
22
- gem "terminal-notifier-guard", "~> 1.5.3", require: false
23
- end rescue Errno::ENOENT
24
- end
25
- install_if -> {RbConfig::CONFIG["target_os"] =~ /linux/i } do
26
- gem "libnotify", "~> 0.8.0", require: false
27
- gem "rb-inotify", require: false
28
- end
29
- install_if -> { RbConfig::CONFIG["target_os"] =~ /mswin|mingw/i } do
30
- gem "rb-notifu", ">= 0.0.4", require: false
31
- gem "wdm", require: false
32
- gem "win32console", require: false
33
- end
34
- end
35
-
36
9
  group :build do
37
10
  gem "rake", ">= 10.1"
38
11
  end
@@ -46,11 +19,11 @@ group :development do
46
19
  gem "fuubar", ">= 2.0"
47
20
  gem "rspec", ">= 3.0"
48
21
  gem "rspec-its", ">= 1.2"
49
- gem "test-kitchen", ">= 1.2"
50
22
  gem "webmock", ">= 1.11"
51
23
  gem "yard", ">= 0.8"
52
24
  gem "http", ">= 0.9.8"
53
25
  gem "activesupport", "~> 4.0" # pinning for ruby 2.1.x
26
+ gem "chefstyle"
54
27
  end
55
28
 
56
29
  group :test do
@@ -20,17 +20,18 @@ GIT
20
20
  PATH
21
21
  remote: .
22
22
  specs:
23
- berkshelf (6.0.1)
23
+ berkshelf (6.1.0)
24
24
  addressable (~> 2.3, >= 2.3.4)
25
25
  berkshelf-api-client (>= 2.0.2, < 4.0)
26
26
  buff-config (~> 2.0)
27
27
  buff-extensions (~> 2.0)
28
- buff-shell_out (~> 1.0)
29
28
  cleanroom (~> 1.0)
29
+ concurrent-ruby (~> 1.0)
30
30
  faraday (~> 0.9)
31
31
  httpclient (~> 2.7)
32
32
  minitar (~> 0.5, >= 0.5.4)
33
33
  mixlib-archive (~> 0.4)
34
+ mixlib-shellout (~> 2.0)
34
35
  octokit (~> 4.0)
35
36
  retryable (~> 2.0)
36
37
  ridley (~> 5.0)
@@ -49,7 +50,6 @@ GEM
49
50
  public_suffix (~> 2.0, >= 2.0.2)
50
51
  archive (0.0.6)
51
52
  ffi (~> 1.9.3)
52
- artifactory (2.8.1)
53
53
  aruba (0.14.2)
54
54
  childprocess (~> 0.5.6)
55
55
  contracts (~> 0.9)
@@ -57,6 +57,7 @@ GEM
57
57
  ffi (~> 1.9.10)
58
58
  rspec-expectations (>= 2.99)
59
59
  thor (~> 0.19)
60
+ ast (2.3.0)
60
61
  axiom-types (0.1.1)
61
62
  descendants_tracker (~> 0.0.4)
62
63
  ice_nine (~> 0.11.0)
@@ -79,7 +80,7 @@ GEM
79
80
  celluloid-io (0.16.2)
80
81
  celluloid (>= 0.16.0)
81
82
  nio4r (>= 1.1.0)
82
- chef-config (13.0.118)
83
+ chef-config (13.1.31)
83
84
  addressable
84
85
  fuzzyurl
85
86
  mixlib-config (~> 2.0)
@@ -90,15 +91,15 @@ GEM
90
91
  mixlib-log (~> 1.3)
91
92
  rack (~> 2.0)
92
93
  uuidtools (~> 2.1)
94
+ chefstyle (0.5.0)
95
+ rubocop (= 0.47.1)
93
96
  childprocess (0.5.9)
94
97
  ffi (~> 1.0, >= 1.0.11)
95
98
  cleanroom (1.0.0)
96
- coderay (1.1.1)
97
99
  coercible (1.0.0)
98
100
  descendants_tracker (~> 0.0.1)
101
+ concurrent-ruby (1.0.5)
99
102
  contracts (0.16.0)
100
- coolline (0.5.0)
101
- unicode_utils (~> 1.4)
102
103
  crack (0.4.3)
103
104
  safe_yaml (~> 1.0.0)
104
105
  cucumber (2.4.0)
@@ -123,14 +124,13 @@ GEM
123
124
  unf (>= 0.0.5, < 1.0.0)
124
125
  equalizer (0.0.11)
125
126
  erubis (2.7.0)
126
- faraday (0.9.2)
127
+ faraday (0.12.1)
127
128
  multipart-post (>= 1.2, < 3)
128
129
  faraday-http-cache (2.0.0)
129
130
  faraday (~> 0.8)
130
131
  ffi (1.9.18)
131
132
  ffi-yajl (2.3.0)
132
133
  libyajl2 (~> 1.2)
133
- formatador (0.2.5)
134
134
  fuubar (2.2.0)
135
135
  rspec-core (~> 3.0)
136
136
  ruby-progressbar (~> 1.4)
@@ -157,28 +157,9 @@ GEM
157
157
  grape-msgpack (0.2.0)
158
158
  grape (>= 0.16.1)
159
159
  msgpack (>= 0.7.4)
160
- growl (1.0.3)
161
- guard (2.14.1)
162
- formatador (>= 0.2.4)
163
- listen (>= 2.7, < 4.0)
164
- lumberjack (~> 1.0)
165
- nenv (~> 0.1)
166
- notiffany (~> 0.0)
167
- pry (>= 0.9.12)
168
- shellany (~> 0.0)
169
- thor (>= 0.18.1)
170
- guard-compat (1.2.1)
171
- guard-cucumber (2.1.2)
172
- cucumber (~> 2.0)
173
- guard-compat (~> 1.0)
174
- nenv (~> 0.1)
175
- guard-rspec (4.7.3)
176
- guard (~> 2.1)
177
- guard-compat (~> 1.1)
178
- rspec (>= 2.99.0, < 4.0)
179
160
  hashdiff (0.3.4)
180
161
  hashie (3.5.5)
181
- hitimes (1.2.4)
162
+ hitimes (1.2.5)
182
163
  http (2.2.2)
183
164
  addressable (~> 2.3)
184
165
  http-cookie (~> 1.0)
@@ -186,21 +167,13 @@ GEM
186
167
  http_parser.rb (~> 0.6.0)
187
168
  http-cookie (1.0.3)
188
169
  domain_name (~> 0.5)
189
- http-form_data (1.0.2)
170
+ http-form_data (1.0.3)
190
171
  http_parser.rb (0.6.0)
191
172
  httpclient (2.8.3)
192
- i18n (0.8.1)
173
+ i18n (0.8.4)
193
174
  ice_nine (0.11.2)
194
175
  json (2.1.0)
195
- libnotify (0.8.4)
196
- ffi (>= 1.0.11)
197
176
  libyajl2 (1.2.0)
198
- listen (3.1.5)
199
- rb-fsevent (~> 0.9, >= 0.9.4)
200
- rb-inotify (~> 0.9, >= 0.9.7)
201
- ruby_dep (~> 1.2)
202
- lumberjack (1.0.12)
203
- method_source (0.8.2)
204
177
  minitar (0.6.1)
205
178
  minitest (5.10.2)
206
179
  mixlib-archive (0.4.1)
@@ -208,14 +181,8 @@ GEM
208
181
  mixlib-authentication (1.4.1)
209
182
  mixlib-log
210
183
  mixlib-config (2.2.4)
211
- mixlib-install (2.1.12)
212
- artifactory
213
- mixlib-shellout
214
- mixlib-versioning
215
- thor
216
184
  mixlib-log (1.7.1)
217
185
  mixlib-shellout (2.2.7)
218
- mixlib-versioning (1.1.0)
219
186
  molinillo (0.5.7)
220
187
  msgpack (1.1.0)
221
188
  multi_json (1.12.1)
@@ -225,22 +192,12 @@ GEM
225
192
  mustermann (1.0.0)
226
193
  mustermann-grape (1.0.0)
227
194
  mustermann (~> 1.0.0)
228
- nenv (0.3.0)
229
- net-scp (1.2.1)
230
- net-ssh (>= 2.6.5)
231
- net-ssh (4.1.0)
232
- net-ssh-gateway (1.3.0)
233
- net-ssh (>= 2.6.5)
234
- nio4r (2.0.0)
235
- notiffany (0.1.1)
236
- nenv (~> 0.1)
237
- shellany (~> 0.0)
195
+ nio4r (2.1.0)
238
196
  octokit (4.7.0)
239
197
  sawyer (~> 0.8.0, >= 0.5.3)
240
- pry (0.10.4)
241
- coderay (~> 1.1.0)
242
- method_source (~> 0.8.1)
243
- slop (~> 3.4)
198
+ parser (2.4.0.0)
199
+ ast (~> 2.2)
200
+ powerpack (0.1.1)
244
201
  public_suffix (2.0.5)
245
202
  rack (2.0.3)
246
203
  rack-accept (0.4.5)
@@ -248,10 +205,6 @@ GEM
248
205
  rainbow (2.2.2)
249
206
  rake
250
207
  rake (12.0.0)
251
- rb-fsevent (0.9.8)
252
- rb-inotify (0.9.8)
253
- ffi (>= 0.5.0)
254
- rb-notifu (0.0.4)
255
208
  reel (0.6.1)
256
209
  celluloid (>= 0.15.1)
257
210
  celluloid-io (>= 0.15.0)
@@ -260,7 +213,7 @@ GEM
260
213
  websocket-driver (>= 0.5.1)
261
214
  retriable (2.1.0)
262
215
  retryable (2.0.4)
263
- ridley (5.1.0)
216
+ ridley (5.1.1)
264
217
  addressable
265
218
  buff-config (~> 2.0)
266
219
  buff-extensions (~> 2.0)
@@ -270,7 +223,7 @@ GEM
270
223
  celluloid-io (~> 0.16.1)
271
224
  chef-config (>= 12.5.0)
272
225
  erubis
273
- faraday (~> 0.9.0)
226
+ faraday (~> 0.9)
274
227
  hashie (>= 2.0.2, < 4.0.0)
275
228
  httpclient (~> 2.7)
276
229
  json (>= 1.7.7)
@@ -294,27 +247,21 @@ GEM
294
247
  diff-lcs (>= 1.2.0, < 2.0)
295
248
  rspec-support (~> 3.6.0)
296
249
  rspec-support (3.6.0)
250
+ rubocop (0.47.1)
251
+ parser (>= 2.3.3.1, < 3.0)
252
+ powerpack (~> 0.1)
253
+ rainbow (>= 1.99.1, < 3.0)
254
+ ruby-progressbar (~> 1.7)
255
+ unicode-display_width (~> 1.0, >= 1.0.1)
297
256
  ruby-progressbar (1.8.1)
298
- ruby_dep (1.5.0)
299
257
  safe_yaml (1.0.4)
300
258
  sawyer (0.8.1)
301
259
  addressable (>= 2.3.5, < 2.6)
302
260
  faraday (~> 0.8, < 1.0)
303
261
  semverse (2.0.0)
304
- shellany (0.0.1)
305
- slop (3.6.0)
306
262
  solve (3.1.0)
307
263
  molinillo (>= 0.5)
308
264
  semverse (>= 1.1, < 3.0)
309
- terminal-notifier-guard (1.5.3)
310
- test-kitchen (1.16.0)
311
- mixlib-install (>= 1.2, < 3.0)
312
- mixlib-shellout (>= 1.2, < 3.0)
313
- net-scp (~> 1.1)
314
- net-ssh (>= 2.9, < 5.0)
315
- net-ssh-gateway (~> 1.2)
316
- safe_yaml (~> 1.0)
317
- thor (~> 0.19, < 0.19.2)
318
265
  thor (0.19.1)
319
266
  thread_safe (0.3.6)
320
267
  timers (4.0.4)
@@ -324,7 +271,7 @@ GEM
324
271
  unf (0.1.4)
325
272
  unf_ext
326
273
  unf_ext (0.0.7.4)
327
- unicode_utils (1.4.0)
274
+ unicode-display_width (1.2.1)
328
275
  uuidtools (2.1.5)
329
276
  varia_model (0.6.0)
330
277
  buff-extensions (~> 2.0)
@@ -334,7 +281,6 @@ GEM
334
281
  coercible (~> 1.0)
335
282
  descendants_tracker (~> 0.0, >= 0.0.3)
336
283
  equalizer (~> 0.0, >= 0.0.9)
337
- wdm (0.1.1)
338
284
  webmock (3.0.1)
339
285
  addressable (>= 2.3.6)
340
286
  crack (>= 0.3.2)
@@ -342,7 +288,6 @@ GEM
342
288
  websocket-driver (0.6.5)
343
289
  websocket-extensions (>= 0.1.0)
344
290
  websocket-extensions (0.1.2)
345
- win32console (1.3.2)
346
291
  yard (0.9.9)
347
292
 
348
293
  PLATFORMS
@@ -354,28 +299,16 @@ DEPENDENCIES
354
299
  berkshelf!
355
300
  berkshelf-api!
356
301
  chef-zero (>= 4.0)
357
- coolline
302
+ chefstyle
358
303
  dep_selector (>= 1.0)
359
304
  fuubar (>= 2.0)
360
305
  github_changelog_generator
361
- growl
362
- guard
363
- guard-cucumber
364
- guard-rspec
365
306
  http (>= 0.9.8)
366
- libnotify (~> 0.8.0)
367
307
  rake (>= 10.1)
368
- rb-fsevent
369
- rb-inotify
370
- rb-notifu (>= 0.0.4)
371
308
  rspec (>= 3.0)
372
309
  rspec-its (>= 1.2)
373
- terminal-notifier-guard (~> 1.5.3)
374
- test-kitchen (>= 1.2)
375
- wdm
376
310
  webmock (>= 1.11)
377
- win32console
378
311
  yard (>= 0.8)
379
312
 
380
313
  BUNDLED WITH
381
- 1.14.6
314
+ 1.15.0
data/Rakefile CHANGED
@@ -41,3 +41,13 @@ task :ci do
41
41
  Rake::Task[:spec].invoke
42
42
  Rake::Task[:features].invoke
43
43
  end
44
+
45
+ begin
46
+ require "chefstyle"
47
+ require "rubocop/rake_task"
48
+ RuboCop::RakeTask.new(:style) do |task|
49
+ task.options += ["--display-cop-names", "--no-color"]
50
+ end
51
+ rescue LoadError
52
+ puts "chefstyle/rubocop is not available. gem install chefstyle to do style checking."
53
+ end
@@ -16,10 +16,10 @@ branches:
16
16
  # - vendor/bundle
17
17
 
18
18
  install:
19
- - ps: iex (irm https://omnitruck.chef.io/install.ps1); Install-Project -Project chefdk -channel current
19
+ - ps: iex (irm https://omnitruck.chef.io/install.ps1); Install-Project -Project chefdk -channel stable
20
20
  - bundle config --local path vendor/bundle
21
21
  - SET CI=true
22
- - SET BUNDLE_WITHOUT=guard:changelog:style
22
+ - SET BUNDLE_WITHOUT=changelog:style
23
23
 
24
24
  build_script:
25
25
  - ps: c:\opscode\chefdk\bin\chef.bat shell-init powershell | iex
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  s.add_dependency "berkshelf-api-client", ">= 2.0.2", "< 4.0"
35
35
  s.add_dependency "buff-config", "~> 2.0"
36
36
  s.add_dependency "buff-extensions", "~> 2.0"
37
- s.add_dependency "buff-shell_out", "~> 1.0"
37
+ s.add_dependency "mixlib-shellout", "~> 2.0"
38
38
  s.add_dependency "cleanroom", "~> 1.0"
39
39
  s.add_dependency "faraday", "~> 0.9"
40
40
  s.add_dependency "httpclient", "~> 2.7"
@@ -45,4 +45,5 @@ Gem::Specification.new do |s|
45
45
  s.add_dependency "thor", "~> 0.19", "< 0.19.2"
46
46
  s.add_dependency "octokit", "~> 4.0"
47
47
  s.add_dependency "mixlib-archive", "~> 0.4"
48
+ s.add_dependency "concurrent-ruby", "~> 1.0"
48
49
  end
@@ -634,3 +634,24 @@ Feature: berks install
634
634
  """
635
635
  Resolving cookbook dependencies...
636
636
  """
637
+
638
+ Scenario: when using a chef_repo source
639
+ Given I use a fixture named "complex-cookbook-path"
640
+ And a file named "Berksfile" with:
641
+ """
642
+ source chef_repo: '.'
643
+
644
+ cookbook 'jenkins-config'
645
+ """
646
+ When I successfully run `berks install`
647
+ Then the output should contain:
648
+ """
649
+ Installing jenkins (2.0.1) from
650
+ """
651
+ And the output should contain:
652
+ """
653
+ Installing jenkins-config (0.1.0) from
654
+ """
655
+ And the cookbook store should have the cookbooks:
656
+ | jenkins | 2.0.1 |
657
+ | jenkins-config | 0.1.0 |
@@ -39,7 +39,7 @@ Given /^I have a Berksfile at "(.+)" pointing at the local Berkshelf API with:$/
39
39
  end
40
40
 
41
41
  Given /I have a Berksfile pointing at an( authenticated)? Artifactory server with:/ do |authenticated, content|
42
- if ENV['TEST_BERKSHELF_ARTIFACTORY']
42
+ if ENV["TEST_BERKSHELF_ARTIFACTORY"]
43
43
  steps %Q{
44
44
  Given a file named "Berksfile" with:
45
45
  """