chef 16.18.0-universal-mingw32 → 17.0.242-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 (649) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -13
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +6 -8
  7. data/lib/chef/action_collection.rb +1 -1
  8. data/lib/chef/application/base.rb +1 -1
  9. data/lib/chef/application.rb +1 -1
  10. data/lib/chef/applications.rb +0 -1
  11. data/lib/chef/chef_fs/command_line.rb +5 -2
  12. data/lib/chef/chef_fs/file_system.rb +9 -10
  13. data/lib/chef/client.rb +5 -5
  14. data/lib/chef/compliance/default_attributes.rb +4 -3
  15. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  16. data/lib/chef/compliance/reporter/automate.rb +17 -7
  17. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  18. data/lib/chef/compliance/reporter/cli.rb +77 -0
  19. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  20. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  21. data/lib/chef/compliance/runner.rb +65 -27
  22. data/lib/chef/cookbook/gem_installer.rb +1 -5
  23. data/lib/chef/cookbook/synchronizer.rb +3 -5
  24. data/lib/chef/cookbook_loader.rb +2 -4
  25. data/lib/chef/cookbook_uploader.rb +0 -1
  26. data/lib/chef/cookbook_version.rb +4 -26
  27. data/lib/chef/data_bag_item.rb +11 -2
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/delayed_evaluator.rb +4 -0
  30. data/lib/chef/deprecated.rb +6 -12
  31. data/lib/chef/dsl/chef_vault.rb +6 -6
  32. data/lib/chef/dsl/reboot_pending.rb +1 -2
  33. data/lib/chef/exceptions.rb +0 -3
  34. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  35. data/lib/chef/formatters/error_mapper.rb +2 -2
  36. data/lib/chef/group.rb +75 -0
  37. data/lib/chef/http.rb +5 -5
  38. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  39. data/lib/chef/node/attribute.rb +9 -24
  40. data/lib/chef/node/immutable_collections.rb +13 -0
  41. data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
  42. data/lib/chef/node.rb +19 -20
  43. data/lib/chef/org.rb +3 -2
  44. data/lib/chef/policy_builder/policyfile.rb +0 -5
  45. data/lib/chef/property.rb +18 -0
  46. data/lib/chef/provider/cron.rb +1 -1
  47. data/lib/chef/provider/execute.rb +2 -1
  48. data/lib/chef/provider/file.rb +1 -1
  49. data/lib/chef/provider/git.rb +5 -7
  50. data/lib/chef/provider/group/dscl.rb +1 -1
  51. data/lib/chef/provider/group/groupadd.rb +3 -3
  52. data/lib/chef/provider/group/groupmod.rb +3 -3
  53. data/lib/chef/provider/group/pw.rb +3 -3
  54. data/lib/chef/provider/ifconfig.rb +2 -2
  55. data/lib/chef/provider/link.rb +2 -2
  56. data/lib/chef/provider/mount/aix.rb +3 -3
  57. data/lib/chef/provider/mount/mount.rb +5 -5
  58. data/lib/chef/provider/mount/windows.rb +1 -1
  59. data/lib/chef/provider/mount.rb +5 -5
  60. data/lib/chef/provider/package/apt.rb +27 -1
  61. data/lib/chef/provider/package/deb.rb +3 -3
  62. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  63. data/lib/chef/provider/package/portage.rb +2 -2
  64. data/lib/chef/provider/package/powershell.rb +0 -5
  65. data/lib/chef/provider/package/rubygems.rb +9 -15
  66. data/lib/chef/provider/package/windows.rb +2 -4
  67. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  68. data/lib/chef/provider/package.rb +17 -21
  69. data/lib/chef/provider/route.rb +2 -2
  70. data/lib/chef/provider/service/aixinit.rb +1 -1
  71. data/lib/chef/provider/service/debian.rb +1 -1
  72. data/lib/chef/provider/service/freebsd.rb +15 -21
  73. data/lib/chef/provider/service/macosx.rb +4 -4
  74. data/lib/chef/provider/service/systemd.rb +43 -14
  75. data/lib/chef/provider/service/upstart.rb +2 -13
  76. data/lib/chef/provider/service/windows.rb +12 -12
  77. data/lib/chef/provider/service.rb +6 -6
  78. data/lib/chef/provider/subversion.rb +10 -12
  79. data/lib/chef/provider/systemd_unit.rb +36 -10
  80. data/lib/chef/provider/template/content.rb +3 -7
  81. data/lib/chef/provider/user/dscl.rb +1 -1
  82. data/lib/chef/provider/user/mac.rb +17 -20
  83. data/lib/chef/provider/user/pw.rb +1 -1
  84. data/lib/chef/provider/user/windows.rb +1 -1
  85. data/lib/chef/provider/user.rb +2 -2
  86. data/lib/chef/provider/zypper_repository.rb +2 -2
  87. data/lib/chef/provider.rb +1 -1
  88. data/lib/chef/providers.rb +0 -1
  89. data/lib/chef/resource/alternatives.rb +6 -6
  90. data/lib/chef/resource/apt_package.rb +1 -1
  91. data/lib/chef/resource/apt_preference.rb +2 -2
  92. data/lib/chef/resource/apt_repository.rb +6 -6
  93. data/lib/chef/resource/apt_update.rb +3 -2
  94. data/lib/chef/resource/archive_file.rb +8 -9
  95. data/lib/chef/resource/breakpoint.rb +1 -1
  96. data/lib/chef/resource/build_essential.rb +2 -6
  97. data/lib/chef/resource/chef_client_config.rb +2 -2
  98. data/lib/chef/resource/chef_client_cron.rb +4 -4
  99. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  100. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  101. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  102. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  103. data/lib/chef/resource/chef_handler.rb +3 -7
  104. data/lib/chef/resource/chef_sleep.rb +1 -1
  105. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  106. data/lib/chef/resource/chocolatey_config.rb +2 -6
  107. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  108. data/lib/chef/resource/chocolatey_source.rb +4 -10
  109. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  110. data/lib/chef/resource/cron_access.rb +2 -4
  111. data/lib/chef/resource/dmg_package.rb +6 -10
  112. data/lib/chef/resource/dpkg_package.rb +1 -1
  113. data/lib/chef/resource/execute.rb +6 -1
  114. data/lib/chef/resource/file.rb +1 -1
  115. data/lib/chef/resource/group.rb +2 -2
  116. data/lib/chef/resource/homebrew_cask.rb +5 -15
  117. data/lib/chef/resource/homebrew_tap.rb +2 -6
  118. data/lib/chef/resource/hostname.rb +21 -17
  119. data/lib/chef/resource/http_request.rb +1 -1
  120. data/lib/chef/resource/kernel_module.rb +6 -17
  121. data/lib/chef/resource/locale.rb +2 -3
  122. data/lib/chef/resource/lwrp_base.rb +4 -0
  123. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  124. data/lib/chef/resource/mdadm.rb +53 -7
  125. data/lib/chef/resource/mount.rb +3 -2
  126. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  127. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  128. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  129. data/lib/chef/resource/plist.rb +7 -7
  130. data/lib/chef/resource/powershell_script.rb +1 -1
  131. data/lib/chef/resource/remote_file.rb +1 -1
  132. data/lib/chef/resource/rhsm_errata.rb +16 -1
  133. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  134. data/lib/chef/resource/rhsm_register.rb +12 -6
  135. data/lib/chef/resource/rhsm_repo.rb +2 -6
  136. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  137. data/lib/chef/resource/scm/git.rb +1 -1
  138. data/lib/chef/resource/sudo.rb +6 -6
  139. data/lib/chef/resource/support/client.erb +2 -6
  140. data/lib/chef/resource/sysctl.rb +2 -6
  141. data/lib/chef/resource/systemd_unit.rb +3 -3
  142. data/lib/chef/resource/template.rb +1 -1
  143. data/lib/chef/resource/timezone.rb +1 -3
  144. data/lib/chef/resource/user/mac_user.rb +1 -1
  145. data/lib/chef/resource/user_ulimit.rb +2 -3
  146. data/lib/chef/resource/windows_ad_join.rb +2 -6
  147. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  148. data/lib/chef/resource/windows_auto_run.rb +2 -5
  149. data/lib/chef/resource/windows_certificate.rb +207 -73
  150. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  151. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  152. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  153. data/lib/chef/resource/windows_dns_record.rb +2 -6
  154. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  155. data/lib/chef/resource/windows_env.rb +5 -4
  156. data/lib/chef/resource/windows_feature.rb +3 -9
  157. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  158. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  159. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  160. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  161. data/lib/chef/resource/windows_font.rb +2 -4
  162. data/lib/chef/resource/windows_pagefile.rb +2 -6
  163. data/lib/chef/resource/windows_path.rb +2 -2
  164. data/lib/chef/resource/windows_printer.rb +4 -4
  165. data/lib/chef/resource/windows_printer_port.rb +6 -6
  166. data/lib/chef/resource/windows_security_policy.rb +9 -12
  167. data/lib/chef/resource/windows_share.rb +14 -21
  168. data/lib/chef/resource/windows_shortcut.rb +4 -6
  169. data/lib/chef/resource/windows_task.rb +17 -5
  170. data/lib/chef/resource/windows_uac.rb +2 -4
  171. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  172. data/lib/chef/resource/windows_workgroup.rb +1 -2
  173. data/lib/chef/resource.rb +1 -1
  174. data/lib/chef/resource_reporter.rb +1 -1
  175. data/lib/chef/resources.rb +0 -1
  176. data/lib/chef/shell/ext.rb +3 -3
  177. data/lib/chef/user.rb +0 -1
  178. data/lib/chef/user_v1.rb +3 -4
  179. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  180. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  181. data/lib/chef/version.rb +1 -1
  182. data/lib/chef/win32/api.rb +2 -9
  183. data/lib/chef/win32/registry.rb +4 -2
  184. data/lib/chef/win32/version.rb +1 -2
  185. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  186. data/spec/data/lwrp/resources/bar.rb +2 -0
  187. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  188. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  189. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  190. data/spec/data/lwrp/resources/foo.rb +2 -0
  191. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  192. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  193. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  194. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  195. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  196. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  197. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  198. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  199. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  200. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  201. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  202. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  203. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  204. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  205. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  206. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  207. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  208. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  209. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  210. data/spec/functional/resource/apt_package_spec.rb +1 -1
  211. data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
  212. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  213. data/spec/functional/resource/group_spec.rb +1 -5
  214. data/spec/functional/resource/link_spec.rb +0 -8
  215. data/spec/functional/resource/registry_spec.rb +8 -8
  216. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  217. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  218. data/spec/functional/version_spec.rb +1 -1
  219. data/spec/functional/win32/registry_spec.rb +1 -1
  220. data/spec/integration/client/client_spec.rb +5 -2
  221. data/spec/integration/client/exit_code_spec.rb +1 -1
  222. data/spec/integration/client/ipv6_spec.rb +1 -1
  223. data/spec/integration/compliance/compliance_spec.rb +1 -1
  224. data/spec/integration/ohai/ohai_spec.rb +7 -6
  225. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  226. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  227. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  228. data/spec/integration/recipes/notifies_spec.rb +15 -1
  229. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  230. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  231. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  232. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  233. data/spec/spec_helper.rb +10 -13
  234. data/spec/support/chef_helpers.rb +0 -16
  235. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  236. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  237. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  238. data/spec/support/matchers/leak.rb +7 -9
  239. data/spec/support/platform_helpers.rb +1 -8
  240. data/spec/support/shared/integration/integration_helper.rb +0 -1
  241. data/spec/support/shared/unit/script_resource.rb +2 -2
  242. data/spec/unit/application/solo_spec.rb +2 -2
  243. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  244. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  245. data/spec/unit/client_spec.rb +4 -4
  246. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  247. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  248. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  249. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  250. data/spec/unit/compliance/runner_spec.rb +30 -4
  251. data/spec/unit/cookbook_version_spec.rb +0 -52
  252. data/spec/unit/data_bag_item_spec.rb +1 -6
  253. data/spec/unit/data_collector_spec.rb +2 -71
  254. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  255. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  256. data/spec/unit/lwrp_spec.rb +1 -1
  257. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  258. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  259. data/spec/unit/node/attribute_spec.rb +1 -1
  260. data/spec/unit/node_spec.rb +78 -0
  261. data/spec/unit/org_group_spec.rb +45 -0
  262. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  263. data/spec/unit/property_spec.rb +23 -22
  264. data/spec/unit/provider/cron_spec.rb +1 -1
  265. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  266. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  267. data/spec/unit/provider/group/pw_spec.rb +2 -2
  268. data/spec/unit/provider/group_spec.rb +1 -1
  269. data/spec/unit/provider/package/apt_spec.rb +84 -18
  270. data/spec/unit/provider/package/deb_spec.rb +3 -3
  271. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  272. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  273. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  274. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  275. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  276. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  277. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  278. data/spec/unit/provider/service/windows_spec.rb +2 -2
  279. data/spec/unit/provider/subversion_spec.rb +2 -2
  280. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  281. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  282. data/spec/unit/provider_spec.rb +0 -8
  283. data/spec/unit/resource/archive_file_spec.rb +1 -13
  284. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
  285. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  286. data/spec/unit/resource/mount_spec.rb +0 -10
  287. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  288. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  289. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  290. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  291. data/spec/unit/resource/windows_task_spec.rb +1 -1
  292. data/spec/unit/resource_spec.rb +2 -7
  293. data/spec/unit/user_spec.rb +1 -1
  294. data/spec/unit/user_v1_spec.rb +6 -4
  295. data/tasks/rspec.rb +15 -7
  296. metadata +19 -382
  297. data/bin/knife +0 -24
  298. data/lib/chef/application/knife.rb +0 -234
  299. data/lib/chef/application/windows_service.rb +0 -338
  300. data/lib/chef/application/windows_service_manager.rb +0 -205
  301. data/lib/chef/chef_fs/knife.rb +0 -160
  302. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  303. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  304. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  305. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  306. data/lib/chef/knife/acl_add.rb +0 -57
  307. data/lib/chef/knife/acl_base.rb +0 -183
  308. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  309. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  310. data/lib/chef/knife/acl_remove.rb +0 -62
  311. data/lib/chef/knife/acl_show.rb +0 -56
  312. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  313. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  314. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  315. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  316. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  317. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  318. data/lib/chef/knife/bootstrap.rb +0 -1192
  319. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  320. data/lib/chef/knife/client_create.rb +0 -101
  321. data/lib/chef/knife/client_delete.rb +0 -62
  322. data/lib/chef/knife/client_edit.rb +0 -52
  323. data/lib/chef/knife/client_key_create.rb +0 -73
  324. data/lib/chef/knife/client_key_delete.rb +0 -80
  325. data/lib/chef/knife/client_key_edit.rb +0 -83
  326. data/lib/chef/knife/client_key_list.rb +0 -73
  327. data/lib/chef/knife/client_key_show.rb +0 -80
  328. data/lib/chef/knife/client_list.rb +0 -41
  329. data/lib/chef/knife/client_reregister.rb +0 -58
  330. data/lib/chef/knife/client_show.rb +0 -48
  331. data/lib/chef/knife/config_get.rb +0 -39
  332. data/lib/chef/knife/config_get_profile.rb +0 -37
  333. data/lib/chef/knife/config_list.rb +0 -139
  334. data/lib/chef/knife/config_list_profiles.rb +0 -37
  335. data/lib/chef/knife/config_show.rb +0 -127
  336. data/lib/chef/knife/config_use.rb +0 -61
  337. data/lib/chef/knife/config_use_profile.rb +0 -47
  338. data/lib/chef/knife/configure.rb +0 -150
  339. data/lib/chef/knife/configure_client.rb +0 -48
  340. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  341. data/lib/chef/knife/cookbook_delete.rb +0 -151
  342. data/lib/chef/knife/cookbook_download.rb +0 -142
  343. data/lib/chef/knife/cookbook_list.rb +0 -47
  344. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  345. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  346. data/lib/chef/knife/cookbook_show.rb +0 -98
  347. data/lib/chef/knife/cookbook_upload.rb +0 -292
  348. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  349. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  350. data/lib/chef/knife/core/formatting_options.rb +0 -49
  351. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  352. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  353. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  354. data/lib/chef/knife/core/node_editor.rb +0 -130
  355. data/lib/chef/knife/core/node_presenter.rb +0 -133
  356. data/lib/chef/knife/core/object_loader.rb +0 -115
  357. data/lib/chef/knife/core/status_presenter.rb +0 -147
  358. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  359. data/lib/chef/knife/core/text_formatter.rb +0 -85
  360. data/lib/chef/knife/core/ui.rb +0 -338
  361. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  362. data/lib/chef/knife/data_bag_create.rb +0 -81
  363. data/lib/chef/knife/data_bag_delete.rb +0 -49
  364. data/lib/chef/knife/data_bag_edit.rb +0 -74
  365. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  366. data/lib/chef/knife/data_bag_list.rb +0 -42
  367. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  368. data/lib/chef/knife/data_bag_show.rb +0 -69
  369. data/lib/chef/knife/delete.rb +0 -125
  370. data/lib/chef/knife/deps.rb +0 -156
  371. data/lib/chef/knife/diff.rb +0 -83
  372. data/lib/chef/knife/download.rb +0 -84
  373. data/lib/chef/knife/edit.rb +0 -88
  374. data/lib/chef/knife/environment_compare.rb +0 -128
  375. data/lib/chef/knife/environment_create.rb +0 -52
  376. data/lib/chef/knife/environment_delete.rb +0 -44
  377. data/lib/chef/knife/environment_edit.rb +0 -44
  378. data/lib/chef/knife/environment_from_file.rb +0 -84
  379. data/lib/chef/knife/environment_list.rb +0 -41
  380. data/lib/chef/knife/environment_show.rb +0 -47
  381. data/lib/chef/knife/exec.rb +0 -99
  382. data/lib/chef/knife/group_add.rb +0 -55
  383. data/lib/chef/knife/group_create.rb +0 -49
  384. data/lib/chef/knife/group_destroy.rb +0 -53
  385. data/lib/chef/knife/group_list.rb +0 -43
  386. data/lib/chef/knife/group_remove.rb +0 -56
  387. data/lib/chef/knife/group_show.rb +0 -49
  388. data/lib/chef/knife/key_create.rb +0 -112
  389. data/lib/chef/knife/key_create_base.rb +0 -50
  390. data/lib/chef/knife/key_delete.rb +0 -55
  391. data/lib/chef/knife/key_edit.rb +0 -118
  392. data/lib/chef/knife/key_edit_base.rb +0 -55
  393. data/lib/chef/knife/key_list.rb +0 -90
  394. data/lib/chef/knife/key_list_base.rb +0 -45
  395. data/lib/chef/knife/key_show.rb +0 -53
  396. data/lib/chef/knife/list.rb +0 -177
  397. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  398. data/lib/chef/knife/node_create.rb +0 -47
  399. data/lib/chef/knife/node_delete.rb +0 -46
  400. data/lib/chef/knife/node_edit.rb +0 -70
  401. data/lib/chef/knife/node_environment_set.rb +0 -53
  402. data/lib/chef/knife/node_from_file.rb +0 -51
  403. data/lib/chef/knife/node_list.rb +0 -44
  404. data/lib/chef/knife/node_policy_set.rb +0 -79
  405. data/lib/chef/knife/node_run_list_add.rb +0 -104
  406. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  407. data/lib/chef/knife/node_run_list_set.rb +0 -66
  408. data/lib/chef/knife/node_show.rb +0 -63
  409. data/lib/chef/knife/null.rb +0 -12
  410. data/lib/chef/knife/raw.rb +0 -123
  411. data/lib/chef/knife/recipe_list.rb +0 -32
  412. data/lib/chef/knife/rehash.rb +0 -50
  413. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  414. data/lib/chef/knife/role_create.rb +0 -53
  415. data/lib/chef/knife/role_delete.rb +0 -46
  416. data/lib/chef/knife/role_edit.rb +0 -45
  417. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  418. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  419. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  420. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  421. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  422. data/lib/chef/knife/role_from_file.rb +0 -51
  423. data/lib/chef/knife/role_list.rb +0 -42
  424. data/lib/chef/knife/role_run_list_add.rb +0 -87
  425. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  426. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  427. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  428. data/lib/chef/knife/role_run_list_set.rb +0 -69
  429. data/lib/chef/knife/role_show.rb +0 -48
  430. data/lib/chef/knife/search.rb +0 -194
  431. data/lib/chef/knife/serve.rb +0 -65
  432. data/lib/chef/knife/show.rb +0 -72
  433. data/lib/chef/knife/ssh.rb +0 -645
  434. data/lib/chef/knife/ssl_check.rb +0 -284
  435. data/lib/chef/knife/ssl_fetch.rb +0 -161
  436. data/lib/chef/knife/status.rb +0 -95
  437. data/lib/chef/knife/supermarket_download.rb +0 -121
  438. data/lib/chef/knife/supermarket_install.rb +0 -192
  439. data/lib/chef/knife/supermarket_list.rb +0 -76
  440. data/lib/chef/knife/supermarket_search.rb +0 -53
  441. data/lib/chef/knife/supermarket_share.rb +0 -166
  442. data/lib/chef/knife/supermarket_show.rb +0 -66
  443. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  444. data/lib/chef/knife/tag_create.rb +0 -52
  445. data/lib/chef/knife/tag_delete.rb +0 -60
  446. data/lib/chef/knife/tag_list.rb +0 -47
  447. data/lib/chef/knife/upload.rb +0 -86
  448. data/lib/chef/knife/user_create.rb +0 -107
  449. data/lib/chef/knife/user_delete.rb +0 -44
  450. data/lib/chef/knife/user_dissociate.rb +0 -42
  451. data/lib/chef/knife/user_edit.rb +0 -52
  452. data/lib/chef/knife/user_invite_add.rb +0 -43
  453. data/lib/chef/knife/user_invite_list.rb +0 -34
  454. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  455. data/lib/chef/knife/user_key_create.rb +0 -73
  456. data/lib/chef/knife/user_key_delete.rb +0 -80
  457. data/lib/chef/knife/user_key_edit.rb +0 -83
  458. data/lib/chef/knife/user_key_list.rb +0 -73
  459. data/lib/chef/knife/user_key_show.rb +0 -80
  460. data/lib/chef/knife/user_list.rb +0 -42
  461. data/lib/chef/knife/user_reregister.rb +0 -59
  462. data/lib/chef/knife/user_show.rb +0 -48
  463. data/lib/chef/knife/xargs.rb +0 -282
  464. data/lib/chef/knife/yaml_convert.rb +0 -91
  465. data/lib/chef/knife.rb +0 -665
  466. data/lib/chef/resource/user/dscl_user.rb +0 -35
  467. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  468. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  469. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  470. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  471. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  472. data/spec/functional/knife/configure_spec.rb +0 -33
  473. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  474. data/spec/functional/knife/exec_spec.rb +0 -55
  475. data/spec/functional/knife/rehash_spec.rb +0 -39
  476. data/spec/functional/knife/smoke_test.rb +0 -42
  477. data/spec/functional/knife/ssh_spec.rb +0 -352
  478. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  479. data/spec/functional/resource/windows_service_spec.rb +0 -105
  480. data/spec/functional/win32/service_manager_spec.rb +0 -220
  481. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  482. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  483. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  484. data/spec/integration/knife/chefignore_spec.rb +0 -301
  485. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  486. data/spec/integration/knife/client_create_spec.rb +0 -70
  487. data/spec/integration/knife/client_delete_spec.rb +0 -64
  488. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  489. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  490. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  491. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  492. data/spec/integration/knife/client_list_spec.rb +0 -49
  493. data/spec/integration/knife/client_show_spec.rb +0 -37
  494. data/spec/integration/knife/common_options_spec.rb +0 -174
  495. data/spec/integration/knife/config_list_spec.rb +0 -220
  496. data/spec/integration/knife/config_show_spec.rb +0 -192
  497. data/spec/integration/knife/config_use_spec.rb +0 -198
  498. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  499. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  500. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  501. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  502. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  503. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  504. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  505. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  506. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  507. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  508. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  509. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  510. data/spec/integration/knife/delete_spec.rb +0 -1018
  511. data/spec/integration/knife/deps_spec.rb +0 -703
  512. data/spec/integration/knife/diff_spec.rb +0 -605
  513. data/spec/integration/knife/download_spec.rb +0 -1336
  514. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  515. data/spec/integration/knife/environment_create_spec.rb +0 -41
  516. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  517. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  518. data/spec/integration/knife/environment_list_spec.rb +0 -42
  519. data/spec/integration/knife/environment_show_spec.rb +0 -77
  520. data/spec/integration/knife/list_spec.rb +0 -1060
  521. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  522. data/spec/integration/knife/node_create_spec.rb +0 -47
  523. data/spec/integration/knife/node_delete_spec.rb +0 -48
  524. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  525. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  526. data/spec/integration/knife/node_list_spec.rb +0 -45
  527. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  528. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  529. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  530. data/spec/integration/knife/node_show_spec.rb +0 -36
  531. data/spec/integration/knife/raw_spec.rb +0 -297
  532. data/spec/integration/knife/redirection_spec.rb +0 -64
  533. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  534. data/spec/integration/knife/role_create_spec.rb +0 -41
  535. data/spec/integration/knife/role_delete_spec.rb +0 -48
  536. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  537. data/spec/integration/knife/role_list_spec.rb +0 -45
  538. data/spec/integration/knife/role_show_spec.rb +0 -51
  539. data/spec/integration/knife/search_node_spec.rb +0 -40
  540. data/spec/integration/knife/serve_spec.rb +0 -92
  541. data/spec/integration/knife/show_spec.rb +0 -197
  542. data/spec/integration/knife/upload_spec.rb +0 -1616
  543. data/spec/support/shared/functional/knife.rb +0 -37
  544. data/spec/support/shared/functional/win32_service.rb +0 -57
  545. data/spec/support/shared/integration/knife_support.rb +0 -192
  546. data/spec/support/shared/unit/knife_shared.rb +0 -39
  547. data/spec/unit/application/knife_spec.rb +0 -241
  548. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  549. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  550. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  551. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  552. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  553. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  554. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  555. data/spec/unit/knife/client_create_spec.rb +0 -169
  556. data/spec/unit/knife/client_delete_spec.rb +0 -99
  557. data/spec/unit/knife/client_edit_spec.rb +0 -53
  558. data/spec/unit/knife/client_list_spec.rb +0 -34
  559. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  560. data/spec/unit/knife/client_show_spec.rb +0 -52
  561. data/spec/unit/knife/configure_client_spec.rb +0 -81
  562. data/spec/unit/knife/configure_spec.rb +0 -190
  563. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  564. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  565. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  566. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  567. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  568. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  569. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  570. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  571. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  572. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  573. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  574. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  575. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  576. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  577. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  578. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  579. data/spec/unit/knife/core/ui_spec.rb +0 -656
  580. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  581. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  582. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  583. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  584. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  585. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  586. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  587. data/spec/unit/knife/environment_create_spec.rb +0 -91
  588. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  589. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  590. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  591. data/spec/unit/knife/environment_list_spec.rb +0 -54
  592. data/spec/unit/knife/environment_show_spec.rb +0 -52
  593. data/spec/unit/knife/key_create_spec.rb +0 -223
  594. data/spec/unit/knife/key_delete_spec.rb +0 -133
  595. data/spec/unit/knife/key_edit_spec.rb +0 -264
  596. data/spec/unit/knife/key_helper.rb +0 -74
  597. data/spec/unit/knife/key_list_spec.rb +0 -216
  598. data/spec/unit/knife/key_show_spec.rb +0 -126
  599. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  600. data/spec/unit/knife/node_delete_spec.rb +0 -77
  601. data/spec/unit/knife/node_edit_spec.rb +0 -116
  602. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  603. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  604. data/spec/unit/knife/node_list_spec.rb +0 -62
  605. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  606. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  607. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  608. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  609. data/spec/unit/knife/node_show_spec.rb +0 -65
  610. data/spec/unit/knife/raw_spec.rb +0 -43
  611. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  612. data/spec/unit/knife/role_create_spec.rb +0 -80
  613. data/spec/unit/knife/role_delete_spec.rb +0 -67
  614. data/spec/unit/knife/role_edit_spec.rb +0 -77
  615. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  616. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  617. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  618. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  619. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  620. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  621. data/spec/unit/knife/role_list_spec.rb +0 -54
  622. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  623. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  624. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  625. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  626. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  627. data/spec/unit/knife/role_show_spec.rb +0 -59
  628. data/spec/unit/knife/ssh_spec.rb +0 -403
  629. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  630. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  631. data/spec/unit/knife/status_spec.rb +0 -112
  632. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  633. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  634. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  635. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  636. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  637. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  638. data/spec/unit/knife/tag_create_spec.rb +0 -23
  639. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  640. data/spec/unit/knife/tag_list_spec.rb +0 -23
  641. data/spec/unit/knife/user_create_spec.rb +0 -184
  642. data/spec/unit/knife/user_delete_spec.rb +0 -46
  643. data/spec/unit/knife/user_edit_spec.rb +0 -48
  644. data/spec/unit/knife/user_list_spec.rb +0 -36
  645. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  646. data/spec/unit/knife/user_show_spec.rb +0 -46
  647. data/spec/unit/knife_spec.rb +0 -634
  648. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  649. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,282 +0,0 @@
1
- #
2
- # License:: Apache License, Version 2.0
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- #
16
-
17
- require_relative "../chef_fs/knife"
18
-
19
- class Chef
20
- class Knife
21
- class Xargs < Chef::ChefFS::Knife
22
- banner "knife xargs [COMMAND] (options)"
23
-
24
- category "path-based"
25
-
26
- deps do
27
- require_relative "../chef_fs/file_system"
28
- require_relative "../chef_fs/file_system/exceptions"
29
- end
30
-
31
- # TODO modify to remote-only / local-only pattern (more like delete)
32
- option :local,
33
- long: "--local",
34
- boolean: true,
35
- description: "Xargs local files instead of remote."
36
-
37
- option :patterns,
38
- long: "--pattern [PATTERN]",
39
- short: "-p [PATTERN]",
40
- description: "Pattern on command line (if these are not specified, a list of patterns is expected on standard input). Multiple patterns may be passed in this way.",
41
- arg_arity: [1, -1]
42
-
43
- option :diff,
44
- long: "--[no-]diff",
45
- default: true,
46
- boolean: true,
47
- description: "Whether to show a diff when files change (default: true)."
48
-
49
- option :dry_run,
50
- long: "--dry-run",
51
- boolean: true,
52
- description: "Prevents changes from actually being uploaded to the server."
53
-
54
- option :force,
55
- long: "--[no-]force",
56
- boolean: true,
57
- default: false,
58
- description: "Force upload of files even if they are not changed (quicker and harmless, but doesn't print out what it changed)."
59
-
60
- option :replace_first,
61
- long: "--replace-first REPLACESTR",
62
- short: "-J REPLACESTR",
63
- description: "String to replace with filenames. -J will only replace the FIRST occurrence of the replacement string."
64
-
65
- option :replace_all,
66
- long: "--replace REPLACESTR",
67
- short: "-I REPLACESTR",
68
- description: "String to replace with filenames. -I will replace ALL occurrence of the replacement string."
69
-
70
- option :max_arguments_per_command,
71
- long: "--max-args MAXARGS",
72
- short: "-n MAXARGS",
73
- description: "Maximum number of arguments per command line."
74
-
75
- option :max_command_line,
76
- long: "--max-chars LENGTH",
77
- short: "-s LENGTH",
78
- description: "Maximum size of command line, in characters."
79
-
80
- option :verbose_commands,
81
- short: "-t",
82
- description: "Print command to be run on the command line."
83
-
84
- option :null_separator,
85
- short: "-0",
86
- boolean: true,
87
- description: "Use the NULL character (\0) as a separator, instead of whitespace."
88
-
89
- def run
90
- error = false
91
- # Get the matches (recursively)
92
- files = []
93
- pattern_args_from(get_patterns).each do |pattern|
94
- Chef::ChefFS::FileSystem.list(config[:local] ? local_fs : chef_fs, pattern).each do |result|
95
- if result.dir?
96
- # TODO option to include directories
97
- ui.warn "#{format_path(result)}: is a directory. Will not run #{command} on it."
98
- else
99
- files << result
100
- ran = false
101
-
102
- # If the command would be bigger than max command line, back it off a bit
103
- # and run a slightly smaller command (with one less arg)
104
- if config[:max_command_line]
105
- command, tempfiles = create_command(files)
106
- begin
107
- if command.length > config[:max_command_line].to_i
108
- if files.length > 1
109
- command, tempfiles_minus_one = create_command(files[0..-2])
110
- begin
111
- error = true if xargs_files(command, tempfiles_minus_one)
112
- files = [ files[-1] ]
113
- ran = true
114
- ensure
115
- destroy_tempfiles(tempfiles)
116
- end
117
- else
118
- error = true if xargs_files(command, tempfiles)
119
- files = [ ]
120
- ran = true
121
- end
122
- end
123
- ensure
124
- destroy_tempfiles(tempfiles)
125
- end
126
- end
127
-
128
- # If the command has hit the limit for the # of arguments, run it
129
- if !ran && config[:max_arguments_per_command] && files.size >= config[:max_arguments_per_command].to_i
130
- command, tempfiles = create_command(files)
131
- begin
132
- error = true if xargs_files(command, tempfiles)
133
- files = []
134
- ran = true
135
- ensure
136
- destroy_tempfiles(tempfiles)
137
- end
138
- end
139
- end
140
- end
141
- end
142
-
143
- # Any leftovers commands shall be run
144
- if files.size > 0
145
- command, tempfiles = create_command(files)
146
- begin
147
- error = true if xargs_files(command, tempfiles)
148
- ensure
149
- destroy_tempfiles(tempfiles)
150
- end
151
- end
152
-
153
- if error
154
- exit 1
155
- end
156
- end
157
-
158
- def get_patterns
159
- if config[:patterns]
160
- [ config[:patterns] ].flatten
161
- elsif config[:null_separator]
162
- stdin.binmode
163
- stdin.read.split("\000")
164
- else
165
- stdin.read.split(/\s+/)
166
- end
167
- end
168
-
169
- def create_command(files)
170
- command = name_args.join(" ")
171
-
172
- # Create the (empty) tempfiles
173
- tempfiles = {}
174
- begin
175
- # Create the temporary files
176
- files.each do |file|
177
- tempfile = Tempfile.new(file.name)
178
- tempfiles[tempfile] = { file: file }
179
- end
180
- rescue
181
- destroy_tempfiles(files)
182
- raise
183
- end
184
-
185
- # Create the command
186
- paths = tempfiles.keys.map(&:path).join(" ")
187
- if config[:replace_all]
188
- final_command = command.gsub(config[:replace_all], paths)
189
- elsif config[:replace_first]
190
- final_command = command.sub(config[:replace_first], paths)
191
- else
192
- final_command = "#{command} #{paths}"
193
- end
194
-
195
- [final_command, tempfiles]
196
- end
197
-
198
- def destroy_tempfiles(tempfiles)
199
- # Unlink the files now that we're done with them
200
- tempfiles.each_key(&:close!)
201
- end
202
-
203
- def xargs_files(command, tempfiles)
204
- error = false
205
- # Create the temporary files
206
- tempfiles.each_pair do |tempfile, file|
207
-
208
- value = file[:file].read
209
- file[:value] = value
210
- tempfile.open
211
- tempfile.write(value)
212
- tempfile.close
213
- rescue Chef::ChefFS::FileSystem::OperationNotAllowedError => e
214
- ui.error "#{format_path(e.entry)}: #{e.reason}."
215
- error = true
216
- tempfile.close!
217
- tempfiles.delete(tempfile)
218
- next
219
- rescue Chef::ChefFS::FileSystem::NotFoundError => e
220
- ui.error "#{format_path(e.entry)}: No such file or directory"
221
- error = true
222
- tempfile.close!
223
- tempfiles.delete(tempfile)
224
- next
225
-
226
- end
227
-
228
- return error if error && tempfiles.size == 0
229
-
230
- # Run the command
231
- if config[:verbose_commands] || Chef::Config[:verbosity] && Chef::Config[:verbosity] >= 1
232
- output sub_filenames(command, tempfiles)
233
- end
234
- command_output = `#{command}`
235
- command_output = sub_filenames(command_output, tempfiles)
236
- stdout.write command_output
237
-
238
- # Check if the output is different
239
- tempfiles.each_pair do |tempfile, file|
240
- # Read the new output
241
- new_value = IO.binread(tempfile.path)
242
-
243
- # Upload the output if different
244
- if config[:force] || new_value != file[:value]
245
- if config[:dry_run]
246
- output "Would update #{format_path(file[:file])}"
247
- else
248
- file[:file].write(new_value)
249
- output "Updated #{format_path(file[:file])}"
250
- end
251
- end
252
-
253
- # Print a diff of what was uploaded
254
- if config[:diff] && new_value != file[:value]
255
- old_file = Tempfile.open(file[:file].name)
256
- begin
257
- old_file.write(file[:value])
258
- old_file.close
259
-
260
- diff = `diff -u #{old_file.path} #{tempfile.path}`
261
- diff.gsub!(old_file.path, "#{format_path(file[:file])} (old)")
262
- diff.gsub!(tempfile.path, "#{format_path(file[:file])} (new)")
263
- stdout.write diff
264
- ensure
265
- old_file.close!
266
- end
267
- end
268
- end
269
-
270
- error
271
- end
272
-
273
- def sub_filenames(str, tempfiles)
274
- tempfiles.each_pair do |tempfile, file|
275
- str = str.gsub(tempfile.path, format_path(file[:file]))
276
- end
277
- str
278
- end
279
-
280
- end
281
- end
282
- end
@@ -1,91 +0,0 @@
1
- #
2
- # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- autoload :YAML, "yaml"
20
- require_relative "../knife"
21
- class Chef::Knife::YamlConvert < Chef::Knife
22
-
23
- banner "knife yaml convert YAML_FILENAME [RUBY_FILENAME]"
24
-
25
- def run
26
- if name_args.empty?
27
- ui.fatal!("Please specify the file name of a YAML recipe to convert to Ruby")
28
- elsif name_args.size >= 3
29
- ui.fatal!("knife yaml convert YAML_FILENAME [RUBY_FILENAME]")
30
- end
31
-
32
- yaml_file = @name_args[0]
33
- unless ::File.exist?(yaml_file) && ::File.readable?(yaml_file)
34
- ui.fatal("Input YAML file '#{yaml_file}' does not exist or is unreadable")
35
- end
36
-
37
- ruby_file = if @name_args[1]
38
- @name_args[1] # use the specified output filename if provided
39
- else
40
- if ::File.extname(yaml_file) == ".yml" || ::File.extname(yaml_file) == ".yaml"
41
- yaml_file.gsub(/\.(yml|yaml)$/, ".rb")
42
- else
43
- yaml_file + ".rb" # fall back to putting .rb on the end of whatever the yaml file was named
44
- end
45
- end
46
-
47
- if ::File.exist?(ruby_file)
48
- ui.fatal!("Output Ruby file '#{ruby_file}' already exists")
49
- end
50
-
51
- yaml_contents = IO.read(yaml_file)
52
-
53
- # YAML can contain multiple documents (--- is the separator), let's not support that.
54
- if ::YAML.load_stream(yaml_contents).length > 1
55
- ui.fatal!("YAML recipe '#{yaml_file}' contains multiple documents, only one is supported")
56
- end
57
-
58
- # Unfortunately, per the YAML spec, comments are stripped when we load, so we lose them on conversion
59
- yaml_hash = ::YAML.safe_load(yaml_contents, permitted_classes: [Symbol])
60
- unless yaml_hash.is_a?(Hash) && yaml_hash.key?("resources")
61
- ui.fatal!("YAML recipe '#{source_file}' must contain a top-level 'resources' hash (YAML sequence), i.e. 'resources:'")
62
- end
63
-
64
- ui.warn("No resources found in '#{yaml_file}'") if yaml_hash["resources"].size == 0
65
-
66
- ::File.open(ruby_file, "w") do |file|
67
- file.write(resource_hash_to_string(yaml_hash["resources"], yaml_file))
68
- end
69
- ui.info("Converted '#{yaml_file}' to '#{ruby_file}'")
70
- end
71
-
72
- # Converts a Hash of resources to a Ruby recipe
73
- # returns a string ready to be written to a file or stdout
74
- def resource_hash_to_string(resource_hash, filename)
75
- ruby_contents = []
76
- ruby_contents << "# Autoconverted recipe from #{filename}\n"
77
-
78
- resource_hash.each do |r|
79
- type = r.delete("type")
80
- name = r.delete("name")
81
-
82
- ruby_contents << "#{type} \"#{name}\" do"
83
- r.each do |k, v|
84
- ruby_contents << " #{k} #{v.inspect}"
85
- end
86
- ruby_contents << "end\n"
87
- end
88
-
89
- ruby_contents.join("\n")
90
- end
91
- end