chef 12.18.31-universal-mingw32 → 12.19.33-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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