berkshelf 3.0.0.beta1 → 3.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -1
  3. data/CONTRIBUTING.md +2 -0
  4. data/LICENSE +1 -1
  5. data/README.md +1 -1
  6. data/Thorfile +2 -2
  7. data/berkshelf.gemspec +3 -3
  8. data/features/install_command.feature +36 -8
  9. data/features/json_formatter.feature +93 -3
  10. data/features/licenses.feature +1 -1
  11. data/features/lockfile.feature +0 -12
  12. data/features/outdated_command.feature +124 -0
  13. data/features/show_command.feature +44 -25
  14. data/features/step_definitions/chef/config_steps.rb +2 -2
  15. data/features/step_definitions/chef_server_steps.rb +9 -1
  16. data/features/step_definitions/config_steps.rb +1 -1
  17. data/features/step_definitions/filesystem_steps.rb +7 -0
  18. data/features/support/env.rb +2 -1
  19. data/features/update_command.feature +11 -21
  20. data/features/upload_command.feature +45 -1
  21. data/features/vendor_command.feature +83 -0
  22. data/lib/berkshelf.rb +5 -4
  23. data/lib/berkshelf/api_client/remote_cookbook.rb +13 -0
  24. data/lib/berkshelf/berksfile.rb +155 -23
  25. data/lib/berkshelf/chef.rb +0 -1
  26. data/lib/berkshelf/cli.rb +40 -31
  27. data/lib/berkshelf/dependency.rb +14 -4
  28. data/lib/berkshelf/errors.rb +74 -3
  29. data/lib/berkshelf/formatters.rb +12 -1
  30. data/lib/berkshelf/formatters/human_readable.rb +44 -5
  31. data/lib/berkshelf/formatters/json.rb +50 -8
  32. data/lib/berkshelf/installer.rb +8 -8
  33. data/lib/berkshelf/location.rb +17 -0
  34. data/lib/berkshelf/locations/git_location.rb +7 -17
  35. data/lib/berkshelf/locations/mercurial_location.rb +112 -0
  36. data/lib/berkshelf/lockfile.rb +1 -1
  37. data/lib/berkshelf/mercurial.rb +146 -0
  38. data/lib/berkshelf/version.rb +1 -1
  39. data/spec/config/knife.rb +2 -4
  40. data/spec/fixtures/lockfiles/default.lock +0 -1
  41. data/spec/support/chef_api.rb +9 -2
  42. data/spec/support/mercurial.rb +122 -0
  43. data/spec/support/path_helpers.rb +2 -2
  44. data/spec/unit/berkshelf/berksfile_spec.rb +34 -8
  45. data/spec/unit/berkshelf/dependency_spec.rb +0 -7
  46. data/spec/unit/berkshelf/formatters/null_spec.rb +1 -1
  47. data/spec/unit/berkshelf/locations/mercurial_location_spec.rb +150 -0
  48. data/spec/unit/berkshelf/lockfile_spec.rb +0 -12
  49. data/spec/unit/berkshelf/mercurial_spec.rb +173 -0
  50. metadata +32 -110
  51. data/lib/berkshelf/chef/config.rb +0 -68
  52. data/lib/berkshelf/mixin/config.rb +0 -172
  53. data/spec/fixtures/cookbooks/example_metadata_name/metadata.rb +0 -2
  54. data/spec/fixtures/cookbooks/example_metadata_no_name/metadata.rb +0 -1
  55. data/spec/fixtures/cookbooks/example_no_metadata/recipes/default.rb +0 -1
  56. data/spec/fixtures/cookbooks/nginx-0.100.5/README.md +0 -77
  57. data/spec/fixtures/cookbooks/nginx-0.100.5/attributes/default.rb +0 -65
  58. data/spec/fixtures/cookbooks/nginx-0.100.5/definitions/nginx_site.rb +0 -35
  59. data/spec/fixtures/cookbooks/nginx-0.100.5/files/default/mime.types +0 -73
  60. data/spec/fixtures/cookbooks/nginx-0.100.5/files/ubuntu/mime.types +0 -73
  61. data/spec/fixtures/cookbooks/nginx-0.100.5/libraries/nginxlib.rb +0 -1
  62. data/spec/fixtures/cookbooks/nginx-0.100.5/metadata.rb +0 -91
  63. data/spec/fixtures/cookbooks/nginx-0.100.5/providers/defprovider.rb +0 -1
  64. data/spec/fixtures/cookbooks/nginx-0.100.5/recipes/default.rb +0 -59
  65. data/spec/fixtures/cookbooks/nginx-0.100.5/resources/defresource.rb +0 -1
  66. data/spec/fixtures/cookbooks/nginx-0.100.5/templates/default/nginx.pill.erb +0 -15
  67. data/spec/fixtures/cookbooks/nginx-0.100.5/templates/default/plugins/nginx.rb.erb +0 -66
  68. data/spec/fixtures/lockfile_spec/with_lock/Berksfile +0 -1
  69. data/spec/fixtures/lockfile_spec/without_lock/.gitkeep +0 -0
  70. data/spec/fixtures/reset.pem +0 -27
  71. data/spec/unit/chef/config_spec.rb +0 -81
@@ -1,73 +0,0 @@
1
- types {
2
- text/html html htm shtml;
3
- text/css css;
4
- text/xml xml;
5
- image/gif gif;
6
- image/jpeg jpeg jpg;
7
- application/x-javascript js;
8
- application/json json;
9
- application/atom+xml atom;
10
- application/rss+xml rss;
11
-
12
- text/mathml mml;
13
- text/plain txt;
14
- text/vnd.sun.j2me.app-descriptor jad;
15
- text/vnd.wap.wml wml;
16
- text/x-component htc;
17
-
18
- image/png png;
19
- image/tiff tif tiff;
20
- image/vnd.wap.wbmp wbmp;
21
- image/x-icon ico;
22
- image/x-jng jng;
23
- image/x-ms-bmp bmp;
24
- image/svg+xml svg;
25
-
26
- application/java-archive jar war ear;
27
- application/mac-binhex40 hqx;
28
- application/msword doc;
29
- application/pdf pdf;
30
- application/postscript ps eps ai;
31
- application/rtf rtf;
32
- application/vnd.ms-excel xls;
33
- application/vnd.ms-powerpoint ppt;
34
- application/vnd.wap.wmlc wmlc;
35
- application/vnd.wap.xhtml+xml xhtml;
36
- application/vnd.google-earth.kml+xml kml;
37
- application/vnd.google-earth.kmz kmz;
38
- application/x-cocoa cco;
39
- application/x-java-archive-diff jardiff;
40
- application/x-java-jnlp-file jnlp;
41
- application/x-makeself run;
42
- application/x-perl pl pm;
43
- application/x-pilot prc pdb;
44
- application/x-rar-compressed rar;
45
- application/x-redhat-package-manager rpm;
46
- application/x-sea sea;
47
- application/x-shockwave-flash swf;
48
- application/x-stuffit sit;
49
- application/x-tcl tcl tk;
50
- application/x-x509-ca-cert der pem crt;
51
- application/x-xpinstall xpi;
52
- application/zip zip;
53
-
54
- application/octet-stream bin exe dll;
55
- application/octet-stream deb;
56
- application/octet-stream dmg;
57
- application/octet-stream eot;
58
- application/octet-stream iso img;
59
- application/octet-stream msi msp msm;
60
-
61
- audio/midi mid midi kar;
62
- audio/mpeg mp3;
63
- audio/x-realaudio ra;
64
-
65
- video/3gpp 3gpp 3gp;
66
- video/mpeg mpeg mpg;
67
- video/quicktime mov;
68
- video/x-flv flv;
69
- video/x-mng mng;
70
- video/x-ms-asf asx asf;
71
- video/x-ms-wmv wmv;
72
- video/x-msvideo avi;
73
- }
@@ -1,91 +0,0 @@
1
- maintainer "Opscode, Inc."
2
- maintainer_email "cookbooks@opscode.com"
3
- license "Apache 2.0"
4
- description "Installs and configures nginx"
5
- version "0.100.5"
6
-
7
- recipe "nginx", "Installs nginx package and sets up configuration with Debian apache style with sites-enabled/sites-available"
8
- recipe "nginx::source", "Installs nginx from source and sets up configuration with Debian apache style with sites-enabled/sites-available"
9
-
10
- %w{ ubuntu debian centos redhat fedora }.each do |os|
11
- supports os
12
- end
13
-
14
- %w{ build-essential runit bluepill }.each do |cb|
15
- depends cb
16
- end
17
-
18
- depends 'ohai', '~> 1.0.2'
19
-
20
- attribute "nginx/dir",
21
- :display_name => "Nginx Directory",
22
- :description => "Location of nginx configuration files",
23
- :default => "/etc/nginx"
24
-
25
- attribute "nginx/log_dir",
26
- :display_name => "Nginx Log Directory",
27
- :description => "Location for nginx logs",
28
- :default => "/var/log/nginx"
29
-
30
- attribute "nginx/user",
31
- :display_name => "Nginx User",
32
- :description => "User nginx will run as",
33
- :default => "www-data"
34
-
35
- attribute "nginx/binary",
36
- :display_name => "Nginx Binary",
37
- :description => "Location of the nginx server binary",
38
- :default => "/usr/sbin/nginx"
39
-
40
- attribute "nginx/gzip",
41
- :display_name => "Nginx Gzip",
42
- :description => "Whether gzip is enabled",
43
- :default => "on"
44
-
45
- attribute "nginx/gzip_http_version",
46
- :display_name => "Nginx Gzip HTTP Version",
47
- :description => "Version of HTTP Gzip",
48
- :default => "1.0"
49
-
50
- attribute "nginx/gzip_comp_level",
51
- :display_name => "Nginx Gzip Compression Level",
52
- :description => "Amount of compression to use",
53
- :default => "2"
54
-
55
- attribute "nginx/gzip_proxied",
56
- :display_name => "Nginx Gzip Proxied",
57
- :description => "Whether gzip is proxied",
58
- :default => "any"
59
-
60
- attribute "nginx/gzip_types",
61
- :display_name => "Nginx Gzip Types",
62
- :description => "Supported MIME-types for gzip",
63
- :type => "array",
64
- :default => [ "text/plain", "text/html", "text/css", "application/x-javascript", "text/xml", "application/xml", "application/xml+rss", "text/javascript" ]
65
-
66
- attribute "nginx/keepalive",
67
- :display_name => "Nginx Keepalive",
68
- :description => "Whether to enable keepalive",
69
- :default => "on"
70
-
71
- attribute "nginx/keepalive_timeout",
72
- :display_name => "Nginx Keepalive Timeout",
73
- :default => "65"
74
-
75
- attribute "nginx/worker_processes",
76
- :display_name => "Nginx Worker Processes",
77
- :description => "Number of worker processes",
78
- :default => "1"
79
-
80
- attribute "nginx/worker_connections",
81
- :display_name => "Nginx Worker Connections",
82
- :description => "Number of connections per worker",
83
- :default => "1024"
84
-
85
- attribute "nginx/server_names_hash_bucket_size",
86
- :display_name => "Nginx Server Names Hash Bucket Size",
87
- :default => "64"
88
-
89
- attribute "nginx/disable_access_log",
90
- :display_name => "Disable Access Log",
91
- :default => "false"
@@ -1 +0,0 @@
1
- puts "default provider"
@@ -1,59 +0,0 @@
1
- #
2
- # Cookbook Name:: nginx
3
- # Recipe:: default
4
- # Author:: AJ Christensen <aj@junglist.gen.nz>
5
- #
6
- # Copyright 2008-2009, Opscode, Inc.
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
- #
20
-
21
- include_recipe "nginx::ohai_plugin"
22
-
23
- package "nginx"
24
-
25
- directory node[:nginx][:log_dir] do
26
- mode 0755
27
- owner node[:nginx][:user]
28
- action :create
29
- end
30
-
31
- %w{nxensite nxdissite}.each do |nxscript|
32
- template "/usr/sbin/#{nxscript}" do
33
- source "#{nxscript}.erb"
34
- mode 0755
35
- owner "root"
36
- group "root"
37
- end
38
- end
39
-
40
- template "nginx.conf" do
41
- path "#{node[:nginx][:dir]}/nginx.conf"
42
- source "nginx.conf.erb"
43
- owner "root"
44
- group "root"
45
- mode 0644
46
- notifies :reload, "service[nginx]"
47
- end
48
-
49
- template "#{node[:nginx][:dir]}/sites-available/default" do
50
- source "default-site.erb"
51
- owner "root"
52
- group "root"
53
- mode 0644
54
- end
55
-
56
- service "nginx" do
57
- supports :status => true, :restart => true, :reload => true
58
- action [ :enable, :start ]
59
- end
@@ -1 +0,0 @@
1
- puts "default resource"
@@ -1,15 +0,0 @@
1
- Bluepill.application("nginx", :log_file => "<%= @log_dir %>/bluepill-nginx.log") do |app|
2
- app.process("nginx") do |process|
3
- process.pid_file = "<%= @pid %>"
4
- process.working_dir = "<%= @working_dir %>"
5
- process.start_command = "<%= @src_binary %> -c <%= @nginx_dir %>/nginx.conf"
6
- process.stop_command = "kill -QUIT {{PID}}"
7
- process.restart_command = "kill -HUP {{PID}}"
8
- process.daemonize = true
9
- process.stdout = process.stderr = "<%= @log_dir %>/nginx.log"
10
-
11
- process.monitor_children do |child_process|
12
- child_process.stop_command = "kill -QUIT {{PID}}"
13
- end
14
- end
15
- end
@@ -1,66 +0,0 @@
1
- #
2
- # Author:: Jamie Winsor (<jamie@vialstudios.com>)
3
- #
4
- # Copyright 2012, Riot Games
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- provides "nginx"
20
- provides "nginx/version"
21
- provides "nginx/configure_arguments"
22
- provides "nginx/prefix"
23
- provides "nginx/conf_path"
24
-
25
- def parse_flags(flags)
26
- prefix = nil
27
- conf_path = nil
28
-
29
- flags.each do |flag|
30
- case flag
31
- when /^--prefix=(.+)$/
32
- prefix = $1
33
- when /^--conf-path=(.+)$/
34
- conf_path = $1
35
- end
36
- end
37
-
38
- [ prefix, conf_path ]
39
- end
40
-
41
- nginx Mash.new unless nginx
42
- nginx[:version] = nil unless nginx[:version]
43
- nginx[:configure_arguments] = Array.new unless nginx[:configure_arguments]
44
- nginx[:prefix] = nil unless nginx[:prefix]
45
- nginx[:conf_path] = nil unless nginx[:conf_path]
46
-
47
- status, stdout, stderr = run_command(:no_status_check => true, :command => "<%= @nginx_bin %> -V")
48
-
49
- if status == 0
50
- stderr.split("\n").each do |line|
51
- case line
52
- when /^configure arguments:(.+)/
53
- # This could be better: I'm splitting on configure arguments which removes them and also
54
- # adds a blank string at index 0 of the array. This is why we drop index 0 and map to
55
- # add the '--' prefix back to the configure argument.
56
- nginx[:configure_arguments] = $1.split(/\s--/).drop(1).map { |ca| "--#{ca}" }
57
-
58
- prefix, conf_path = parse_flags(nginx[:configure_arguments])
59
-
60
- nginx[:prefix] = prefix
61
- nginx[:conf_path] = conf_path
62
- when /^nginx version: nginx\/(.+)/
63
- nginx[:version] = $1
64
- end
65
- end
66
- end
@@ -1 +0,0 @@
1
- cookbook 'nginx', '= 0.101.0'
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpQIBAAKCAQEAyyUMqrTh1IzKOyE0fvXEWC7m0AdMI8/dr9JJMUKtK9vhhP0w
3
- rm6m95GoybFM2IRryukFsAxpcir3M1ungTU3Smq4MshhMJ7H9FbvZVfQoknTbCsR
4
- w6scg2fBepxT2+fcGRufr8nAh92M3uUkN9bMMTAkt18D4br6035YvdmvHDJERxYq
5
- ByA/720AdI9VNSIvw+x8oqsIkXLEdF6dgT9MpG5iWZT66pbFsnNZpRrd4/bFNWBY
6
- +13aOqdmjiTL08/EdgQFKMT5qimpos1TuQhA7mwInOjQgzVu9uCDkMiYejaLbUz0
7
- lGyS8y4uxu6z2hA900Jg/z+JJuXymH5QAX3GZQIDAQABAoIBAQCtFXkwbYPI1Nht
8
- /wG6du5+8B9K+hy+mppY9wPTy+q+Zs9Ev3Fd/fuXDm1QxBckl9c8AMUO1dR2KPOM
9
- t7gFl/DvH/SnmCFvCqp1nijFIUgrLlnMXPn6zG0z7RBlxpKQ2IGohufNIEpBuNwR
10
- Ag2U4hgChPGTp4ooJ2cVEh7MS5AupYPDbC62dWEdW68aRTWhh2BCGAWBb6s16yl9
11
- aZ7+OcxW2eeRJVbRfLkLQEDutJZi5TfOEn5QPc86ZgxcCmnvwulnpnhpz6QCkgQt
12
- OP/+KRqDhWSDVCFREVT30fUIj1EWvK7NFWASZQxueZStuIvMEKeFebYfrbHxRFzJ
13
- UmaxJnWVAoGBAPbKLpeky6ClccBaHHrCgjzakoDfGgyNKDQ9g753lJxB8nn7d9X4
14
- HQpkWpfqAGFRZp1hI2H+VxyUXLh2Ob5OUeTm0OZJll35vycOaQEtfgIScXTcvzn0
15
- 16J9eX2YY4wIHEEMh85nKk8BEGgiNP5nuEviHocCeYXoi/Zq3+qj6v63AoGBANK5
16
- 4nyi6LBQFs1CUc7Sh7vjtOE3ia7KeRmOr7gS6QhS3iK3Oa8FzBLJ6ETjN2a9Bw8N
17
- cF7I/+cr4s7DUJjxdb53D/J6TVSYORNNCUVnpF/uB2LqqdXDYmpO0PvFkXFoYTnJ
18
- kaLAN8uCoLKr6JH9tq3DfXIfDIHiZ+BOIvI070fDAoGBAMDyzEDFmGruTyRLj66u
19
- +rJnVVmqlKwxhLhrS+CTj74nlVOnt0a0KMhiM65IRqnPwcHUG5zXBPaUTHXwAS93
20
- /nFPwQ37hLPOupPnoVNJZRZrowbyPBQtCJbDMURv64ylHqoBCQDoCd0hANnZvMMX
21
- BrFVhfaaibaXXS542r6SD/27AoGAECadHE5kJTdOOBcwK/jo3Fa8g1J9Y/8yvum3
22
- wBT69V9clS6T5j08geglvDnqAh7UzquKBEnFi1NKw+wmXkKLcrivaTdEfApavYb3
23
- AfHKoGue907jC3Y5Mcquq81ds2J7qTEwz1eKLzfo1yjj32ShvrmwALIuhDn1GjUC
24
- 6qtx938CgYEApEqvu0nocR1jmVVlLe5uKQBj949dh6NGq0R5Lztz6xufaTYzMC3d
25
- AZG9XPPjRqSLs+ylSXJpwHEwoeyLFDaJcO+GgW1/ut4MC2HppOx6aImwDdXMHUWR
26
- KYGIFF4AU/IYoBcanAm4s078EH/Oz01B2c7tR2TqabisPgLYe7PXSCw=
27
- -----END RSA PRIVATE KEY-----
@@ -1,81 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Berkshelf::Chef::Config do
4
- describe '.location' do
5
- let(:path) { '/fake/path/for/.chef' }
6
- let(:config) { File.join(path, 'knife.rb') }
7
- let(:location) { Berkshelf::Chef::Config.send(:location) }
8
-
9
- before do
10
- ENV.stub(:[]).and_return(nil)
11
-
12
- File.stub(:exists?).with(any_args()).and_return(false)
13
- File.stub(:exists?).with(config).and_return(true)
14
- end
15
-
16
- it 'uses $BERKSHELF_CHEF_CONFIG' do
17
- ENV.stub(:[]).with('BERKSHELF_CHEF_CONFIG').and_return(config)
18
- expect(location).to eq(config)
19
- end
20
-
21
- it 'uses $KNIFE_HOME' do
22
- ENV.stub(:[]).with('KNIFE_HOME').and_return(path)
23
- expect(location).to eq(config)
24
- end
25
-
26
- it 'uses ::working_dir' do
27
- Berkshelf::Chef::Config.stub(:working_dir).and_return(path)
28
- expect(location).to eq(config)
29
- end
30
-
31
- context 'an ascending search' do
32
- context 'with multiple .chef directories' do
33
- let(:path) { '/fake/.chef/path/with/multiple/.chef/directories' }
34
-
35
- before do
36
- Berkshelf::Chef::Config.stub(:working_dir).and_return(path)
37
- File.stub(:exists?).and_return(false)
38
- File.stub(:exists?).with('/fake/.chef/knife.rb').and_return(true)
39
- File.stub(:exists?).with('/fake/.chef/path/with/multiple/.chef/knife.rb').and_return(true)
40
- end
41
-
42
- it 'chooses the closest path' do
43
- expect(location).to eq('/fake/.chef/path/with/multiple/.chef/knife.rb')
44
- end
45
- end
46
-
47
- context 'with the current directory as .chef' do
48
- let(:path) { '/fake/.chef' }
49
-
50
- before do
51
- Berkshelf::Chef::Config.stub(:working_dir).and_return(path)
52
- File.stub(:exists?).and_return(false)
53
- File.stub(:exists?).with('/fake/.chef/knife.rb').and_return(true)
54
- end
55
-
56
- it 'uses the current directory' do
57
- expect(location).to eq('/fake/.chef/knife.rb')
58
- end
59
- end
60
-
61
- context 'with .chef at the top-level' do
62
- let(:path) { '/.chef/some/random/sub/directories' }
63
-
64
- before do
65
- Berkshelf::Chef::Config.stub(:working_dir).and_return(path)
66
- File.stub(:exists?).and_return(false)
67
- File.stub(:exists?).with('/.chef/knife.rb').and_return(true)
68
- end
69
-
70
- it 'uses the top-level directory' do
71
- expect(location).to eq('/.chef/knife.rb')
72
- end
73
- end
74
- end
75
-
76
- it 'uses $HOME' do
77
- ENV.stub(:[]).with('HOME').and_return(File.join(path, '..'))
78
- expect(location).to eq(config)
79
- end
80
- end
81
- end