berkshelf 7.1.0 → 7.2.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 +4 -4
- data/Rakefile +2 -2
- data/berkshelf.gemspec +2 -3
- data/bin/berks +1 -1
- data/lib/berkshelf.rb +6 -7
- data/lib/berkshelf/api_client/remote_cookbook.rb +1 -1
- data/lib/berkshelf/berksfile.rb +1 -1
- data/lib/berkshelf/chef_config_compat.rb +1 -1
- data/lib/berkshelf/community_rest.rb +2 -2
- data/lib/berkshelf/config.rb +2 -2
- data/lib/berkshelf/cookbook_store.rb +2 -4
- data/lib/berkshelf/core_ext/file_utils.rb +1 -1
- data/lib/berkshelf/downloader.rb +5 -5
- data/lib/berkshelf/errors.rb +3 -0
- data/lib/berkshelf/file_syncer.rb +7 -12
- data/lib/berkshelf/locations/git.rb +6 -12
- data/lib/berkshelf/mixin/git.rb +2 -2
- data/lib/berkshelf/packager.rb +3 -5
- data/lib/berkshelf/shell.rb +1 -1
- data/lib/berkshelf/shell_out.rb +4 -3
- data/lib/berkshelf/source.rb +2 -2
- data/lib/berkshelf/source_uri.rb +1 -1
- data/lib/berkshelf/ssl_policies.rb +4 -6
- data/lib/berkshelf/validator.rb +2 -8
- data/lib/berkshelf/version.rb +1 -1
- data/lib/berkshelf/visualizer.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/berkshelf/locations/git_spec.rb +2 -5
- data/spec/unit/berkshelf/ridley_compat_spec.rb +1 -1
- data/spec/unit/berkshelf/source_spec.rb +22 -12
- data/spec/unit/berkshelf/ssl_policies_spec.rb +0 -1
- data/spec/unit/berkshelf/validator_spec.rb +0 -13
- metadata +8 -23
- data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/attributes/default.rb +0 -0
- data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/files/default/file.h +0 -0
- data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/metadata.rb +0 -2
- data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/recipes/default.rb +0 -0
- data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/templates/default/template.erb +0 -0
- data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/attributes/default.rb +0 -0
- data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/files/default/file.h +0 -0
- data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/metadata.rb +0 -3
- data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/recipes/default.rb +0 -0
- data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/templates/default/template.erb +0 -0
- data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/attributes/default.rb +0 -0
- data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/files/default/file.h +0 -0
- data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/metadata.rb +0 -3
- data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/recipes/default.rb +0 -0
- data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/templates/default/template.erb +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 62d08805f26730ed4eb3721de768e7361113fe5d877c485a60358161904db3f9
|
|
4
|
+
data.tar.gz: 9a3f0b74b8cbda7bc06a92febdf8881002d8b42a3427c9e7e21565a705f28a1c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d2b5c48cbdb73b61b318cf679098d036d53da85c4f3308c01b51711bdcfe9d073f7a482a87285d684a874054ae1ebe00e0162ef032582243a9b333cecbe744be
|
|
7
|
+
data.tar.gz: dd118413d20ac879b40e92c4ea78055686fc0823d0ee1bcbe58ab9d799cb7c1fc48b0326018988737b9c9952989531a3ef6711cdad26476198b5f120c4cba34b
|
data/Rakefile
CHANGED
|
@@ -14,8 +14,8 @@ begin
|
|
|
14
14
|
require "cucumber"
|
|
15
15
|
require "cucumber/rake/task"
|
|
16
16
|
Cucumber::Rake::Task.new(:features) do |t|
|
|
17
|
-
if RUBY_PLATFORM =~ WINDOWS_PLATFORM
|
|
18
|
-
t.cucumber_opts = "--tags
|
|
17
|
+
if RUBY_PLATFORM =~ WINDOWS_PLATFORM || RUBY_PLATFORM =~ /darwin/
|
|
18
|
+
t.cucumber_opts = "--tags 'not @not-windows'"
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
rescue LoadError
|
data/berkshelf.gemspec
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require File.expand_path("../lib/berkshelf/version", __FILE__)
|
|
1
|
+
require File.expand_path("lib/berkshelf/version", __dir__)
|
|
3
2
|
|
|
4
3
|
Gem::Specification.new do |s|
|
|
5
4
|
s.authors = [
|
|
@@ -36,7 +35,7 @@ Gem::Specification.new do |s|
|
|
|
36
35
|
s.add_dependency "solve", "~> 4.0"
|
|
37
36
|
s.add_dependency "thor", ">= 0.20"
|
|
38
37
|
s.add_dependency "octokit", "~> 4.0"
|
|
39
|
-
s.add_dependency "mixlib-archive", ">=
|
|
38
|
+
s.add_dependency "mixlib-archive", ">= 1.1.4", "< 2.0" # needed for ruby 3.0 / Dir.chdir removal
|
|
40
39
|
s.add_dependency "concurrent-ruby", "~> 1.0"
|
|
41
40
|
s.add_dependency "chef", ">= 15.7.32" # needed for --skip-syntax-check
|
|
42
41
|
s.add_dependency "chef-config"
|
data/bin/berks
CHANGED
data/lib/berkshelf.rb
CHANGED
|
@@ -10,14 +10,14 @@ rescue LoadError
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
require "cleanroom"
|
|
13
|
-
require "digest/md5"
|
|
14
|
-
require "forwardable"
|
|
15
|
-
require "json"
|
|
16
|
-
require "pathname"
|
|
13
|
+
require "digest/md5" unless defined?(Digest::MD5)
|
|
14
|
+
require "forwardable" unless defined?(Forwardable)
|
|
15
|
+
require "json" unless defined?(JSON)
|
|
16
|
+
require "pathname" unless defined?(Pathname)
|
|
17
17
|
require "semverse"
|
|
18
18
|
require "solve"
|
|
19
|
-
require "thor"
|
|
20
|
-
require "uri"
|
|
19
|
+
require "thor" unless defined?(Thor)
|
|
20
|
+
require "uri" unless defined?(URI)
|
|
21
21
|
|
|
22
22
|
JSON.create_id = nil
|
|
23
23
|
|
|
@@ -222,7 +222,6 @@ require_relative "berkshelf/lockfile"
|
|
|
222
222
|
require_relative "berkshelf/berksfile"
|
|
223
223
|
require_relative "berkshelf/cached_cookbook"
|
|
224
224
|
require_relative "berkshelf/cli"
|
|
225
|
-
require_relative "berkshelf/chef_config_compat"
|
|
226
225
|
require_relative "berkshelf/community_rest"
|
|
227
226
|
require_relative "berkshelf/cookbook_store"
|
|
228
227
|
require_relative "berkshelf/config"
|
data/lib/berkshelf/berksfile.rb
CHANGED
|
@@ -500,7 +500,7 @@ module Berkshelf
|
|
|
500
500
|
latest = cookbooks.select do |cookbook|
|
|
501
501
|
(include_non_satisfying || dependency.version_constraint.satisfies?(cookbook.version)) &&
|
|
502
502
|
Semverse::Version.coerce(cookbook.version) > dependency.locked_version
|
|
503
|
-
end.
|
|
503
|
+
end.max_by(&:version)
|
|
504
504
|
|
|
505
505
|
unless latest.nil?
|
|
506
506
|
hash[name] ||= {
|
data/lib/berkshelf/config.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require "mixlib/config"
|
|
2
|
-
require "openssl"
|
|
1
|
+
require "mixlib/config" unless defined?(Mixlib::Config)
|
|
2
|
+
require "openssl" unless defined?(OpenSSL)
|
|
3
3
|
|
|
4
4
|
# we need this method, but have to inject it into mixlib-config directly
|
|
5
5
|
# to have it available from config contexts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require "fileutils"
|
|
1
|
+
require "fileutils" unless defined?(FileUtils)
|
|
2
2
|
require "chef/exceptions"
|
|
3
3
|
|
|
4
4
|
module Berkshelf
|
|
@@ -49,9 +49,7 @@ module Berkshelf
|
|
|
49
49
|
|
|
50
50
|
# Destroy the contents of the initialized storage path.
|
|
51
51
|
def clean!
|
|
52
|
-
Dir.
|
|
53
|
-
FileUtils.rm_rf(Dir.glob("*"))
|
|
54
|
-
end
|
|
52
|
+
FileUtils.rm_rf(Dir.glob("#{storage_path}/*"))
|
|
55
53
|
end
|
|
56
54
|
|
|
57
55
|
# Import a cookbook found on the local filesystem into this instance of the cookbook store.
|
data/lib/berkshelf/downloader.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require "net/http"
|
|
2
|
-
require "mixlib/archive"
|
|
1
|
+
require "net/http" unless defined?(Net::HTTP)
|
|
2
|
+
require "mixlib/archive" unless defined?(Mixlib::Archive)
|
|
3
3
|
require_relative "ssl_policies"
|
|
4
|
-
require "faraday"
|
|
4
|
+
require "faraday" unless defined?(Faraday)
|
|
5
5
|
|
|
6
6
|
module Berkshelf
|
|
7
7
|
class Downloader
|
|
@@ -84,7 +84,7 @@ module Berkshelf
|
|
|
84
84
|
client_key: source.options[:client_key] || Berkshelf::Config.instance.chef.client_key,
|
|
85
85
|
ssl: source.options[:ssl],
|
|
86
86
|
}
|
|
87
|
-
RidleyCompat.new_client(credentials) do |conn|
|
|
87
|
+
RidleyCompat.new_client(**credentials) do |conn|
|
|
88
88
|
cookbook = Chef::CookbookVersion.load(name, version)
|
|
89
89
|
manifest = cookbook.cookbook_manifest
|
|
90
90
|
manifest.by_parent_directory.each do |segment, files|
|
|
@@ -145,7 +145,7 @@ module Berkshelf
|
|
|
145
145
|
|
|
146
146
|
File.join(unpack_dir, cookbook_directory)
|
|
147
147
|
when :uri
|
|
148
|
-
require "open-uri"
|
|
148
|
+
require "open-uri" unless defined?(OpenURI)
|
|
149
149
|
|
|
150
150
|
tmp_dir = Dir.mktmpdir
|
|
151
151
|
archive_path = Pathname.new(tmp_dir) + "#{name}-#{version}.tar.gz"
|
data/lib/berkshelf/errors.rb
CHANGED
|
@@ -91,6 +91,7 @@ module Berkshelf
|
|
|
91
91
|
|
|
92
92
|
class CookbookSyntaxError < BerkshelfError; set_status_code(107); end
|
|
93
93
|
class ConstraintNotSatisfied < BerkshelfError; set_status_code(111); end
|
|
94
|
+
|
|
94
95
|
class BerksfileReadError < BerkshelfError
|
|
95
96
|
set_status_code(113)
|
|
96
97
|
|
|
@@ -254,6 +255,7 @@ module Berkshelf
|
|
|
254
255
|
end
|
|
255
256
|
|
|
256
257
|
class UploadFailure < BerkshelfError; end
|
|
258
|
+
|
|
257
259
|
class FrozenCookbook < UploadFailure
|
|
258
260
|
set_status_code(126)
|
|
259
261
|
|
|
@@ -436,6 +438,7 @@ module Berkshelf
|
|
|
436
438
|
end
|
|
437
439
|
|
|
438
440
|
class DuplicateDemand < BerkshelfError; set_status_code(138); end
|
|
441
|
+
|
|
439
442
|
class LockfileNotFound < BerkshelfError
|
|
440
443
|
set_status_code(140)
|
|
441
444
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require "fileutils"
|
|
1
|
+
require "fileutils" unless defined?(FileUtils)
|
|
2
2
|
|
|
3
3
|
module Berkshelf
|
|
4
4
|
module FileSyncer
|
|
@@ -24,8 +24,8 @@ module Berkshelf
|
|
|
24
24
|
# versions of windows points at 'C:\users'. Some users have their
|
|
25
25
|
# temp directory still referring to 'C:\Documents and Settings'.
|
|
26
26
|
#
|
|
27
|
-
def glob(pattern)
|
|
28
|
-
Dir.glob(pattern, File::FNM_DOTMATCH).sort.reject do |file|
|
|
27
|
+
def glob(pattern, **kwargs)
|
|
28
|
+
Dir.glob(pattern, File::FNM_DOTMATCH, **kwargs).sort.reject do |file|
|
|
29
29
|
basename = File.basename(file)
|
|
30
30
|
IGNORED_FILES.include?(basename)
|
|
31
31
|
end
|
|
@@ -65,11 +65,10 @@ module Berkshelf
|
|
|
65
65
|
[exclude, "#{exclude}/*"]
|
|
66
66
|
end.flatten
|
|
67
67
|
|
|
68
|
-
source_files =
|
|
69
|
-
glob("**/*").reject do |source_file|
|
|
68
|
+
source_files =
|
|
69
|
+
glob("**/*", base: source).reject do |source_file|
|
|
70
70
|
excludes.any? { |exclude| File.fnmatch?(exclude, source_file, File::FNM_DOTMATCH) }
|
|
71
71
|
end
|
|
72
|
-
end
|
|
73
72
|
|
|
74
73
|
# Ensure the destination directory exists
|
|
75
74
|
FileUtils.mkdir_p(destination) unless File.directory?(destination)
|
|
@@ -88,9 +87,7 @@ module Berkshelf
|
|
|
88
87
|
target = File.readlink(source_file)
|
|
89
88
|
|
|
90
89
|
destination = File.expand_path(destination)
|
|
91
|
-
|
|
92
|
-
FileUtils.ln_sf(target, "#{destination}/#{relative_path}")
|
|
93
|
-
end
|
|
90
|
+
FileUtils.ln_sf(target, "#{destination}/#{relative_path}")
|
|
94
91
|
when :file
|
|
95
92
|
FileUtils.cp(source_file, "#{destination}/#{relative_path}")
|
|
96
93
|
else
|
|
@@ -103,9 +100,7 @@ module Berkshelf
|
|
|
103
100
|
|
|
104
101
|
if options[:delete]
|
|
105
102
|
# Remove any files in the destination that are not in the source files
|
|
106
|
-
destination_files =
|
|
107
|
-
glob("**/*")
|
|
108
|
-
end
|
|
103
|
+
destination_files = glob("**/*", base: destination)
|
|
109
104
|
|
|
110
105
|
# Remove any extra files that are present in the destination, but are
|
|
111
106
|
# not in the source list
|
|
@@ -37,28 +37,22 @@ module Berkshelf
|
|
|
37
37
|
scratch_path = Pathname.new(Dir.mktmpdir)
|
|
38
38
|
|
|
39
39
|
if cached?
|
|
40
|
-
|
|
41
|
-
git %{fetch --force --tags #{uri} "refs/heads/*:refs/heads/*"}
|
|
42
|
-
end
|
|
40
|
+
git(%{fetch --force --tags #{uri} "refs/heads/*:refs/heads/*"}, cwd: cache_path.to_s)
|
|
43
41
|
else
|
|
44
42
|
git %{clone #{uri} "#{cache_path}" --bare --no-hardlinks}
|
|
45
43
|
end
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
@revision ||= git %{rev-parse #{@rev_parse}}
|
|
49
|
-
end
|
|
45
|
+
@revision ||= git(%{rev-parse #{@rev_parse}}, cwd: cache_path.to_s)
|
|
50
46
|
|
|
51
47
|
# Clone into a scratch directory for validations
|
|
52
48
|
git %{clone --no-checkout "#{cache_path}" "#{scratch_path}"}
|
|
53
49
|
|
|
54
50
|
# Make sure the scratch directory is up-to-date and account for rel paths
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
git %{reset --hard #{@revision}}
|
|
51
|
+
git(%{fetch --force --tags "#{cache_path}"}, cwd: scratch_path.to_s)
|
|
52
|
+
git(%{reset --hard #{@revision}}, cwd: scratch_path.to_s)
|
|
58
53
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
end
|
|
54
|
+
if rel
|
|
55
|
+
git(%{filter-branch --subdirectory-filter "#{rel}" --force}, cwd: scratch_path.to_s)
|
|
62
56
|
end
|
|
63
57
|
|
|
64
58
|
# Validate the scratched path is a valid cookbook
|
data/lib/berkshelf/mixin/git.rb
CHANGED
|
@@ -13,12 +13,12 @@ module Berkshelf
|
|
|
13
13
|
#
|
|
14
14
|
# @raise [String]
|
|
15
15
|
# the +$stdout+ from the command
|
|
16
|
-
def git(command, error = true)
|
|
16
|
+
def git(command, error = true, **kwargs)
|
|
17
17
|
unless Berkshelf.which("git") || Berkshelf.which("git.exe") || Berkshelf.which("git.bat")
|
|
18
18
|
raise GitNotInstalled.new
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
response = shell_out(%{git #{command}})
|
|
21
|
+
response = shell_out(%{git #{command}}, **kwargs)
|
|
22
22
|
|
|
23
23
|
if response.error?
|
|
24
24
|
raise GitCommandError.new(command, cache_path, response.stderr)
|
data/lib/berkshelf/packager.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require "archive/tar/minitar"
|
|
2
|
-
require "zlib"
|
|
2
|
+
require "zlib" unless defined?(Zlib)
|
|
3
3
|
|
|
4
4
|
module Berkshelf
|
|
5
5
|
# A class for archiving and compressing directory containing one or more cookbooks.
|
|
@@ -40,10 +40,8 @@ module Berkshelf
|
|
|
40
40
|
# @return [String]
|
|
41
41
|
# path to the generated archive
|
|
42
42
|
def run(source)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Archive::Tar::Minitar.pack(Dir.glob("*"), tgz)
|
|
46
|
-
end
|
|
43
|
+
tgz = Zlib::GzipWriter.new(File.open(out_file, "wb"))
|
|
44
|
+
Archive::Tar::Minitar.pack(Dir.glob("#{source}/*"), tgz)
|
|
47
45
|
|
|
48
46
|
out_file
|
|
49
47
|
rescue SystemCallError => ex
|
data/lib/berkshelf/shell.rb
CHANGED
data/lib/berkshelf/shell_out.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require "mixlib/shellout"
|
|
1
|
+
require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
|
|
2
2
|
|
|
3
3
|
module Berkshelf
|
|
4
4
|
module ShellOut
|
|
@@ -8,8 +8,9 @@ module Berkshelf
|
|
|
8
8
|
cmd
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
def shell_out!(*args)
|
|
12
|
-
cmd =
|
|
11
|
+
def shell_out!(*args, **options)
|
|
12
|
+
cmd = Mixlib::ShellOut.new(*args, **options)
|
|
13
|
+
cmd.run_command
|
|
13
14
|
cmd.error!
|
|
14
15
|
cmd
|
|
15
16
|
end
|
data/lib/berkshelf/source.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require_relative "api-client"
|
|
2
2
|
require_relative "chef_repo_universe"
|
|
3
3
|
require_relative "ssl_policies"
|
|
4
|
-
require "openssl"
|
|
4
|
+
require "openssl" unless defined?(OpenSSL)
|
|
5
5
|
|
|
6
6
|
module Berkshelf
|
|
7
7
|
class Source
|
|
@@ -132,7 +132,7 @@ module Berkshelf
|
|
|
132
132
|
#
|
|
133
133
|
# @return [APIClient::RemoteCookbook]
|
|
134
134
|
def latest(name)
|
|
135
|
-
versions(name).
|
|
135
|
+
versions(name).max
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
# @param [String] name
|
data/lib/berkshelf/source_uri.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require "openssl"
|
|
1
|
+
require "openssl" unless defined?(OpenSSL)
|
|
2
2
|
|
|
3
3
|
module Berkshelf
|
|
4
4
|
class SSLPolicy
|
|
@@ -29,11 +29,9 @@ module Berkshelf
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def set_custom_certs
|
|
32
|
-
Dir.
|
|
33
|
-
::
|
|
34
|
-
|
|
35
|
-
add_trusted_cert(cert)
|
|
36
|
-
end
|
|
32
|
+
::Dir.glob("#{trusted_certs_dir}/{*.crt,*.pem}").each do |cert|
|
|
33
|
+
cert = OpenSSL::X509::Certificate.new(IO.read(cert))
|
|
34
|
+
add_trusted_cert(cert)
|
|
37
35
|
end
|
|
38
36
|
end
|
|
39
37
|
end
|
data/lib/berkshelf/validator.rb
CHANGED
|
@@ -22,15 +22,9 @@ module Berkshelf
|
|
|
22
22
|
# the Cookbook(s) to validate
|
|
23
23
|
def validate_files(cookbooks)
|
|
24
24
|
Array(cookbooks).each do |cookbook|
|
|
25
|
-
|
|
25
|
+
base, name = Pathname.new(cookbook.path.to_s).split
|
|
26
26
|
|
|
27
|
-
files = Dir.
|
|
28
|
-
Dir.glob(File.join("**", "*.rb")).select do |f|
|
|
29
|
-
f = File.join(path, f)
|
|
30
|
-
parent = Pathname.new(path).dirname.to_s
|
|
31
|
-
f.gsub(parent, "") =~ /[[:space:]]/
|
|
32
|
-
end
|
|
33
|
-
end
|
|
27
|
+
files = Dir.glob("#{name}/**/*.rb", base: base.to_s).select { |f| f =~ /[[:space:]]/ }
|
|
34
28
|
|
|
35
29
|
raise InvalidCookbookFiles.new(cookbook, files) unless files.empty?
|
|
36
30
|
end
|
data/lib/berkshelf/version.rb
CHANGED
data/lib/berkshelf/visualizer.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
|
@@ -104,11 +104,10 @@ module Berkshelf
|
|
|
104
104
|
|
|
105
105
|
context "when the repository is cached" do
|
|
106
106
|
it "pulls a new version" do
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
cache_path = subject.send(:cache_path)
|
|
109
108
|
allow(subject).to receive(:cached?).and_return(true)
|
|
110
109
|
expect(subject).to receive(:git).with(
|
|
111
|
-
'fetch --force --tags https://repo.com "refs/heads/*:refs/heads/*"'
|
|
110
|
+
'fetch --force --tags https://repo.com "refs/heads/*:refs/heads/*"', cwd: cache_path.to_s
|
|
112
111
|
)
|
|
113
112
|
subject.install
|
|
114
113
|
end
|
|
@@ -116,8 +115,6 @@ module Berkshelf
|
|
|
116
115
|
|
|
117
116
|
context "when the revision is not cached" do
|
|
118
117
|
it "clones the repository" do
|
|
119
|
-
allow(Dir).to receive(:chdir) { |args, &b| b.call } # Force eval the chdir block
|
|
120
|
-
|
|
121
118
|
cache_path = subject.send(:cache_path)
|
|
122
119
|
allow(subject).to receive(:cached?).and_return(false)
|
|
123
120
|
expect(subject).to receive(:git).with(
|
|
@@ -4,8 +4,9 @@ module Berkshelf
|
|
|
4
4
|
describe Source do
|
|
5
5
|
let(:berksfile) { double("Berksfile", filepath: "/test/Berksfile") }
|
|
6
6
|
let(:arguments) { [] }
|
|
7
|
+
let(:kwargs) { {} }
|
|
7
8
|
let(:config) { Config.new }
|
|
8
|
-
subject(:instance) { described_class.new(berksfile, *arguments) }
|
|
9
|
+
subject(:instance) { described_class.new(berksfile, *arguments, **kwargs) }
|
|
9
10
|
before do
|
|
10
11
|
allow(Berkshelf::Config).to receive(:instance).and_return(config)
|
|
11
12
|
end
|
|
@@ -19,7 +20,8 @@ module Berkshelf
|
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
context "with a string argument and options" do
|
|
22
|
-
let(:arguments) { ["https://example.com"
|
|
23
|
+
let(:arguments) { ["https://example.com" ] }
|
|
24
|
+
let(:kwargs) { { key: "value" } }
|
|
23
25
|
it { is_expected.to eq :supermarket }
|
|
24
26
|
end
|
|
25
27
|
|
|
@@ -29,7 +31,8 @@ module Berkshelf
|
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
context "with a symbol argument and options" do
|
|
32
|
-
let(:arguments) { [:chef_server
|
|
34
|
+
let(:arguments) { [:chef_server ] }
|
|
35
|
+
let(:kwargs) { { key: "value" } }
|
|
33
36
|
it { is_expected.to eq :chef_server }
|
|
34
37
|
end
|
|
35
38
|
|
|
@@ -44,7 +47,8 @@ module Berkshelf
|
|
|
44
47
|
end
|
|
45
48
|
|
|
46
49
|
context "with a hash argument and disconnected options" do
|
|
47
|
-
let(:arguments) { [{ artifactory: "https://example.com/api/chef/chef-virtual" }
|
|
50
|
+
let(:arguments) { [{ artifactory: "https://example.com/api/chef/chef-virtual" }] }
|
|
51
|
+
let(:kwargs) { { key: "value" } }
|
|
48
52
|
it { is_expected.to eq :artifactory }
|
|
49
53
|
end
|
|
50
54
|
end
|
|
@@ -58,7 +62,8 @@ module Berkshelf
|
|
|
58
62
|
end
|
|
59
63
|
|
|
60
64
|
context "with a string argument and options" do
|
|
61
|
-
let(:arguments) { ["https://example.com"
|
|
65
|
+
let(:arguments) { ["https://example.com" ] }
|
|
66
|
+
let(:kwargs) { { key: "value" } }
|
|
62
67
|
it { is_expected.to eq "https://example.com" }
|
|
63
68
|
end
|
|
64
69
|
|
|
@@ -69,7 +74,8 @@ module Berkshelf
|
|
|
69
74
|
end
|
|
70
75
|
|
|
71
76
|
context "with a symbol argument and options" do
|
|
72
|
-
let(:arguments) { [:chef_server
|
|
77
|
+
let(:arguments) { [:chef_server] }
|
|
78
|
+
let(:kwargs) { { key: "value" } }
|
|
73
79
|
before { config.chef.chef_server_url = "https://chefserver/" }
|
|
74
80
|
it { is_expected.to eq "https://chefserver/" }
|
|
75
81
|
end
|
|
@@ -85,7 +91,8 @@ module Berkshelf
|
|
|
85
91
|
end
|
|
86
92
|
|
|
87
93
|
context "with a hash argument and disconnected options" do
|
|
88
|
-
let(:arguments) { [{ artifactory: "https://example.com/api/chef/chef-virtual" }
|
|
94
|
+
let(:arguments) { [{ artifactory: "https://example.com/api/chef/chef-virtual" } ] }
|
|
95
|
+
let(:kwargs) { { key: "value" } }
|
|
89
96
|
it { is_expected.to eq "https://example.com/api/chef/chef-virtual" }
|
|
90
97
|
end
|
|
91
98
|
|
|
@@ -96,7 +103,7 @@ module Berkshelf
|
|
|
96
103
|
|
|
97
104
|
context "with a chef_repo source" do
|
|
98
105
|
let(:arguments) { [{ chef_repo: "." }] }
|
|
99
|
-
it { is_expected.to eq(windows? ? "file://
|
|
106
|
+
it { is_expected.to eq(windows? ? "file://D/test" : "file:///test") }
|
|
100
107
|
end
|
|
101
108
|
end
|
|
102
109
|
|
|
@@ -119,7 +126,8 @@ module Berkshelf
|
|
|
119
126
|
end
|
|
120
127
|
|
|
121
128
|
context "with a string argument and options" do
|
|
122
|
-
let(:arguments) { ["https://example.com"
|
|
129
|
+
let(:arguments) { ["https://example.com"] }
|
|
130
|
+
let(:kwargs) { { key: "value" } }
|
|
123
131
|
its([:key]) { is_expected.to eq "value" }
|
|
124
132
|
end
|
|
125
133
|
|
|
@@ -129,7 +137,8 @@ module Berkshelf
|
|
|
129
137
|
end
|
|
130
138
|
|
|
131
139
|
context "with a symbol argument and options" do
|
|
132
|
-
let(:arguments) { [:chef_server
|
|
140
|
+
let(:arguments) { [:chef_server] }
|
|
141
|
+
let(:kwargs) { { key: "value" } }
|
|
133
142
|
its([:key]) { is_expected.to eq "value" }
|
|
134
143
|
end
|
|
135
144
|
|
|
@@ -144,7 +153,8 @@ module Berkshelf
|
|
|
144
153
|
end
|
|
145
154
|
|
|
146
155
|
context "with a hash argument and disconnected options" do
|
|
147
|
-
let(:arguments) { [{ artifactory: "https://example.com/api/chef/chef-virtual" }
|
|
156
|
+
let(:arguments) { [{ artifactory: "https://example.com/api/chef/chef-virtual" } ] }
|
|
157
|
+
let(:kwargs) { { key: "value" } }
|
|
148
158
|
its([:key]) { is_expected.to eq "value" }
|
|
149
159
|
end
|
|
150
160
|
|
|
@@ -156,7 +166,7 @@ module Berkshelf
|
|
|
156
166
|
|
|
157
167
|
context "with a chef_repo source" do
|
|
158
168
|
let(:arguments) { [{ chef_repo: "." }] }
|
|
159
|
-
its([:path]) { is_expected.to eq(windows? ? "
|
|
169
|
+
its([:path]) { is_expected.to eq(windows? ? "D:/test" : "/test") }
|
|
160
170
|
end
|
|
161
171
|
end
|
|
162
172
|
|
|
@@ -73,7 +73,6 @@ describe Berkshelf::SSLPolicy do
|
|
|
73
73
|
before do
|
|
74
74
|
allow(chef_config).to receive_messages(trusted_certs_dir: self_signed_crt_path_windows_backslashes)
|
|
75
75
|
allow(File).to receive(:exist?).with(self_signed_crt_path_windows_forwardslashes).and_return(true)
|
|
76
|
-
allow(Dir).to receive(:chdir).with(self_signed_crt_path_windows_forwardslashes)
|
|
77
76
|
end
|
|
78
77
|
|
|
79
78
|
it "replaces the backslashes in trusted_certs_dir from Berkshelf config with forwardslashes" do
|
|
@@ -4,10 +4,6 @@ describe Berkshelf::Validator do
|
|
|
4
4
|
describe "#validate_files" do
|
|
5
5
|
let(:cookbook) { double("cookbook", cookbook_name: "cookbook", path: "path") }
|
|
6
6
|
|
|
7
|
-
before do
|
|
8
|
-
allow(Dir).to receive(:chdir) { |&block| block.call }
|
|
9
|
-
end
|
|
10
|
-
|
|
11
7
|
it "raises an error when the cookbook has spaces in the files" do
|
|
12
8
|
allow(Dir).to receive(:glob).and_return(["/there are/spaces/in this/recipes/default.rb"])
|
|
13
9
|
expect do
|
|
@@ -21,14 +17,5 @@ describe Berkshelf::Validator do
|
|
|
21
17
|
subject.validate_files(cookbook)
|
|
22
18
|
end.to_not raise_error
|
|
23
19
|
end
|
|
24
|
-
|
|
25
|
-
it "does not raise an exception with spaces in the path" do
|
|
26
|
-
allow(Dir).to receive(:glob).and_return(["/there are/spaces/in this/recipes/default.rb"])
|
|
27
|
-
allow_any_instance_of(Pathname).to receive(:dirname).and_return("/there are/spaces/in this")
|
|
28
|
-
|
|
29
|
-
expect do
|
|
30
|
-
subject.validate_files(cookbook)
|
|
31
|
-
end.to_not raise_error
|
|
32
|
-
end
|
|
33
20
|
end
|
|
34
21
|
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: 7.
|
|
4
|
+
version: 7.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jamie Winsor
|
|
@@ -9,10 +9,10 @@ authors:
|
|
|
9
9
|
- Michael Ivey
|
|
10
10
|
- Justin Campbell
|
|
11
11
|
- Seth Vargo
|
|
12
|
-
autorequire:
|
|
12
|
+
autorequire:
|
|
13
13
|
bindir: bin
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date:
|
|
15
|
+
date: 2021-02-12 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
18
|
name: mixlib-shellout
|
|
@@ -130,7 +130,7 @@ dependencies:
|
|
|
130
130
|
requirements:
|
|
131
131
|
- - ">="
|
|
132
132
|
- !ruby/object:Gem::Version
|
|
133
|
-
version:
|
|
133
|
+
version: 1.1.4
|
|
134
134
|
- - "<"
|
|
135
135
|
- !ruby/object:Gem::Version
|
|
136
136
|
version: '2.0'
|
|
@@ -140,7 +140,7 @@ dependencies:
|
|
|
140
140
|
requirements:
|
|
141
141
|
- - ">="
|
|
142
142
|
- !ruby/object:Gem::Version
|
|
143
|
-
version:
|
|
143
|
+
version: 1.1.4
|
|
144
144
|
- - "<"
|
|
145
145
|
- !ruby/object:Gem::Version
|
|
146
146
|
version: '2.0'
|
|
@@ -314,21 +314,6 @@ files:
|
|
|
314
314
|
- spec/support/matchers/filepath_matchers.rb
|
|
315
315
|
- spec/support/path_helpers.rb
|
|
316
316
|
- spec/support/shared_examples/formatter.rb
|
|
317
|
-
- spec/tmp/berkshelf/cookbooks/dep-1.0.0/attributes/default.rb
|
|
318
|
-
- spec/tmp/berkshelf/cookbooks/dep-1.0.0/files/default/file.h
|
|
319
|
-
- spec/tmp/berkshelf/cookbooks/dep-1.0.0/metadata.rb
|
|
320
|
-
- spec/tmp/berkshelf/cookbooks/dep-1.0.0/recipes/default.rb
|
|
321
|
-
- spec/tmp/berkshelf/cookbooks/dep-1.0.0/templates/default/template.erb
|
|
322
|
-
- spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/attributes/default.rb
|
|
323
|
-
- spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/files/default/file.h
|
|
324
|
-
- spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/metadata.rb
|
|
325
|
-
- spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/recipes/default.rb
|
|
326
|
-
- spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/templates/default/template.erb
|
|
327
|
-
- spec/tmp/berkshelf/cookbooks/fake-1.0.0/attributes/default.rb
|
|
328
|
-
- spec/tmp/berkshelf/cookbooks/fake-1.0.0/files/default/file.h
|
|
329
|
-
- spec/tmp/berkshelf/cookbooks/fake-1.0.0/metadata.rb
|
|
330
|
-
- spec/tmp/berkshelf/cookbooks/fake-1.0.0/recipes/default.rb
|
|
331
|
-
- spec/tmp/berkshelf/cookbooks/fake-1.0.0/templates/default/template.erb
|
|
332
317
|
- spec/unit/berkshelf/berksfile_spec.rb
|
|
333
318
|
- spec/unit/berkshelf/berkshelf/api_client/connection_spec.rb
|
|
334
319
|
- spec/unit/berkshelf/berkshelf/api_client/remote_cookbook_spec.rb
|
|
@@ -374,7 +359,7 @@ homepage: https://docs.chef.io/berkshelf.html
|
|
|
374
359
|
licenses:
|
|
375
360
|
- Apache-2.0
|
|
376
361
|
metadata: {}
|
|
377
|
-
post_install_message:
|
|
362
|
+
post_install_message:
|
|
378
363
|
rdoc_options: []
|
|
379
364
|
require_paths:
|
|
380
365
|
- lib
|
|
@@ -389,8 +374,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
389
374
|
- !ruby/object:Gem::Version
|
|
390
375
|
version: 2.0.0
|
|
391
376
|
requirements: []
|
|
392
|
-
rubygems_version: 3.1.
|
|
393
|
-
signing_key:
|
|
377
|
+
rubygems_version: 3.1.4
|
|
378
|
+
signing_key:
|
|
394
379
|
specification_version: 4
|
|
395
380
|
summary: Manages a Chef cookbook's dependencies
|
|
396
381
|
test_files: []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|