chef 14.8.12-universal-mingw32 → 14.9.13-universal-mingw32
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/Gemfile +1 -1
- data/chef.gemspec +1 -1
- data/distro/ruby_bin_folder/msvcp140.dll +0 -0
- data/distro/ruby_bin_folder/vcruntime140.dll +0 -0
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/api_client/registration.rb +1 -1
- data/lib/chef/api_client_v1.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +4 -4
- data/lib/chef/client.rb +2 -2
- data/lib/chef/config_fetcher.rb +1 -1
- data/lib/chef/cookbook_uploader.rb +3 -3
- data/lib/chef/cookbook_version.rb +1 -1
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/environment.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +1 -1
- data/lib/chef/http.rb +3 -3
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +1 -1
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/raw.rb +1 -1
- data/lib/chef/knife/search.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +5 -1
- data/lib/chef/node.rb +4 -4
- data/lib/chef/node/mixin/immutablize_array.rb +5 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/org.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/provider/apt_repository.rb +1 -1
- data/lib/chef/provider/group/windows.rb +1 -0
- data/lib/chef/provider/remote_file/content.rb +1 -1
- data/lib/chef/provider/windows_task.rb +2 -2
- data/lib/chef/resource/group.rb +4 -0
- data/lib/chef/resource/homebrew_cask.rb +8 -8
- data/lib/chef/resource/homebrew_tap.rb +6 -6
- data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_request.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +11 -7
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sysctl.rb +6 -6
- data/lib/chef/resource/timezone.rb +17 -1
- data/lib/chef/resource/windows_ad_join.rb +11 -1
- data/lib/chef/resource/windows_certificate.rb +7 -4
- data/lib/chef/resource/windows_printer.rb +3 -3
- data/lib/chef/resource/windows_task.rb +17 -8
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/user.rb +1 -1
- data/lib/chef/user_v1.rb +4 -4
- data/lib/chef/util/windows/net_group.rb +6 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/net.rb +16 -0
- data/lib/chef/win32/net.rb +15 -0
- data/lib/chef/win32/version.rb +15 -15
- data/spec/functional/http/simple_spec.rb +10 -10
- data/spec/functional/resource/timezone_spec.rb +39 -0
- data/spec/functional/resource/windows_task_spec.rb +51 -7
- data/spec/integration/knife/client_create_spec.rb +1 -1
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/cookbook_download_spec.rb +1 -1
- data/spec/integration/knife/cookbook_show_spec.rb +2 -2
- data/spec/integration/knife/data_bag_create_spec.rb +1 -1
- data/spec/integration/knife/environment_create_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/role_create_spec.rb +1 -1
- data/spec/support/shared/context/client.rb +1 -1
- data/spec/support/shared/unit/api_error_inspector.rb +5 -5
- data/spec/support/shared/unit/api_versioning.rb +2 -2
- data/spec/unit/api_client/registration_spec.rb +1 -1
- data/spec/unit/api_client_spec.rb +2 -2
- data/spec/unit/api_client_v1_spec.rb +3 -3
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +2 -2
- data/spec/unit/data_bag_item_spec.rb +1 -1
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +4 -4
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +2 -2
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +1 -1
- data/spec/unit/knife/cookbook_delete_spec.rb +3 -3
- data/spec/unit/knife/data_bag_create_spec.rb +2 -2
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/knife/supermarket_unshare_spec.rb +3 -3
- data/spec/unit/knife_spec.rb +7 -7
- data/spec/unit/mixin/api_version_request_handling_spec.rb +2 -2
- data/spec/unit/node_spec.rb +2 -2
- data/spec/unit/policy_builder/policyfile_spec.rb +2 -2
- data/spec/unit/provider/group/windows_spec.rb +15 -0
- data/spec/unit/provider/remote_file/content_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +17 -0
- data/spec/unit/resource/powershell_package_source_spec.rb +2 -2
- data/spec/unit/resource/windows_certificate.rb +7 -0
- data/spec/unit/resource/windows_task_spec.rb +61 -20
- data/spec/unit/resource_reporter_spec.rb +7 -7
- data/spec/unit/user_v1_spec.rb +2 -2
- metadata +15 -6
data/lib/chef/http.rb
CHANGED
@@ -152,7 +152,7 @@ class Chef
|
|
152
152
|
response.error! unless success_response?(response)
|
153
153
|
return_value
|
154
154
|
|
155
|
-
rescue Net::
|
155
|
+
rescue Net::HTTPClientException => e
|
156
156
|
http_attempts += 1
|
157
157
|
response = e.response
|
158
158
|
if response.kind_of?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
|
@@ -190,7 +190,7 @@ class Chef
|
|
190
190
|
response.error!
|
191
191
|
end
|
192
192
|
tempfile
|
193
|
-
rescue Net::
|
193
|
+
rescue Net::HTTPClientException => e
|
194
194
|
http_attempts += 1
|
195
195
|
response = e.response
|
196
196
|
if response.kind_of?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
|
@@ -245,7 +245,7 @@ class Chef
|
|
245
245
|
end
|
246
246
|
end
|
247
247
|
tempfile
|
248
|
-
rescue Net::
|
248
|
+
rescue Net::HTTPClientException => e
|
249
249
|
http_attempts += 1
|
250
250
|
response = e.response
|
251
251
|
if response.kind_of?(Net::HTTPNotAcceptable) && version_retries - http_attempts > 0
|
data/lib/chef/key.rb
CHANGED
data/lib/chef/knife.rb
CHANGED
@@ -455,7 +455,7 @@ class Chef
|
|
455
455
|
case e
|
456
456
|
when SystemExit
|
457
457
|
raise # make sure exit passes through.
|
458
|
-
when Net::
|
458
|
+
when Net::HTTPClientException, Net::HTTPFatalError
|
459
459
|
humanize_http_exception(e)
|
460
460
|
when OpenSSL::SSL::SSLError
|
461
461
|
ui.error "Could not establish a secure connection to the server."
|
@@ -88,7 +88,7 @@ class Chef
|
|
88
88
|
@available_versions ||= rest.get("cookbooks/#{@cookbook_name}").map do |name, url_and_version|
|
89
89
|
url_and_version["versions"].map { |url_by_version| url_by_version["version"] }
|
90
90
|
end.flatten
|
91
|
-
rescue Net::
|
91
|
+
rescue Net::HTTPClientException => e
|
92
92
|
if e.to_s =~ /^404/
|
93
93
|
ui.error("Cannot find a cookbook named #{@cookbook_name} to delete.")
|
94
94
|
nil
|
@@ -226,7 +226,7 @@ WARNING
|
|
226
226
|
|
227
227
|
def assert_environment_valid!
|
228
228
|
environment
|
229
|
-
rescue Net::
|
229
|
+
rescue Net::HTTPClientException => e
|
230
230
|
if e.response.code.to_s == "404"
|
231
231
|
ui.error "The environment #{config[:environment]} does not exist on the server, aborting."
|
232
232
|
Log.debug(e)
|
@@ -53,7 +53,7 @@ class Chef
|
|
53
53
|
begin
|
54
54
|
rest.get("data/#{@data_bag_name}")
|
55
55
|
ui.info("Data bag #{@data_bag_name} already exists")
|
56
|
-
rescue Net::
|
56
|
+
rescue Net::HTTPClientException => e
|
57
57
|
raise unless e.to_s =~ /^404/
|
58
58
|
# if it doesn't exists, try to create it
|
59
59
|
rest.post("data", { "name" => @data_bag_name })
|
data/lib/chef/knife/raw.rb
CHANGED
@@ -112,7 +112,7 @@ class Chef
|
|
112
112
|
rescue Timeout::Error => e
|
113
113
|
ui.error "Server timeout"
|
114
114
|
exit 1
|
115
|
-
rescue Net::
|
115
|
+
rescue Net::HTTPClientException => e
|
116
116
|
ui.error "Server responded with error #{e.response.code} \"#{e.response.message}\""
|
117
117
|
ui.error "Error Body: #{e.response.body}" if e.response.body && e.response.body != ""
|
118
118
|
exit 1
|
data/lib/chef/knife/search.rb
CHANGED
@@ -109,7 +109,7 @@ class Chef
|
|
109
109
|
result_items << formatted_item
|
110
110
|
result_count += 1
|
111
111
|
end
|
112
|
-
rescue Net::
|
112
|
+
rescue Net::HTTPClientException => e
|
113
113
|
msg = Chef::JSONCompat.from_json(e.response.body)["error"].first
|
114
114
|
ui.error("knife search failed: #{msg}")
|
115
115
|
exit 99
|
@@ -116,7 +116,7 @@ class Chef
|
|
116
116
|
data = noauth_rest.get("#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}")
|
117
117
|
data["category"]
|
118
118
|
rescue => e
|
119
|
-
return "Other" if e.kind_of?(Net::
|
119
|
+
return "Other" if e.kind_of?(Net::HTTPClientException) && e.response.code == "404"
|
120
120
|
ui.fatal("Unable to reach Supermarket: #{e.message}. Increase log verbosity (-VV) for more information.")
|
121
121
|
Chef::Log.trace("\n#{e.backtrace.join("\n")}")
|
122
122
|
exit(1)
|
@@ -48,7 +48,7 @@ class Chef
|
|
48
48
|
|
49
49
|
begin
|
50
50
|
rest.delete "#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}"
|
51
|
-
rescue Net::
|
51
|
+
rescue Net::HTTPClientException => e
|
52
52
|
raise e unless e.message =~ /Forbidden/
|
53
53
|
ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it."
|
54
54
|
exit 1
|
@@ -19,7 +19,7 @@
|
|
19
19
|
class Chef
|
20
20
|
module Mixin
|
21
21
|
module ApiVersionRequestHandling
|
22
|
-
# @param exeception [Net::
|
22
|
+
# @param exeception [Net::HTTPClientException] may or may not contain the x-ops-server-api-version header
|
23
23
|
# supported_client_versions:
|
24
24
|
# @param supported_client_versions [Array<Integer>] The API versions the client supports.
|
25
25
|
#
|
@@ -5,6 +5,10 @@ module ChefNetHTTPExceptionExtensions
|
|
5
5
|
attr_accessor :chef_rest_request
|
6
6
|
end
|
7
7
|
|
8
|
+
unless defined?(Net::HTTPClientException)
|
9
|
+
Net::HTTPClientException = Net::HTTPServerException
|
10
|
+
end
|
11
|
+
|
8
12
|
require "net/http"
|
9
13
|
module Net
|
10
14
|
class HTTPError
|
@@ -13,7 +17,7 @@ module Net
|
|
13
17
|
class HTTPRetriableError
|
14
18
|
include ChefNetHTTPExceptionExtensions
|
15
19
|
end
|
16
|
-
class
|
20
|
+
class HTTPClientException
|
17
21
|
include ChefNetHTTPExceptionExtensions
|
18
22
|
end
|
19
23
|
class HTTPFatalError
|
data/lib/chef/node.rb
CHANGED
@@ -575,7 +575,7 @@ class Chef
|
|
575
575
|
|
576
576
|
def self.find_or_create(node_name)
|
577
577
|
load(node_name)
|
578
|
-
rescue Net::
|
578
|
+
rescue Net::HTTPClientException => e
|
579
579
|
raise unless e.response.code == "404"
|
580
580
|
node = build(node_name)
|
581
581
|
node.create
|
@@ -608,7 +608,7 @@ class Chef
|
|
608
608
|
else
|
609
609
|
chef_server_rest.put("nodes/#{name}", data_for_save)
|
610
610
|
end
|
611
|
-
rescue Net::
|
611
|
+
rescue Net::HTTPClientException => e
|
612
612
|
if e.response.code == "404"
|
613
613
|
chef_server_rest.post("nodes", data_for_save)
|
614
614
|
else
|
@@ -622,7 +622,7 @@ class Chef
|
|
622
622
|
def create
|
623
623
|
chef_server_rest.post("nodes", data_for_save)
|
624
624
|
self
|
625
|
-
rescue Net::
|
625
|
+
rescue Net::HTTPClientException => e
|
626
626
|
# Chef Server before 12.3 rejects node JSON with 'policy_name' or
|
627
627
|
# 'policy_group' keys, but 'policy_name' will be detected first.
|
628
628
|
# Backcompat can be removed in 13.0
|
@@ -655,7 +655,7 @@ class Chef
|
|
655
655
|
trimmed_data = data_for_save_without_policyfile_attrs
|
656
656
|
|
657
657
|
chef_server_rest.put("nodes/#{name}", trimmed_data)
|
658
|
-
rescue Net::
|
658
|
+
rescue Net::HTTPClientException => e
|
659
659
|
raise e unless e.response.code == "404"
|
660
660
|
chef_server_rest.post("nodes", trimmed_data)
|
661
661
|
end
|
@@ -34,6 +34,7 @@ class Chef
|
|
34
34
|
:at,
|
35
35
|
:bsearch,
|
36
36
|
:bsearch_index,
|
37
|
+
:chain,
|
37
38
|
:chunk,
|
38
39
|
:chunk_while,
|
39
40
|
:collect,
|
@@ -43,6 +44,7 @@ class Chef
|
|
43
44
|
:count,
|
44
45
|
:cycle,
|
45
46
|
:detect,
|
47
|
+
:difference,
|
46
48
|
:dig,
|
47
49
|
:drop,
|
48
50
|
:drop_while,
|
@@ -56,6 +58,7 @@ class Chef
|
|
56
58
|
:empty?,
|
57
59
|
:entries,
|
58
60
|
:fetch,
|
61
|
+
:filter,
|
59
62
|
:find,
|
60
63
|
:find_all,
|
61
64
|
:find_index,
|
@@ -117,6 +120,7 @@ class Chef
|
|
117
120
|
:to_plist,
|
118
121
|
:to_set,
|
119
122
|
:transpose,
|
123
|
+
:union,
|
120
124
|
:uniq,
|
121
125
|
:values_at,
|
122
126
|
:zip,
|
@@ -139,6 +143,7 @@ class Chef
|
|
139
143
|
:delete_at,
|
140
144
|
:delete_if,
|
141
145
|
:fill,
|
146
|
+
:filter!,
|
142
147
|
:flatten!,
|
143
148
|
:insert,
|
144
149
|
:keep_if,
|
@@ -30,6 +30,7 @@ class Chef
|
|
30
30
|
:all?,
|
31
31
|
:any?,
|
32
32
|
:assoc,
|
33
|
+
:chain,
|
33
34
|
:chunk,
|
34
35
|
:chunk_while,
|
35
36
|
:collect,
|
@@ -58,6 +59,7 @@ class Chef
|
|
58
59
|
:entries,
|
59
60
|
:fetch,
|
60
61
|
:fetch_values,
|
62
|
+
:filter,
|
61
63
|
:find,
|
62
64
|
:find_all,
|
63
65
|
:find_index,
|
@@ -131,6 +133,7 @@ class Chef
|
|
131
133
|
:default_proc=,
|
132
134
|
:delete,
|
133
135
|
:delete_if,
|
136
|
+
:filter!,
|
134
137
|
:keep_if,
|
135
138
|
:map!,
|
136
139
|
:merge!,
|
data/lib/chef/org.rb
CHANGED
@@ -311,7 +311,7 @@ class Chef
|
|
311
311
|
# @api private
|
312
312
|
def policy
|
313
313
|
@policy ||= api_service.get(policyfile_location)
|
314
|
-
rescue Net::
|
314
|
+
rescue Net::HTTPClientException => e
|
315
315
|
raise ConfigurationError, "Error loading policyfile from `#{policyfile_location}': #{e.class} - #{e.message}"
|
316
316
|
end
|
317
317
|
|
@@ -271,7 +271,7 @@ class Chef
|
|
271
271
|
url = "https://launchpad.net/api/1.0/~#{owner}/+archive/#{repo}"
|
272
272
|
key_id = Chef::HTTP::Simple.new(url).get("signing_key_fingerprint").delete('"')
|
273
273
|
install_key_from_keyserver(key_id, "keyserver.ubuntu.com")
|
274
|
-
rescue Net::
|
274
|
+
rescue Net::HTTPClientException => e
|
275
275
|
raise "Could not access Launchpad ppa API: #{e.message}"
|
276
276
|
end
|
277
277
|
|
@@ -54,7 +54,7 @@ class Chef
|
|
54
54
|
as_uri(source)
|
55
55
|
end
|
56
56
|
raw_file = grab_file_from_uri(uri)
|
57
|
-
rescue SocketError, Errno::ECONNREFUSED, Errno::ENOENT, Errno::EACCES, Timeout::Error, Net::
|
57
|
+
rescue SocketError, Errno::ECONNREFUSED, Errno::ENOENT, Errno::EACCES, Timeout::Error, Net::HTTPClientException, Net::HTTPFatalError, Net::FTPError, Errno::ETIMEDOUT => e
|
58
58
|
logger.warn("#{@new_resource} cannot be downloaded from #{source}: #{e}")
|
59
59
|
if source = sources.shift
|
60
60
|
logger.info("#{@new_resource} trying to download from another mirror")
|
@@ -145,7 +145,7 @@ class Chef
|
|
145
145
|
task.working_directory = new_resource.cwd if new_resource.cwd
|
146
146
|
task.configure_settings(config_settings)
|
147
147
|
task.configure_principals(principal_settings)
|
148
|
-
task.set_account_information(new_resource.user, new_resource.password)
|
148
|
+
task.set_account_information(new_resource.user, new_resource.password, new_resource.interactive_enabled)
|
149
149
|
task.creator = new_resource.user
|
150
150
|
task.description = new_resource.description unless new_resource.description.nil?
|
151
151
|
task.activate(new_resource.task_name)
|
@@ -246,7 +246,7 @@ class Chef
|
|
246
246
|
|
247
247
|
def update_task(task)
|
248
248
|
converge_by("#{new_resource} task updated") do
|
249
|
-
task.set_account_information(new_resource.user, new_resource.password)
|
249
|
+
task.set_account_information(new_resource.user, new_resource.password, new_resource.interactive_enabled)
|
250
250
|
task.application_name = new_resource.command if new_resource.command
|
251
251
|
task.parameters = new_resource.command_arguments if new_resource.command_arguments
|
252
252
|
task.working_directory = new_resource.cwd if new_resource.cwd
|
data/lib/chef/resource/group.rb
CHANGED
@@ -51,6 +51,10 @@ class Chef
|
|
51
51
|
property :non_unique, [ TrueClass, FalseClass ], default: false,
|
52
52
|
description: "Allow gid duplication. May only be used with the Groupadd provider."
|
53
53
|
|
54
|
+
property :comment, String,
|
55
|
+
introduced: "14.9",
|
56
|
+
description: "Specifies a comment to associate with the local group."
|
57
|
+
|
54
58
|
alias_method :users, :members
|
55
59
|
end
|
56
60
|
end
|
@@ -55,11 +55,11 @@ class Chef
|
|
55
55
|
action :install do
|
56
56
|
description "Install an application packaged as a Homebrew cask."
|
57
57
|
|
58
|
-
homebrew_tap "
|
58
|
+
homebrew_tap "homebrew/cask" if new_resource.install_cask
|
59
59
|
|
60
60
|
unless casked?
|
61
|
-
converge_by("install cask #{new_resource.
|
62
|
-
shell_out!("#{new_resource.homebrew_path} cask install #{new_resource.
|
61
|
+
converge_by("install cask #{new_resource.cask_name} #{new_resource.options}") do
|
62
|
+
shell_out!("#{new_resource.homebrew_path} cask install #{new_resource.cask_name} #{new_resource.options}",
|
63
63
|
user: new_resource.owner,
|
64
64
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
65
65
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -70,11 +70,11 @@ class Chef
|
|
70
70
|
action :remove do
|
71
71
|
description "Remove an application packaged as a Homebrew cask."
|
72
72
|
|
73
|
-
homebrew_tap "
|
73
|
+
homebrew_tap "homebrew/cask" if new_resource.install_cask
|
74
74
|
|
75
75
|
if casked?
|
76
|
-
converge_by("uninstall cask #{new_resource.
|
77
|
-
shell_out!("#{new_resource.homebrew_path} cask uninstall #{new_resource.
|
76
|
+
converge_by("uninstall cask #{new_resource.cask_name}") do
|
77
|
+
shell_out!("#{new_resource.homebrew_path} cask uninstall #{new_resource.cask_name}",
|
78
78
|
user: new_resource.owner,
|
79
79
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
80
80
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -88,8 +88,8 @@ class Chef
|
|
88
88
|
alias_method :action_uninstall, :action_remove
|
89
89
|
|
90
90
|
def casked?
|
91
|
-
unscoped_name = new_resource.
|
92
|
-
shell_out!(
|
91
|
+
unscoped_name = new_resource.cask_name.split("/").last
|
92
|
+
shell_out!("#{new_resource.homebrew_path} cask list 2>/dev/null",
|
93
93
|
user: new_resource.owner,
|
94
94
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
95
95
|
cwd: ::Dir.home(new_resource.owner)).stdout.split.include?(unscoped_name)
|
@@ -55,9 +55,9 @@ class Chef
|
|
55
55
|
action :tap do
|
56
56
|
description "Add a Homebrew tap."
|
57
57
|
|
58
|
-
unless tapped?(new_resource.
|
59
|
-
converge_by("tap #{new_resource.
|
60
|
-
shell_out!("#{new_resource.homebrew_path} tap #{new_resource.full ? '--full' : ''} #{new_resource.
|
58
|
+
unless tapped?(new_resource.tap_name)
|
59
|
+
converge_by("tap #{new_resource.tap_name}") do
|
60
|
+
shell_out!("#{new_resource.homebrew_path} tap #{new_resource.full ? '--full' : ''} #{new_resource.tap_name} #{new_resource.url || ''}",
|
61
61
|
user: new_resource.owner,
|
62
62
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
63
63
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -68,9 +68,9 @@ class Chef
|
|
68
68
|
action :untap do
|
69
69
|
description "Remove a Homebrew tap."
|
70
70
|
|
71
|
-
if tapped?(new_resource.
|
72
|
-
converge_by("untap #{new_resource.
|
73
|
-
shell_out!("#{new_resource.homebrew_path} untap #{new_resource.
|
71
|
+
if tapped?(new_resource.tap_name)
|
72
|
+
converge_by("untap #{new_resource.tap_name}") do
|
73
|
+
shell_out!("#{new_resource.homebrew_path} untap #{new_resource.tap_name}",
|
74
74
|
user: new_resource.owner,
|
75
75
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
76
76
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -68,7 +68,7 @@ class Chef
|
|
68
68
|
unless new_resource.force || priv_key_file_valid?(new_resource.path, new_resource.key_pass)
|
69
69
|
converge_by("Create an EC private key #{new_resource.path}") do
|
70
70
|
log "Generating an #{new_resource.key_curve} "\
|
71
|
-
"EC key file at #{new_resource.
|
71
|
+
"EC key file at #{new_resource.path}, this may take some time"
|
72
72
|
|
73
73
|
if new_resource.key_pass
|
74
74
|
unencrypted_ec_key = gen_ec_priv_key(new_resource.key_curve)
|
@@ -89,7 +89,7 @@ class Chef
|
|
89
89
|
|
90
90
|
unless ::File.exist? new_resource.path
|
91
91
|
converge_by("Create CSR #{@new_resource}") do
|
92
|
-
file new_resource.
|
92
|
+
file new_resource.path do
|
93
93
|
owner new_resource.owner unless new_resource.owner.nil?
|
94
94
|
group new_resource.group unless new_resource.group.nil?
|
95
95
|
mode new_resource.mode unless new_resource.mode.nil?
|
@@ -55,10 +55,14 @@ class Chef
|
|
55
55
|
description: "The location where scripts will be published to for this source. Only valid if the provider is 'PowerShellGet'."
|
56
56
|
|
57
57
|
load_current_value do
|
58
|
-
cmd = load_resource_state_script(
|
58
|
+
cmd = load_resource_state_script(source_name)
|
59
59
|
repo = powershell_out!(cmd)
|
60
|
-
|
61
|
-
|
60
|
+
if repo.stdout.empty?
|
61
|
+
current_value_does_not_exist!
|
62
|
+
else
|
63
|
+
status = Chef::JSONCompat.from_json(repo.stdout)
|
64
|
+
end
|
65
|
+
url status["url"]
|
62
66
|
trusted status["trusted"]
|
63
67
|
provider_name status["provider_name"]
|
64
68
|
publish_location status["publish_location"]
|
@@ -113,7 +117,7 @@ class Chef
|
|
113
117
|
|
114
118
|
action_class do
|
115
119
|
def package_source_exists?
|
116
|
-
cmd = powershell_out!("(Get-PackageSource -Name '#{new_resource.source_name}').Name")
|
120
|
+
cmd = powershell_out!("(Get-PackageSource -Name '#{new_resource.source_name}' -WarningAction SilentlyContinue).Name")
|
117
121
|
cmd.stdout.downcase.strip == new_resource.source_name.downcase
|
118
122
|
end
|
119
123
|
|
@@ -145,6 +149,9 @@ class Chef
|
|
145
149
|
|
146
150
|
def load_resource_state_script(name)
|
147
151
|
<<-EOH
|
152
|
+
$PSDefaultParameterValues = @{
|
153
|
+
"*:WarningAction" = "SilentlyContinue"
|
154
|
+
}
|
148
155
|
if(Get-PackageSource -Name '#{name}' -ErrorAction SilentlyContinue) {
|
149
156
|
if ((Get-PackageSource -Name '#{name}').ProviderName -eq 'PowerShellGet') {
|
150
157
|
(Get-PSRepository -Name '#{name}') | Select @{n='source_name';e={$_.Name}}, @{n='url';e={$_.SourceLocation}},
|
@@ -156,9 +163,6 @@ class Chef
|
|
156
163
|
@{n='provider_name';e={$_.ProviderName}}, @{n='trusted';e={$_.IsTrusted}} | ConvertTo-Json
|
157
164
|
}
|
158
165
|
}
|
159
|
-
else {
|
160
|
-
"" | Select source_name, url, provider_name, trusted | ConvertTo-Json
|
161
|
-
}
|
162
166
|
EOH
|
163
167
|
end
|
164
168
|
end
|