chef 12.18.31-universal-mingw32 → 12.19.33-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.
Files changed (305) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -4
  3. data/README.md +12 -13
  4. data/VERSION +1 -1
  5. data/acceptance/Gemfile +4 -4
  6. data/acceptance/Gemfile.lock +70 -69
  7. data/chef-universal-mingw32.gemspec +2 -3
  8. data/chef.gemspec +6 -6
  9. data/lib/chef/api_client.rb +8 -10
  10. data/lib/chef/api_client_v1.rb +9 -11
  11. data/lib/chef/application/apply.rb +8 -10
  12. data/lib/chef/application/client.rb +1 -1
  13. data/lib/chef/application/exit_code.rb +3 -5
  14. data/lib/chef/application/knife.rb +2 -2
  15. data/lib/chef/application/windows_service.rb +29 -30
  16. data/lib/chef/application/windows_service_manager.rb +1 -1
  17. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  18. data/lib/chef/audit/control_group_data.rb +1 -1
  19. data/lib/chef/chef_class.rb +1 -0
  20. data/lib/chef/chef_fs/chef_fs_data_store.rb +5 -7
  21. data/lib/chef/chef_fs/command_line.rb +15 -16
  22. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  23. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  24. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  25. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  26. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  27. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  28. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  29. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  30. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  31. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  33. data/lib/chef/chef_fs/file_system.rb +1 -1
  34. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +5 -6
  35. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  36. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  37. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  38. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  39. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  40. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  41. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +18 -24
  42. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  43. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  44. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +10 -12
  45. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  46. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  47. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  48. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  49. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  50. data/lib/chef/cookbook/cookbook_version_loader.rb +25 -31
  51. data/lib/chef/cookbook/metadata.rb +26 -26
  52. data/lib/chef/cookbook/syntax_check.rb +1 -1
  53. data/lib/chef/cookbook_version.rb +3 -3
  54. data/lib/chef/data_bag.rb +1 -1
  55. data/lib/chef/data_bag_item.rb +3 -3
  56. data/lib/chef/data_collector.rb +3 -4
  57. data/lib/chef/decorator.rb +1 -1
  58. data/lib/chef/deprecated.rb +30 -0
  59. data/lib/chef/dsl/audit.rb +2 -2
  60. data/lib/chef/dsl/declare_resource.rb +1 -1
  61. data/lib/chef/dsl/platform_introspection.rb +29 -31
  62. data/lib/chef/dsl/reboot_pending.rb +1 -1
  63. data/lib/chef/dsl/resources.rb +6 -8
  64. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  65. data/lib/chef/environment.rb +9 -11
  66. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  67. data/lib/chef/exceptions.rb +4 -1
  68. data/lib/chef/file_access_control/unix.rb +14 -14
  69. data/lib/chef/file_access_control/windows.rb +1 -1
  70. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  71. data/lib/chef/formatters/error_mapper.rb +6 -6
  72. data/lib/chef/http/api_versions.rb +50 -0
  73. data/lib/chef/http/validate_content_length.rb +2 -2
  74. data/lib/chef/json_compat.rb +6 -10
  75. data/lib/chef/key.rb +5 -5
  76. data/lib/chef/knife.rb +4 -4
  77. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  78. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  79. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  80. data/lib/chef/knife/core/status_presenter.rb +1 -1
  81. data/lib/chef/knife/core/ui.rb +19 -25
  82. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  83. data/lib/chef/knife/deps.rb +32 -34
  84. data/lib/chef/knife/help.rb +1 -1
  85. data/lib/chef/knife/list.rb +1 -1
  86. data/lib/chef/knife/search.rb +2 -2
  87. data/lib/chef/knife/ssh.rb +37 -27
  88. data/lib/chef/knife/ssl_check.rb +1 -1
  89. data/lib/chef/knife/user_delete.rb +1 -1
  90. data/lib/chef/mash.rb +1 -1
  91. data/lib/chef/mixin/command.rb +2 -2
  92. data/lib/chef/mixin/create_path.rb +3 -5
  93. data/lib/chef/mixin/from_file.rb +2 -2
  94. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  95. data/lib/chef/mixin/notifying_block.rb +7 -9
  96. data/lib/chef/mixin/params_validate.rb +3 -3
  97. data/lib/chef/mixin/securable.rb +1 -1
  98. data/lib/chef/mixin/shell_out.rb +23 -3
  99. data/lib/chef/mixin/unformatter.rb +2 -2
  100. data/lib/chef/mixin/uris.rb +4 -6
  101. data/lib/chef/mixin/versioned_api.rb +69 -0
  102. data/lib/chef/mixin/which.rb +25 -8
  103. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  104. data/lib/chef/mixin/xml_escape.rb +3 -5
  105. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  106. data/lib/chef/node.rb +8 -8
  107. data/lib/chef/node/attribute.rb +4 -4
  108. data/lib/chef/node/common_api.rb +5 -7
  109. data/lib/chef/org.rb +10 -12
  110. data/lib/chef/platform/provider_mapping.rb +7 -7
  111. data/lib/chef/platform/query_helpers.rb +1 -1
  112. data/lib/chef/policy_builder/policyfile.rb +1 -0
  113. data/lib/chef/property.rb +31 -0
  114. data/lib/chef/provider/batch.rb +1 -1
  115. data/lib/chef/provider/breakpoint.rb +1 -1
  116. data/lib/chef/provider/cookbook_file.rb +3 -3
  117. data/lib/chef/provider/cron.rb +38 -38
  118. data/lib/chef/provider/deploy.rb +81 -81
  119. data/lib/chef/provider/deploy/revision.rb +3 -5
  120. data/lib/chef/provider/directory.rb +32 -32
  121. data/lib/chef/provider/dsc_resource.rb +22 -6
  122. data/lib/chef/provider/env.rb +28 -28
  123. data/lib/chef/provider/env/windows.rb +1 -1
  124. data/lib/chef/provider/erl_call.rb +13 -13
  125. data/lib/chef/provider/execute.rb +5 -2
  126. data/lib/chef/provider/file.rb +49 -51
  127. data/lib/chef/provider/git.rb +55 -55
  128. data/lib/chef/provider/http_request.rb +36 -36
  129. data/lib/chef/provider/launchd.rb +2 -2
  130. data/lib/chef/provider/link.rb +50 -50
  131. data/lib/chef/provider/log.rb +2 -2
  132. data/lib/chef/provider/mdadm.rb +25 -25
  133. data/lib/chef/provider/mount/aix.rb +2 -2
  134. data/lib/chef/provider/mount/mount.rb +2 -2
  135. data/lib/chef/provider/ohai.rb +1 -1
  136. data/lib/chef/provider/osx_profile.rb +23 -23
  137. data/lib/chef/provider/package.rb +74 -56
  138. data/lib/chef/provider/package/aix.rb +55 -52
  139. data/lib/chef/provider/package/apt.rb +15 -13
  140. data/lib/chef/provider/package/cab.rb +49 -20
  141. data/lib/chef/provider/package/chocolatey.rb +9 -10
  142. data/lib/chef/provider/package/dnf.rb +20 -18
  143. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  144. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  145. data/lib/chef/provider/package/dnf/version.rb +1 -1
  146. data/lib/chef/provider/package/dpkg.rb +8 -9
  147. data/lib/chef/provider/package/easy_install.rb +22 -22
  148. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  149. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  150. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  151. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  152. data/lib/chef/provider/package/homebrew.rb +11 -10
  153. data/lib/chef/provider/package/ips.rb +18 -23
  154. data/lib/chef/provider/package/macports.rb +23 -23
  155. data/lib/chef/provider/package/msu.rb +11 -11
  156. data/lib/chef/provider/package/openbsd.rb +25 -22
  157. data/lib/chef/provider/package/pacman.rb +16 -16
  158. data/lib/chef/provider/package/paludis.rb +26 -27
  159. data/lib/chef/provider/package/portage.rb +22 -22
  160. data/lib/chef/provider/package/powershell.rb +17 -17
  161. data/lib/chef/provider/package/rpm.rb +25 -25
  162. data/lib/chef/provider/package/rubygems.rb +60 -60
  163. data/lib/chef/provider/package/smartos.rb +16 -16
  164. data/lib/chef/provider/package/solaris.rb +44 -44
  165. data/lib/chef/provider/package/windows.rb +3 -3
  166. data/lib/chef/provider/package/windows/exe.rb +6 -6
  167. data/lib/chef/provider/package/windows/msi.rb +6 -6
  168. data/lib/chef/provider/package/yum.rb +318 -268
  169. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  170. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  171. data/lib/chef/provider/package/zypper.rb +11 -11
  172. data/lib/chef/provider/powershell_script.rb +15 -7
  173. data/lib/chef/provider/reboot.rb +10 -10
  174. data/lib/chef/provider/registry_key.rb +39 -39
  175. data/lib/chef/provider/remote_directory.rb +3 -3
  176. data/lib/chef/provider/remote_file.rb +3 -3
  177. data/lib/chef/provider/route.rb +1 -1
  178. data/lib/chef/provider/ruby_block.rb +3 -3
  179. data/lib/chef/provider/script.rb +42 -6
  180. data/lib/chef/provider/service.rb +49 -49
  181. data/lib/chef/provider/service/solaris.rb +1 -1
  182. data/lib/chef/provider/service/systemd.rb +1 -1
  183. data/lib/chef/provider/subversion.rb +39 -39
  184. data/lib/chef/provider/systemd_unit.rb +2 -0
  185. data/lib/chef/provider/template.rb +3 -3
  186. data/lib/chef/provider/user.rb +42 -42
  187. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  188. data/lib/chef/resource.rb +27 -16
  189. data/lib/chef/resource/apt_repository.rb +0 -1
  190. data/lib/chef/resource/chef_gem.rb +1 -1
  191. data/lib/chef/resource/dnf_package.rb +6 -3
  192. data/lib/chef/resource/dsc_resource.rb +9 -1
  193. data/lib/chef/resource/execute.rb +70 -6
  194. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  195. data/lib/chef/resource/freebsd_package.rb +1 -1
  196. data/lib/chef/resource/gem_package.rb +1 -1
  197. data/lib/chef/resource/launchd.rb +13 -1
  198. data/lib/chef/resource/package.rb +2 -2
  199. data/lib/chef/resource/registry_key.rb +1 -1
  200. data/lib/chef/resource/yum_package.rb +12 -3
  201. data/lib/chef/resource/yum_repository.rb +0 -1
  202. data/lib/chef/resource_collection/resource_collection_serialization.rb +3 -3
  203. data/lib/chef/resource_collection/resource_set.rb +2 -2
  204. data/lib/chef/resource_reporter.rb +1 -1
  205. data/lib/chef/run_context.rb +3 -3
  206. data/lib/chef/run_list/run_list_item.rb +1 -1
  207. data/lib/chef/run_list/versioned_recipe_list.rb +6 -6
  208. data/lib/chef/server_api.rb +2 -0
  209. data/lib/chef/server_api_versions.rb +40 -0
  210. data/lib/chef/shell.rb +1 -1
  211. data/lib/chef/shell/ext.rb +3 -3
  212. data/lib/chef/shell/shell_session.rb +1 -1
  213. data/lib/chef/user.rb +9 -11
  214. data/lib/chef/user_v1.rb +9 -11
  215. data/lib/chef/util/diff.rb +1 -1
  216. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  217. data/lib/chef/util/selinux.rb +1 -1
  218. data/lib/chef/util/windows/net_group.rb +18 -30
  219. data/lib/chef/util/windows/net_use.rb +7 -11
  220. data/lib/chef/util/windows/net_user.rb +11 -17
  221. data/lib/chef/util/windows/volume.rb +9 -15
  222. data/lib/chef/version.rb +1 -1
  223. data/lib/chef/version_class.rb +1 -1
  224. data/lib/chef/win32/api.rb +4 -6
  225. data/lib/chef/win32/api/file.rb +25 -31
  226. data/lib/chef/win32/api/installer.rb +2 -2
  227. data/lib/chef/win32/file.rb +4 -6
  228. data/lib/chef/win32/registry.rb +9 -9
  229. data/lib/chef/win32/security.rb +2 -2
  230. data/lib/chef/win32/security/acl.rb +2 -2
  231. data/lib/chef/win32/unicode.rb +2 -2
  232. data/lib/chef/win32/version.rb +1 -1
  233. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  234. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  235. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  236. data/spec/functional/knife/ssh_spec.rb +5 -5
  237. data/spec/functional/resource/batch_spec.rb +5 -1
  238. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  239. data/spec/functional/resource/execute_spec.rb +17 -0
  240. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  241. data/spec/integration/client/client_spec.rb +33 -0
  242. data/spec/integration/recipes/recipe_dsl_spec.rb +58 -58
  243. data/spec/spec_helper.rb +4 -0
  244. data/spec/support/chef_helpers.rb +5 -7
  245. data/spec/support/platform_helpers.rb +6 -0
  246. data/spec/support/platforms/prof/gc.rb +4 -6
  247. data/spec/support/shared/context/client.rb +1 -1
  248. data/spec/support/shared/functional/execute_resource.rb +150 -0
  249. data/spec/support/shared/functional/windows_script.rb +74 -4
  250. data/spec/support/shared/unit/execute_resource.rb +37 -0
  251. data/spec/support/shared/unit/provider/file.rb +10 -0
  252. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +9 -0
  253. data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
  254. data/spec/unit/http/api_versions_spec.rb +69 -0
  255. data/spec/unit/knife/ssh_spec.rb +34 -36
  256. data/spec/unit/mixin/versioned_api_spec.rb +107 -0
  257. data/spec/unit/mixin/which.rb +160 -0
  258. data/spec/unit/platform_spec.rb +28 -1
  259. data/spec/unit/provider/deploy_spec.rb +1 -1
  260. data/spec/unit/provider/directory_spec.rb +10 -0
  261. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  262. data/spec/unit/provider/execute_spec.rb +0 -1
  263. data/spec/unit/provider/launchd_spec.rb +2 -2
  264. data/spec/unit/provider/package/aix_spec.rb +22 -22
  265. data/spec/unit/provider/package/apt_spec.rb +27 -27
  266. data/spec/unit/provider/package/cab_spec.rb +59 -5
  267. data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -0
  268. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  269. data/spec/unit/provider/package/easy_install_spec.rb +18 -18
  270. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  271. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  272. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  273. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  274. data/spec/unit/provider/package/ips_spec.rb +37 -31
  275. data/spec/unit/provider/package/macports_spec.rb +10 -10
  276. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  277. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  278. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  279. data/spec/unit/provider/package/portage_spec.rb +6 -7
  280. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  281. data/spec/unit/provider/package/rubygems_spec.rb +38 -38
  282. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  283. data/spec/unit/provider/package/windows_spec.rb +2 -1
  284. data/spec/unit/provider/package/yum_spec.rb +51 -43
  285. data/spec/unit/provider/package/zypper_spec.rb +34 -34
  286. data/spec/unit/provider/package_spec.rb +8 -0
  287. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  288. data/spec/unit/provider/route_spec.rb +7 -1
  289. data/spec/unit/provider/script_spec.rb +49 -6
  290. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  291. data/spec/unit/resource/execute_spec.rb +214 -0
  292. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  293. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  294. data/spec/unit/resource/package_spec.rb +5 -0
  295. data/spec/unit/resource/yum_package_spec.rb +42 -1
  296. data/spec/unit/resource_reporter_spec.rb +1 -1
  297. data/spec/unit/resource_spec.rb +18 -0
  298. data/spec/unit/server_api_versions_spec.rb +44 -0
  299. data/spec/unit/util/selinux_spec.rb +3 -14
  300. data/spec/unit/win32/error_spec.rb +67 -0
  301. data/spec/unit/win32/security_spec.rb +66 -0
  302. data/tasks/changelog.rb +1 -1
  303. data/tasks/dependencies.rb +20 -4
  304. metadata +39 -18
  305. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
@@ -32,14 +32,14 @@ class Chef
32
32
  PACKAGE_NAME_PATTERN = %r{(?:([^/]+)/)?([^/]+)}
33
33
 
34
34
  def load_current_resource
35
- @current_resource = Chef::Resource::Package.new(@new_resource.name)
36
- @current_resource.package_name(@new_resource.package_name)
35
+ @current_resource = Chef::Resource::Package.new(new_resource.name)
36
+ current_resource.package_name(new_resource.package_name)
37
37
 
38
- category, pkg = %r{^#{PACKAGE_NAME_PATTERN}$}.match(@new_resource.package_name)[1, 2]
38
+ category, pkg = /^#{PACKAGE_NAME_PATTERN}$/.match(new_resource.package_name)[1, 2]
39
39
 
40
40
  globsafe_category = category ? Chef::Util::PathHelper.escape_glob_dir(category) : nil
41
41
  globsafe_pkg = Chef::Util::PathHelper.escape_glob_dir(pkg)
42
- possibilities = Dir["/var/db/pkg/#{globsafe_category || "*"}/#{globsafe_pkg}-*"].map { |d| d.sub(%r{/var/db/pkg/}, "") }
42
+ possibilities = Dir["/var/db/pkg/#{globsafe_category || '*'}/#{globsafe_pkg}-*"].map { |d| d.sub(%r{/var/db/pkg/}, "") }
43
43
  versions = possibilities.map do |entry|
44
44
  if entry =~ %r{[^/]+/#{Regexp.escape(pkg)}\-(\d[\.\d]*[a-z]?((_(alpha|beta|pre|rc|p)\d*)*)?(-r\d+)?)}
45
45
  [$&, $1]
@@ -47,17 +47,17 @@ class Chef
47
47
  end.compact
48
48
 
49
49
  if versions.size > 1
50
- atoms = versions.map { |v| v.first }.sort
50
+ atoms = versions.map(&:first).sort
51
51
  categories = atoms.map { |v| v.split("/")[0] }.uniq
52
52
  if !category && categories.size > 1
53
- raise Chef::Exceptions::Package, "Multiple packages found for #{@new_resource.package_name}: #{atoms.join(" ")}. Specify a category."
53
+ raise Chef::Exceptions::Package, "Multiple packages found for #{new_resource.package_name}: #{atoms.join(' ')}. Specify a category."
54
54
  end
55
55
  elsif versions.size == 1
56
- @current_resource.version(versions.first.last)
57
- Chef::Log.debug("#{@new_resource} current version #{$1}")
56
+ current_resource.version(versions.first.last)
57
+ Chef::Log.debug("#{new_resource} current version #{$1}")
58
58
  end
59
59
 
60
- @current_resource
60
+ current_resource
61
61
  end
62
62
 
63
63
  def parse_emerge(package, txt)
@@ -67,25 +67,25 @@ class Chef
67
67
  txt.each_line do |line|
68
68
  if line =~ /\*\s+#{PACKAGE_NAME_PATTERN}/
69
69
  found_package_name = $&.delete("*").strip
70
- if package =~ /\// #the category is specified
70
+ if package =~ /\// # the category is specified
71
71
  if found_package_name == package
72
72
  availables[found_package_name] = nil
73
73
  end
74
- else #the category is not specified
74
+ else # the category is not specified
75
75
  if found_package_name.split("/").last == package
76
76
  availables[found_package_name] = nil
77
77
  end
78
78
  end
79
79
  end
80
80
 
81
- if line =~ /Latest version available: (.*)/ && availables.has_key?(found_package_name)
81
+ if line =~ /Latest version available: (.*)/ && availables.key?(found_package_name)
82
82
  availables[found_package_name] = $1.strip
83
83
  end
84
84
  end
85
85
 
86
86
  if availables.size > 1
87
87
  # shouldn't happen if a category is specified so just use `package`
88
- raise Chef::Exceptions::Package, "Multiple emerge results found for #{package}: #{availables.keys.join(" ")}. Specify a category."
88
+ raise Chef::Exceptions::Package, "Multiple emerge results found for #{package}: #{availables.keys.join(' ')}. Specify a category."
89
89
  end
90
90
 
91
91
  availables.values.first
@@ -94,8 +94,8 @@ class Chef
94
94
  def candidate_version
95
95
  return @candidate_version if @candidate_version
96
96
 
97
- status = shell_out("emerge --color n --nospinner --search #{@new_resource.package_name.split('/').last}")
98
- available, installed = parse_emerge(@new_resource.package_name, status.stdout)
97
+ status = shell_out_compact("emerge", "--color", "n", "--nospinner", "--search", new_resource.package_name.split("/").last)
98
+ available, installed = parse_emerge(new_resource.package_name, status.stdout)
99
99
  @candidate_version = available
100
100
 
101
101
  unless status.exitstatus == 0
@@ -113,7 +113,7 @@ class Chef
113
113
  pkg = "~#{name}-#{$1}"
114
114
  end
115
115
 
116
- shell_out!( "emerge -g --color n --nospinner --quiet#{expand_options(@new_resource.options)} #{pkg}" )
116
+ shell_out_compact!( "emerge", "-g", "--color", "n", "--nospinner", "--quiet", options, pkg )
117
117
  end
118
118
 
119
119
  def upgrade_package(name, version)
@@ -121,13 +121,13 @@ class Chef
121
121
  end
122
122
 
123
123
  def remove_package(name, version)
124
- if version
125
- pkg = "=#{@new_resource.package_name}-#{version}"
126
- else
127
- pkg = "#{@new_resource.package_name}"
128
- end
124
+ pkg = if version
125
+ "=#{new_resource.package_name}-#{version}"
126
+ else
127
+ new_resource.package_name.to_s
128
+ end
129
129
 
130
- shell_out!( "emerge --unmerge --color n --nospinner --quiet#{expand_options(@new_resource.options)} #{pkg}" )
130
+ shell_out_compact!( "emerge", "--unmerge", "--color", "n", "--nospinner", "--quiet", options, pkg )
131
131
  end
132
132
 
133
133
  def purge_package(name, version)
@@ -36,13 +36,13 @@ class Chef
36
36
 
37
37
  def define_resource_requirements
38
38
  super
39
- if powershell_out("$PSVersionTable.PSVersion.Major").stdout.strip().to_i < 5
39
+ if powershell_out("$PSVersionTable.PSVersion.Major").stdout.strip.to_i < 5
40
40
  raise "Minimum installed Powershell Version required is 5"
41
41
  end
42
42
  requirements.assert(:install) do |a|
43
43
  a.assertion { candidates_exist_for_all_uninstalled? }
44
- a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(", ")}")
45
- a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(", ")} would have been configured")
44
+ a.failure_message(Chef::Exceptions::Package, "No candidate version available for #{packages_missing_candidates.join(', ')}")
45
+ a.whyrun("Assuming a repository that offers #{packages_missing_candidates.join(', ')} would have been configured")
46
46
  end
47
47
  end
48
48
 
@@ -53,7 +53,7 @@ class Chef
53
53
  # Installs the package specified with the version passed else latest version will be installed
54
54
  def install_package(names, versions)
55
55
  names.each_with_index do |name, index|
56
- powershell_out("Install-Package '#{name}' -Force -ForceBootstrap -RequiredVersion #{versions[index]}", { :timeout => @new_resource.timeout })
56
+ powershell_out("Install-Package '#{name}' -Force -ForceBootstrap -RequiredVersion #{versions[index]}", timeout: new_resource.timeout)
57
57
  end
58
58
  end
59
59
 
@@ -61,12 +61,12 @@ class Chef
61
61
  def remove_package(names, versions)
62
62
  names.each_with_index do |name, index|
63
63
  if versions && !versions[index].nil?
64
- powershell_out( "Uninstall-Package '#{name}' -Force -ForceBootstrap -RequiredVersion #{versions[index]}", { :timeout => @new_resource.timeout })
64
+ powershell_out( "Uninstall-Package '#{name}' -Force -ForceBootstrap -RequiredVersion #{versions[index]}", timeout: new_resource.timeout)
65
65
  else
66
66
  version = "0"
67
67
  until version.empty?
68
- version = powershell_out( "(Uninstall-Package '#{name}' -Force -ForceBootstrap | select version | Format-Table -HideTableHeaders | Out-String).Trim()", { :timeout => @new_resource.timeout }).stdout.strip()
69
- if !version.empty?
68
+ version = powershell_out( "(Uninstall-Package '#{name}' -Force -ForceBootstrap | select version | Format-Table -HideTableHeaders | Out-String).Trim()", timeout: new_resource.timeout).stdout.strip
69
+ unless version.empty?
70
70
  Chef::Log.info("Removed package '#{name}' with version #{version}")
71
71
  end
72
72
  end
@@ -78,11 +78,11 @@ class Chef
78
78
  def build_candidate_versions
79
79
  versions = []
80
80
  new_resource.package_name.each_with_index do |name, index|
81
- if new_resource.version && !new_resource.version[index].nil?
82
- version = powershell_out("(Find-Package '#{name}' -RequiredVersion #{new_resource.version[index]} -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", { :timeout => @new_resource.timeout }).stdout.strip()
83
- else
84
- version = powershell_out("(Find-Package '#{name}' -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", { :timeout => @new_resource.timeout }).stdout.strip()
85
- end
81
+ version = if new_resource.version && !new_resource.version[index].nil?
82
+ powershell_out("(Find-Package '#{name}' -RequiredVersion #{new_resource.version[index]} -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", timeout: new_resource.timeout).stdout.strip
83
+ else
84
+ powershell_out("(Find-Package '#{name}' -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", timeout: new_resource.timeout).stdout.strip
85
+ end
86
86
  if version.empty?
87
87
  version = nil
88
88
  end
@@ -95,11 +95,11 @@ class Chef
95
95
  def build_current_versions
96
96
  version_list = []
97
97
  new_resource.package_name.each_with_index do |name, index|
98
- if new_resource.version && !new_resource.version[index].nil?
99
- version = powershell_out("(Get-Package -Name '#{name}' -RequiredVersion #{new_resource.version[index]} -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", { :timeout => @new_resource.timeout }).stdout.strip()
100
- else
101
- version = powershell_out("(Get-Package -Name '#{name}' -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", { :timeout => @new_resource.timeout }).stdout.strip()
102
- end
98
+ version = if new_resource.version && !new_resource.version[index].nil?
99
+ powershell_out("(Get-Package -Name '#{name}' -RequiredVersion #{new_resource.version[index]} -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", timeout: new_resource.timeout).stdout.strip
100
+ else
101
+ powershell_out("(Get-Package -Name '#{name}' -ForceBootstrap -Force | select version | Format-Table -HideTableHeaders | Out-String).Trim()", timeout: new_resource.timeout).stdout.strip
102
+ end
103
103
  if version.empty?
104
104
  version = nil
105
105
  end
@@ -34,13 +34,13 @@ class Chef
34
34
 
35
35
  requirements.assert(:all_actions) do |a|
36
36
  a.assertion { @package_source_exists }
37
- a.failure_message Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
38
- a.whyrun "Assuming package #{@new_resource.name} would have been made available."
37
+ a.failure_message Chef::Exceptions::Package, "Package #{new_resource.name} not found: #{new_resource.source}"
38
+ a.whyrun "Assuming package #{new_resource.name} would have been made available."
39
39
  end
40
40
  requirements.assert(:all_actions) do |a|
41
41
  a.assertion { !@rpm_status.nil? && (@rpm_status.exitstatus == 0 || @rpm_status.exitstatus == 1) }
42
42
  a.failure_message Chef::Exceptions::Package, "Unable to determine current version due to RPM failure. Detail: #{@rpm_status.inspect}"
43
- a.whyrun "Assuming current version would have been determined for package#{@new_resource.name}."
43
+ a.whyrun "Assuming current version would have been determined for package#{new_resource.name}."
44
44
  end
45
45
  end
46
46
 
@@ -48,63 +48,63 @@ class Chef
48
48
  @package_source_provided = true
49
49
  @package_source_exists = true
50
50
 
51
- @current_resource = Chef::Resource::Package.new(@new_resource.name)
52
- @current_resource.package_name(@new_resource.package_name)
51
+ @current_resource = Chef::Resource::Package.new(new_resource.name)
52
+ current_resource.package_name(new_resource.package_name)
53
53
 
54
- if @new_resource.source
55
- unless uri_scheme?(@new_resource.source) || ::File.exists?(@new_resource.source)
54
+ if new_resource.source
55
+ unless uri_scheme?(new_resource.source) || ::File.exist?(new_resource.source)
56
56
  @package_source_exists = false
57
57
  return
58
58
  end
59
59
 
60
- Chef::Log.debug("#{@new_resource} checking rpm status")
61
- shell_out_with_timeout!("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@new_resource.source}").stdout.each_line do |line|
60
+ Chef::Log.debug("#{new_resource} checking rpm status")
61
+ shell_out_compact_timeout!("rpm", "-qp", "--queryformat", "%{NAME} %{VERSION}-%{RELEASE}\n", new_resource.source).stdout.each_line do |line|
62
62
  case line
63
63
  when /^(\S+)\s(\S+)$/
64
- @current_resource.package_name($1)
65
- @new_resource.version($2)
64
+ current_resource.package_name($1)
65
+ new_resource.version($2)
66
66
  @candidate_version = $2
67
67
  end
68
68
  end
69
69
  else
70
- if Array(@new_resource.action).include?(:install)
70
+ if Array(new_resource.action).include?(:install)
71
71
  @package_source_exists = false
72
72
  return
73
73
  end
74
74
  end
75
75
 
76
- Chef::Log.debug("#{@new_resource} checking install state")
77
- @rpm_status = shell_out_with_timeout("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@current_resource.package_name}")
76
+ Chef::Log.debug("#{new_resource} checking install state")
77
+ @rpm_status = shell_out_compact_timeout("rpm", "-q", "--queryformat", "%{NAME} %{VERSION}-%{RELEASE}\n", current_resource.package_name)
78
78
  @rpm_status.stdout.each_line do |line|
79
79
  case line
80
80
  when /^(\S+)\s(\S+)$/
81
- Chef::Log.debug("#{@new_resource} current version is #{$2}")
82
- @current_resource.version($2)
81
+ Chef::Log.debug("#{new_resource} current version is #{$2}")
82
+ current_resource.version($2)
83
83
  end
84
84
  end
85
85
 
86
- @current_resource
86
+ current_resource
87
87
  end
88
88
 
89
89
  def install_package(name, version)
90
- unless @current_resource.version
91
- shell_out_with_timeout!( "rpm #{@new_resource.options} -i #{@new_resource.source}" )
92
- else
90
+ if current_resource.version
93
91
  if allow_downgrade
94
- shell_out_with_timeout!( "rpm #{@new_resource.options} -U --oldpackage #{@new_resource.source}" )
92
+ shell_out_compact_timeout!("rpm", options, "-U", "--oldpackage", new_resource.source)
95
93
  else
96
- shell_out_with_timeout!( "rpm #{@new_resource.options} -U #{@new_resource.source}" )
94
+ shell_out_compact_timeout!("rpm", options, "-U", new_resource.source)
97
95
  end
96
+ else
97
+ shell_out_compact_timeout!("rpm", options, "-i", new_resource.source)
98
98
  end
99
99
  end
100
100
 
101
- alias_method :upgrade_package, :install_package
101
+ alias upgrade_package install_package
102
102
 
103
103
  def remove_package(name, version)
104
104
  if version
105
- shell_out_with_timeout!( "rpm #{@new_resource.options} -e #{name}-#{version}" )
105
+ shell_out_compact_timeout!("rpm", options, "-e", "#{name}-#{version}")
106
106
  else
107
- shell_out_with_timeout!( "rpm #{@new_resource.options} -e #{name}" )
107
+ shell_out_compact_timeout!("rpm", options, "-e", name)
108
108
  end
109
109
  end
110
110
 
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
3
  # Author:: Daniel DeLeo (<dan@chef.io>)
4
- # Copyright:: Copyright 2008-2016, 2010-2016 Chef Software, Inc.
4
+ # Copyright:: Copyright 2008-2016, 2010-2017, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -47,7 +47,7 @@ class Chef
47
47
  # alternate value and overwrite it with the defaults.
48
48
  Gem.configuration
49
49
 
50
- DEFAULT_UNINSTALLER_OPTS = { :ignore => true, :executables => true }
50
+ DEFAULT_UNINSTALLER_OPTS = { ignore: true, executables: true }.freeze
51
51
 
52
52
  ##
53
53
  # The paths where rubygems should search for installed gems.
@@ -133,11 +133,11 @@ class Chef
133
133
  def candidate_version_from_file(gem_dependency, source)
134
134
  spec = spec_from_file(source)
135
135
  if spec.satisfies_requirement?(gem_dependency)
136
- logger.debug { "#{@new_resource} found candidate gem version #{spec.version} from local gem package #{source}" }
136
+ logger.debug { "found candidate gem version #{spec.version} from local gem package #{source}" }
137
137
  spec.version
138
138
  else
139
139
  # This is probably going to end badly...
140
- logger.warn { "#{@new_resource} gem package #{source} does not satisfy the requirements #{gem_dependency}" }
140
+ logger.warn { "gem package #{source} does not satisfy the requirements #{gem_dependency}" }
141
141
  nil
142
142
  end
143
143
  end
@@ -178,11 +178,11 @@ class Chef
178
178
 
179
179
  version = spec && spec.version
180
180
  if version
181
- logger.debug { "#{@new_resource} found gem #{spec.name} version #{version} for platform #{spec.platform} from #{source}" }
181
+ logger.debug { "found gem #{spec.name} version #{version} for platform #{spec.platform} from #{source}" }
182
182
  version
183
183
  else
184
184
  source_list = sources.compact.empty? ? "[#{Gem.sources.to_a.join(', ')}]" : "[#{sources.join(', ')}]"
185
- logger.warn { "#{@new_resource} failed to find gem #{gem_dependency} from #{source_list}" }
185
+ logger.warn { "failed to find gem #{gem_dependency} from #{source_list}" }
186
186
  nil
187
187
  end
188
188
  end
@@ -285,7 +285,7 @@ class Chef
285
285
  # shellout! is a fork/exec which won't work on windows
286
286
  shell_style_paths = shell_out!("#{@gem_binary_location} env gempath").stdout
287
287
  # on windows, the path separator is (usually? always?) semicolon
288
- paths = shell_style_paths.split(::File::PATH_SEPARATOR).map { |path| path.strip }
288
+ paths = shell_style_paths.split(::File::PATH_SEPARATOR).map(&:strip)
289
289
  self.class.gempath_cache[@gem_binary_location] = paths
290
290
  end
291
291
  end
@@ -322,11 +322,11 @@ class Chef
322
322
  self.class.platform_cache[@gem_binary_location]
323
323
  else
324
324
  gem_environment = shell_out!("#{@gem_binary_location} env").stdout
325
- if jruby = gem_environment[JRUBY_PLATFORM]
326
- self.class.platform_cache[@gem_binary_location] = ["ruby", Gem::Platform.new(jruby)]
327
- else
328
- self.class.platform_cache[@gem_binary_location] = Gem.platforms
329
- end
325
+ self.class.platform_cache[@gem_binary_location] = if jruby = gem_environment[JRUBY_PLATFORM]
326
+ ["ruby", Gem::Platform.new(jruby)]
327
+ else
328
+ Gem.platforms
329
+ end
330
330
  end
331
331
  end
332
332
 
@@ -365,17 +365,17 @@ class Chef
365
365
  super
366
366
  @cleanup_gem_env = true
367
367
  if new_resource.gem_binary
368
- if new_resource.options && new_resource.options.kind_of?(Hash)
368
+ if new_resource.options && new_resource.options.is_a?(Hash)
369
369
  msg = "options cannot be given as a hash when using an explicit gem_binary\n"
370
370
  msg << "in #{new_resource} from #{new_resource.source_line}"
371
371
  raise ArgumentError, msg
372
372
  end
373
373
  @gem_env = AlternateGemEnvironment.new(new_resource.gem_binary)
374
- Chef::Log.debug("#{@new_resource} using gem '#{new_resource.gem_binary}'")
375
- elsif is_omnibus? && (!@new_resource.instance_of? Chef::Resource::ChefGem)
374
+ Chef::Log.debug("#{new_resource} using gem '#{new_resource.gem_binary}'")
375
+ elsif is_omnibus? && (!new_resource.instance_of? Chef::Resource::ChefGem)
376
376
  # Opscode Omnibus - The ruby that ships inside omnibus is only used for Chef
377
377
  # Default to installing somewhere more functional
378
- if new_resource.options && new_resource.options.kind_of?(Hash)
378
+ if new_resource.options && new_resource.options.is_a?(Hash)
379
379
  msg = [
380
380
  "Gem options must be passed to gem_package as a string instead of a hash when",
381
381
  "using this installation of Chef because it runs with its own packaged Ruby. A hash",
@@ -386,23 +386,23 @@ class Chef
386
386
  raise ArgumentError, msg
387
387
  end
388
388
  gem_location = find_gem_by_path
389
- @new_resource.gem_binary gem_location
389
+ new_resource.gem_binary gem_location
390
390
  @gem_env = AlternateGemEnvironment.new(gem_location)
391
- Chef::Log.debug("#{@new_resource} using gem '#{gem_location}'")
391
+ Chef::Log.debug("#{new_resource} using gem '#{gem_location}'")
392
392
  else
393
393
  @gem_env = CurrentGemEnvironment.new
394
394
  @cleanup_gem_env = false
395
- Chef::Log.debug("#{@new_resource} using gem from running ruby environment")
395
+ Chef::Log.debug("#{new_resource} using gem from running ruby environment")
396
396
  end
397
397
  end
398
398
 
399
399
  def is_omnibus?
400
400
  if RbConfig::CONFIG["bindir"] =~ %r{/(opscode|chef|chefdk)/embedded/bin}
401
- Chef::Log.debug("#{@new_resource} detected omnibus installation in #{RbConfig::CONFIG['bindir']}")
401
+ Chef::Log.debug("#{new_resource} detected omnibus installation in #{RbConfig::CONFIG['bindir']}")
402
402
  # Omnibus installs to a static path because of linking on unix, find it.
403
403
  true
404
404
  elsif RbConfig::CONFIG["bindir"].sub(/^[\w]:/, "") == "/opscode/chef/embedded/bin"
405
- Chef::Log.debug("#{@new_resource} detected omnibus installation in #{RbConfig::CONFIG['bindir']}")
405
+ Chef::Log.debug("#{new_resource} detected omnibus installation in #{RbConfig::CONFIG['bindir']}")
406
406
  # windows, with the drive letter removed
407
407
  true
408
408
  else
@@ -411,25 +411,25 @@ class Chef
411
411
  end
412
412
 
413
413
  def find_gem_by_path
414
- Chef::Log.debug("#{@new_resource} searching for 'gem' binary in path: #{ENV['PATH']}")
414
+ Chef::Log.debug("#{new_resource} searching for 'gem' binary in path: #{ENV['PATH']}")
415
415
  separator = ::File::ALT_SEPARATOR ? ::File::ALT_SEPARATOR : ::File::SEPARATOR
416
- path_to_first_gem = ENV["PATH"].split(::File::PATH_SEPARATOR).find { |path| ::File.exists?(path + separator + "gem") }
416
+ path_to_first_gem = ENV["PATH"].split(::File::PATH_SEPARATOR).find { |path| ::File.exist?(path + separator + "gem") }
417
417
  raise Chef::Exceptions::FileNotFound, "Unable to find 'gem' binary in path: #{ENV['PATH']}" if path_to_first_gem.nil?
418
418
  path_to_first_gem + separator + "gem"
419
419
  end
420
420
 
421
421
  def gem_dependency
422
- Gem::Dependency.new(@new_resource.package_name, @new_resource.version)
422
+ Gem::Dependency.new(new_resource.package_name, new_resource.version)
423
423
  end
424
424
 
425
425
  def source_is_remote?
426
- return true if @new_resource.source.nil?
427
- scheme = URI.parse(@new_resource.source).scheme
426
+ return true if new_resource.source.nil?
427
+ scheme = URI.parse(new_resource.source).scheme
428
428
  # URI.parse gets confused by MS Windows paths with forward slashes.
429
429
  scheme = nil if scheme =~ /^[a-z]$/
430
430
  %w{http https}.include?(scheme)
431
431
  rescue URI::InvalidURIError
432
- Chef::Log.debug("#{@new_resource} failed to parse source '#{@new_resource.source}' as a URI, assuming a local path")
432
+ Chef::Log.debug("#{new_resource} failed to parse source '#{new_resource.source}' as a URI, assuming a local path")
433
433
  false
434
434
  end
435
435
 
@@ -445,16 +445,16 @@ class Chef
445
445
  # is the current version
446
446
  if !matching_installed_versions.empty?
447
447
  gemspec = matching_installed_versions.send(pos)
448
- logger.debug { "#{@new_resource} found installed gem #{gemspec.name} version #{gemspec.version} matching #{gem_dependency}" }
448
+ logger.debug { "#{new_resource} found installed gem #{gemspec.name} version #{gemspec.version} matching #{gem_dependency}" }
449
449
  gemspec
450
450
  # If no version matching the requirements exists, the latest installed
451
451
  # version is the current version.
452
452
  elsif !all_installed_versions.empty?
453
453
  gemspec = all_installed_versions.send(pos)
454
- logger.debug { "#{@new_resource} newest installed version of gem #{gemspec.name} is #{gemspec.version}" }
454
+ logger.debug { "#{new_resource} newest installed version of gem #{gemspec.name} is #{gemspec.version}" }
455
455
  gemspec
456
456
  else
457
- logger.debug { "#{@new_resource} no installed version found for #{gem_dependency}" }
457
+ logger.debug { "#{new_resource} no installed version found for #{gem_dependency}" }
458
458
  nil
459
459
  end
460
460
  end
@@ -470,21 +470,21 @@ class Chef
470
470
  end
471
471
 
472
472
  def gem_sources
473
- @new_resource.source ? Array(@new_resource.source) : nil
473
+ new_resource.source ? Array(new_resource.source) : nil
474
474
  end
475
475
 
476
476
  def load_current_resource
477
- @current_resource = Chef::Resource::Package::GemPackage.new(@new_resource.name)
478
- @current_resource.package_name(@new_resource.package_name)
477
+ @current_resource = Chef::Resource::Package::GemPackage.new(new_resource.name)
478
+ current_resource.package_name(new_resource.package_name)
479
479
  if current_spec = current_version
480
- @current_resource.version(current_spec.version.to_s)
480
+ current_resource.version(current_spec.version.to_s)
481
481
  end
482
- @current_resource
482
+ current_resource
483
483
  end
484
484
 
485
485
  def cleanup_after_converge
486
486
  if @cleanup_gem_env
487
- logger.debug { "#{@new_resource} resetting gem environment to default" }
487
+ logger.debug { "#{new_resource} resetting gem environment to default" }
488
488
  Gem.clear_paths
489
489
  end
490
490
  end
@@ -494,7 +494,7 @@ class Chef
494
494
  if source_is_remote?
495
495
  @gem_env.candidate_version_from_remote(gem_dependency, *gem_sources).to_s
496
496
  else
497
- @gem_env.candidate_version_from_file(gem_dependency, @new_resource.source).to_s
497
+ @gem_env.candidate_version_from_file(gem_dependency, new_resource.source).to_s
498
498
  end
499
499
  end
500
500
  end
@@ -511,18 +511,18 @@ class Chef
511
511
  # 2. shell out to `gem install` when a String of options is given
512
512
  # 3. use gems API with options if a hash of options is given
513
513
  def install_package(name, version)
514
- if source_is_remote? && @new_resource.gem_binary.nil?
515
- if @new_resource.options.nil?
516
- @gem_env.install(gem_dependency, :sources => gem_sources)
517
- elsif @new_resource.options.kind_of?(Hash)
518
- options = @new_resource.options
514
+ if source_is_remote? && new_resource.gem_binary.nil?
515
+ if new_resource.options.nil?
516
+ @gem_env.install(gem_dependency, sources: gem_sources)
517
+ elsif new_resource.options.is_a?(Hash)
518
+ options = new_resource.options
519
519
  options[:sources] = gem_sources
520
520
  @gem_env.install(gem_dependency, options)
521
521
  else
522
522
  install_via_gem_command(name, version)
523
523
  end
524
- elsif @new_resource.gem_binary.nil?
525
- @gem_env.install(@new_resource.source)
524
+ elsif new_resource.gem_binary.nil?
525
+ @gem_env.install(new_resource.source)
526
526
  else
527
527
  install_via_gem_command(name, version)
528
528
  end
@@ -530,22 +530,22 @@ class Chef
530
530
  end
531
531
 
532
532
  def gem_binary_path
533
- @new_resource.gem_binary || "gem"
533
+ new_resource.gem_binary || "gem"
534
534
  end
535
535
 
536
536
  def install_via_gem_command(name, version)
537
- if @new_resource.source =~ /\.gem$/i
538
- name = @new_resource.source
539
- elsif @new_resource.clear_sources
537
+ if new_resource.source =~ /\.gem$/i
538
+ name = new_resource.source
539
+ elsif new_resource.clear_sources
540
540
  src = " --clear-sources"
541
- src << (@new_resource.source && " --source=#{@new_resource.source}" || "")
541
+ src << (new_resource.source && " --source=#{new_resource.source}" || "")
542
542
  else
543
- src = @new_resource.source && " --source=#{@new_resource.source} --source=#{Chef::Config[:rubygems_url]}"
543
+ src = new_resource.source && " --source=#{new_resource.source} --source=#{Chef::Config[:rubygems_url]}"
544
544
  end
545
- if !version.nil? && version.length > 0
546
- shell_out_with_timeout!("#{gem_binary_path} install #{name} -q --no-rdoc --no-ri -v \"#{version}\"#{src}#{opts}", :env => nil)
545
+ if !version.nil? && !version.empty?
546
+ shell_out_with_timeout!("#{gem_binary_path} install #{name} -q --no-rdoc --no-ri -v \"#{version}\"#{src}#{opts}", env: nil)
547
547
  else
548
- shell_out_with_timeout!("#{gem_binary_path} install \"#{name}\" -q --no-rdoc --no-ri #{src}#{opts}", :env => nil)
548
+ shell_out_with_timeout!("#{gem_binary_path} install \"#{name}\" -q --no-rdoc --no-ri #{src}#{opts}", env: nil)
549
549
  end
550
550
  end
551
551
 
@@ -554,11 +554,11 @@ class Chef
554
554
  end
555
555
 
556
556
  def remove_package(name, version)
557
- if @new_resource.gem_binary.nil?
558
- if @new_resource.options.nil?
557
+ if new_resource.gem_binary.nil?
558
+ if new_resource.options.nil?
559
559
  @gem_env.uninstall(name, version)
560
- elsif @new_resource.options.kind_of?(Hash)
561
- @gem_env.uninstall(name, version, @new_resource.options)
560
+ elsif new_resource.options.is_a?(Hash)
561
+ @gem_env.uninstall(name, version, new_resource.options)
562
562
  else
563
563
  uninstall_via_gem_command(name, version)
564
564
  end
@@ -569,9 +569,9 @@ class Chef
569
569
 
570
570
  def uninstall_via_gem_command(name, version)
571
571
  if version
572
- shell_out_with_timeout!("#{gem_binary_path} uninstall #{name} -q -x -I -v \"#{version}\"#{opts}", :env => nil)
572
+ shell_out_with_timeout!("#{gem_binary_path} uninstall #{name} -q -x -I -v \"#{version}\"#{opts}", env: nil)
573
573
  else
574
- shell_out_with_timeout!("#{gem_binary_path} uninstall #{name} -q -x -I -a#{opts}", :env => nil)
574
+ shell_out_with_timeout!("#{gem_binary_path} uninstall #{name} -q -x -I -a#{opts}", env: nil)
575
575
  end
576
576
  end
577
577
 
@@ -582,7 +582,7 @@ class Chef
582
582
  private
583
583
 
584
584
  def opts
585
- expand_options(@new_resource.options)
585
+ expand_options(new_resource.options)
586
586
  end
587
587
 
588
588
  end