puppet 4.8.2 → 4.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (348) hide show
  1. checksums.yaml +15 -0
  2. data/CONTRIBUTING.md +25 -1
  3. data/Gemfile +6 -0
  4. data/Rakefile +1 -0
  5. data/ext/project_data.yaml +5 -1
  6. data/ext/windows/service/daemon.rb +2 -1
  7. data/install.rb +43 -6
  8. data/lib/hiera/puppet_function.rb +15 -17
  9. data/lib/hiera/scope.rb +12 -14
  10. data/lib/puppet.rb +52 -0
  11. data/lib/puppet/application/face_base.rb +4 -0
  12. data/lib/puppet/application/lookup.rb +4 -2
  13. data/lib/puppet/application/resource.rb +1 -1
  14. data/lib/puppet/data_providers.rb +6 -3
  15. data/lib/puppet/data_providers/data_adapter.rb +6 -0
  16. data/lib/puppet/data_providers/data_function_support.rb +7 -0
  17. data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
  18. data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
  19. data/lib/puppet/data_providers/hiera_config.rb +31 -10
  20. data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
  21. data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
  22. data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
  23. data/lib/puppet/data_providers/hiera_support.rb +6 -0
  24. data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
  25. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
  26. data/lib/puppet/defaults.rb +25 -4
  27. data/lib/puppet/face/ca.rb +2 -0
  28. data/lib/puppet/face/certificate_request.rb +2 -0
  29. data/lib/puppet/face/certificate_revocation_list.rb +2 -0
  30. data/lib/puppet/face/file.rb +3 -0
  31. data/lib/puppet/face/help.rb +19 -17
  32. data/lib/puppet/face/help/face.erb +3 -0
  33. data/lib/puppet/face/key.rb +1 -0
  34. data/lib/puppet/face/man.rb +4 -2
  35. data/lib/puppet/face/module/generate.rb +1 -1
  36. data/lib/puppet/face/status.rb +2 -0
  37. data/lib/puppet/feature/base.rb +9 -2
  38. data/lib/puppet/feature/hocon.rb +3 -0
  39. data/lib/puppet/file_system.rb +15 -3
  40. data/lib/puppet/file_system/windows.rb +8 -0
  41. data/lib/puppet/forge.rb +6 -6
  42. data/lib/puppet/forge/repository.rb +1 -2
  43. data/lib/puppet/functions/binary_file.rb +4 -10
  44. data/lib/puppet/functions/hiera_array.rb +1 -1
  45. data/lib/puppet/functions/hiera_include.rb +1 -1
  46. data/lib/puppet/functions/hocon_data.rb +24 -0
  47. data/lib/puppet/functions/json_data.rb +18 -0
  48. data/lib/puppet/functions/yaml_data.rb +21 -0
  49. data/lib/puppet/generate/type.rb +1 -1
  50. data/lib/puppet/graph/simple_graph.rb +4 -2
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
  52. data/lib/puppet/indirector/request.rb +5 -1
  53. data/lib/puppet/interface.rb +14 -2
  54. data/lib/puppet/interface/face_collection.rb +1 -1
  55. data/lib/puppet/module.rb +14 -2
  56. data/lib/puppet/module_tool.rb +4 -4
  57. data/lib/puppet/module_tool/applications/builder.rb +3 -2
  58. data/lib/puppet/module_tool/applications/installer.rb +14 -14
  59. data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
  60. data/lib/puppet/module_tool/installed_modules.rb +7 -7
  61. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/network/http/connection.rb +2 -0
  64. data/lib/puppet/network/http/webrick.rb +2 -1
  65. data/lib/puppet/parser/functions/hiera.rb +14 -0
  66. data/lib/puppet/parser/functions/hiera_array.rb +14 -0
  67. data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
  68. data/lib/puppet/parser/functions/hiera_include.rb +14 -0
  69. data/lib/puppet/parser/scope.rb +14 -20
  70. data/lib/puppet/plugins/data_providers.rb +2 -0
  71. data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
  72. data/lib/puppet/plugins/data_providers/registry.rb +2 -36
  73. data/lib/puppet/pops.rb +6 -9
  74. data/lib/puppet/pops/adaptable.rb +0 -3
  75. data/lib/puppet/pops/binder/producers.rb +3 -3
  76. data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
  77. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  78. data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
  79. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  80. data/lib/puppet/pops/issues.rb +4 -0
  81. data/lib/puppet/pops/label_provider.rb +14 -0
  82. data/lib/puppet/pops/loader/loader_paths.rb +3 -1
  83. data/lib/puppet/pops/loader/module_loaders.rb +21 -7
  84. data/lib/puppet/pops/loader/typed_name.rb +0 -2
  85. data/lib/puppet/pops/loaders.rb +31 -12
  86. data/lib/puppet/pops/lookup.rb +4 -3
  87. data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
  88. data/lib/puppet/pops/lookup/context.rb +121 -71
  89. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  90. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
  91. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
  92. data/lib/puppet/pops/lookup/data_provider.rb +102 -0
  93. data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
  94. data/lib/puppet/pops/lookup/explainer.rb +122 -82
  95. data/lib/puppet/pops/lookup/function_provider.rb +82 -0
  96. data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
  97. data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
  98. data/lib/puppet/pops/lookup/interpolation.rb +56 -35
  99. data/lib/puppet/pops/lookup/invocation.rb +179 -101
  100. data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
  101. data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
  102. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  103. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
  104. data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
  105. data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
  106. data/lib/puppet/pops/merge_strategy.rb +120 -39
  107. data/lib/puppet/pops/parser/egrammar.ra +2 -0
  108. data/lib/puppet/pops/parser/eparser.rb +816 -808
  109. data/lib/puppet/pops/parser/locator.rb +3 -3
  110. data/lib/puppet/pops/parser/slurp_support.rb +4 -3
  111. data/lib/puppet/pops/pcore.rb +21 -12
  112. data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
  113. data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
  114. data/lib/puppet/pops/serialization/deserializer.rb +17 -4
  115. data/lib/puppet/pops/serialization/extension.rb +37 -8
  116. data/lib/puppet/pops/serialization/object.rb +14 -6
  117. data/lib/puppet/pops/serialization/rgen.rb +2 -1
  118. data/lib/puppet/pops/serialization/serializer.rb +30 -7
  119. data/lib/puppet/pops/types/implementation_registry.rb +1 -1
  120. data/lib/puppet/pops/types/p_object_type.rb +55 -12
  121. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
  122. data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
  123. data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
  124. data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
  125. data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
  126. data/lib/puppet/pops/types/recursion_guard.rb +64 -20
  127. data/lib/puppet/pops/types/ruby_generator.rb +10 -0
  128. data/lib/puppet/pops/types/type_calculator.rb +23 -13
  129. data/lib/puppet/pops/types/type_factory.rb +20 -9
  130. data/lib/puppet/pops/types/type_formatter.rb +37 -17
  131. data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
  132. data/lib/puppet/pops/types/type_parser.rb +6 -0
  133. data/lib/puppet/pops/types/types.rb +225 -132
  134. data/lib/puppet/pops/validation.rb +1 -1
  135. data/lib/puppet/pops/validation/checker4_0.rb +12 -2
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  137. data/lib/puppet/pops/visitor.rb +4 -3
  138. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
  139. data/lib/puppet/provider/nameservice.rb +15 -0
  140. data/lib/puppet/provider/package/appdmg.rb +1 -1
  141. data/lib/puppet/provider/package/dnf.rb +1 -1
  142. data/lib/puppet/provider/package/pkg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  144. data/lib/puppet/provider/package/pkgng.rb +1 -1
  145. data/lib/puppet/provider/package/rpm.rb +2 -2
  146. data/lib/puppet/provider/service/smf.rb +3 -3
  147. data/lib/puppet/provider/service/systemd.rb +5 -1
  148. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  149. data/lib/puppet/provider/user/user_role_add.rb +15 -0
  150. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  151. data/lib/puppet/provider/zone/solaris.rb +4 -1
  152. data/lib/puppet/reference/indirection.rb +1 -1
  153. data/lib/puppet/resource.rb +2 -3
  154. data/lib/puppet/resource/catalog.rb +12 -4
  155. data/lib/puppet/resource/type.rb +3 -3
  156. data/lib/puppet/settings.rb +1 -1
  157. data/lib/puppet/settings/config_file.rb +2 -1
  158. data/lib/puppet/settings/directory_setting.rb +6 -0
  159. data/lib/puppet/settings/environment_conf.rb +6 -2
  160. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  161. data/lib/puppet/settings/file_setting.rb +10 -0
  162. data/lib/puppet/ssl/certificate_authority.rb +13 -2
  163. data/lib/puppet/ssl/host.rb +23 -1
  164. data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
  165. data/lib/puppet/type/user.rb +16 -3
  166. data/lib/puppet/util.rb +1 -0
  167. data/lib/puppet/util/execution.rb +3 -3
  168. data/lib/puppet/util/filetype.rb +11 -5
  169. data/lib/puppet/util/logging.rb +2 -1
  170. data/lib/puppet/util/network_device/config.rb +1 -1
  171. data/lib/puppet/util/plist.rb +6 -0
  172. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  173. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  174. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  175. data/lib/puppet/util/windows/adsi.rb +15 -12
  176. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  177. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  178. data/lib/puppet/vendor/require_vendored.rb +0 -1
  179. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
  180. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  181. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  182. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  183. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
  184. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  185. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  186. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  187. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
  188. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
  189. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
  190. data/lib/puppet/version.rb +1 -1
  191. data/lib/semver.rb +19 -12
  192. data/locales/config.yaml +29 -0
  193. data/locales/puppet.pot +79 -0
  194. data/man/man5/puppet.conf.5 +1 -1
  195. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
  196. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
  197. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
  198. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
  199. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
  200. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
  201. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
  202. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
  203. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  204. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
  205. data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
  206. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
  207. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
  208. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
  209. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
  210. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
  211. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
  212. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
  213. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
  214. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
  215. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
  216. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
  217. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
  218. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
  219. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
  220. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
  221. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
  222. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
  223. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
  224. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
  225. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
  226. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
  227. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
  228. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
  229. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
  230. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
  231. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
  232. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
  233. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
  234. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
  235. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
  236. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
  237. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
  238. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
  239. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
  240. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
  241. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
  242. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
  243. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
  244. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
  245. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
  246. data/spec/integration/application/apply_spec.rb +88 -2
  247. data/spec/integration/application/lookup_spec.rb +155 -0
  248. data/spec/integration/data_binding_spec.rb +5 -5
  249. data/spec/integration/defaults_spec.rb +13 -0
  250. data/spec/integration/environments/default_manifest_spec.rb +16 -16
  251. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  252. data/spec/integration/test/test_helper_spec.rb +6 -2
  253. data/spec/integration/transaction_spec.rb +74 -0
  254. data/spec/integration/util/execution_spec.rb +8 -0
  255. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  256. data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
  257. data/spec/lib/puppet_spec/unindent.rb +2 -2
  258. data/spec/unit/application/face_base_spec.rb +16 -0
  259. data/spec/unit/application/lookup_spec.rb +262 -227
  260. data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
  261. data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
  262. data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
  263. data/spec/unit/defaults_spec.rb +1 -1
  264. data/spec/unit/face/ca_spec.rb +10 -0
  265. data/spec/unit/face/certificate_request_spec.rb +10 -0
  266. data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
  267. data/spec/unit/face/file_spec.rb +4 -0
  268. data/spec/unit/face/help_spec.rb +17 -0
  269. data/spec/unit/face/key_spec.rb +10 -0
  270. data/spec/unit/face/status_spec.rb +10 -0
  271. data/spec/unit/file_system_spec.rb +143 -6
  272. data/spec/unit/functions/binary_file_spec.rb +1 -1
  273. data/spec/unit/functions/hiera_spec.rb +257 -47
  274. data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
  275. data/spec/unit/functions/lookup_spec.rb +1319 -608
  276. data/spec/unit/functions/new_spec.rb +3 -3
  277. data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
  278. data/spec/unit/graph/simple_graph_spec.rb +1 -1
  279. data/spec/unit/hiera/scope_spec.rb +4 -4
  280. data/spec/unit/indirector/request_spec.rb +9 -0
  281. data/spec/unit/interface_spec.rb +27 -0
  282. data/spec/unit/man_spec.rb +1 -1
  283. data/spec/unit/module_spec.rb +1 -1
  284. data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
  285. data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
  286. data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
  287. data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
  288. data/spec/unit/module_tool_spec.rb +3 -3
  289. data/spec/unit/network/http/connection_spec.rb +10 -0
  290. data/spec/unit/network/http/webrick_spec.rb +1 -1
  291. data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
  292. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
  293. data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
  294. data/spec/unit/pops/lookup/context_spec.rb +45 -16
  295. data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
  296. data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
  297. data/spec/unit/pops/merge_strategy_spec.rb +18 -0
  298. data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
  299. data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
  300. data/spec/unit/pops/serialization/packer_spec.rb +4 -23
  301. data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
  302. data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
  303. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
  304. data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
  305. data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
  306. data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
  307. data/spec/unit/pops/types/type_factory_spec.rb +3 -3
  308. data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
  309. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
  310. data/spec/unit/pops/types/types_spec.rb +25 -2
  311. data/spec/unit/pops/validator/validator_spec.rb +60 -4
  312. data/spec/unit/provider/nameservice_spec.rb +42 -0
  313. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  314. data/spec/unit/provider/package/pkg_spec.rb +22 -0
  315. data/spec/unit/provider/package/pkgng_spec.rb +12 -0
  316. data/spec/unit/provider/package/rpm_spec.rb +8 -8
  317. data/spec/unit/provider/service/smf_spec.rb +13 -11
  318. data/spec/unit/provider/service/systemd_spec.rb +8 -1
  319. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  320. data/spec/unit/puppet_spec.rb +14 -0
  321. data/spec/unit/resource/catalog_spec.rb +15 -9
  322. data/spec/unit/resource_spec.rb +20 -17
  323. data/spec/unit/semver_spec.rb +14 -0
  324. data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
  325. data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
  326. data/spec/unit/type/user_spec.rb +32 -6
  327. data/spec/unit/util/filetype_spec.rb +3 -3
  328. data/spec/unit/util/yaml_spec.rb +1 -1
  329. data/spec/unit/util_spec.rb +10 -2
  330. data/tasks/i18n.rake +20 -0
  331. metadata +2661 -2593
  332. data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
  333. data/lib/puppet/vendor/load_semantic.rb +0 -1
  334. data/lib/puppet/vendor/semantic/Gemfile +0 -20
  335. data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
  336. data/lib/puppet/vendor/semantic/Rakefile +0 -69
  337. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
  338. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
  339. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
  340. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
  341. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
  342. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
  343. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
  344. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
  345. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
  346. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
  347. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
  348. data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODE5NjAxYjc5N2M2NzRkYWFjODBjMTM1N2E4NmNiYTBmYzViNTViYw==
5
+ data.tar.gz: !binary |-
6
+ OGMzYmYzZjRkYjY3NzE2NTIxZjkwYWNmMGQ3NGZkYWVmYTM3MjJjYw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NGU3MDcwODM4NWY4Y2Q5NzNkMGI1ODNlMWU3M2Y3YjkzNTA4NmU0OGFhNzky
10
+ MzY4NWI5M2YzMzgxYmYwOGZiM2ZlZjE0YjVlNGIwYjc4NjY0Mzg3MTQ2Zjgw
11
+ ZTJhODFiOWM4MDE0ODRlNzM5ODc1YjU0ZTA4ODg0ZGM1YWEzZDA=
12
+ data.tar.gz: !binary |-
13
+ Zjk5ZTAxYjE2NjBmNDcxNDc4YTEzNWI1MjNmNDBhYjRiNDlhOGYzZjIwNDNk
14
+ MmVkMGYwZjVkNDdjYzI1NWIyZDBhNTQzZmQ2M2VjYjhiNmRhNWJkYzUwNmNl
15
+ NDg2NzA0YzExMjk3OWRjYjYyZTllNGVjNWNkNTgzYWRmZTkwYzQ=
@@ -104,13 +104,37 @@ a ticket number.
104
104
  * After feedback has been given we expect responses within two weeks. After two
105
105
  weeks we may close the pull request if it isn't showing any activity.
106
106
 
107
+ ## Revert Policy
108
+ By running tests in advance and by engaging with peer review for prospective
109
+ changes, your contributions have a high probability of becoming long lived
110
+ parts of the the project. After being merged, the code will run through a
111
+ series of testing pipelines on a large number of operating system
112
+ environments. These pipelines can reveal incompatibilities that are difficult
113
+ to detect in advance.
114
+
115
+ If the code change results in a test failure, we will make our best effort to
116
+ correct the error. If a fix cannot be determined and committed within 24 hours
117
+ of its discovery, the commit(s) responsible _may_ be reverted, at the
118
+ discretion of the committer and Puppet maintainers. This action would be taken
119
+ to help maintain passing states in our testing pipelines.
120
+
121
+ The original contributor will be notified of the revert in the Jira ticket
122
+ associated with the change. A reference to the test(s) and operating system(s)
123
+ that failed as a result of the code change will also be added to the Jira
124
+ ticket. This test(s) should be used to check future submissions of the code to
125
+ ensure the issue has been resolved.
126
+
127
+ ### Summary
128
+ * Changes resulting in test pipeline failures will be reverted if they cannot
129
+ be resolved within one business day.
130
+
107
131
  # Additional Resources
108
132
 
109
133
  * [Puppet community guidelines](https://docs.puppet.com/community/community_guidelines.html)
110
134
  * [Bug tracker (Jira)](https://tickets.puppetlabs.com)
111
135
  * [Contributor License Agreement](http://links.puppet.com/cla)
112
136
  * [General GitHub documentation](https://help.github.com/)
113
- * [GitHub pull request documentation](https://help.github.com/send-pull-requests/)
137
+ * [GitHub pull request documentation](https://help.github.com/articles/creating-a-pull-request/)
114
138
  * #puppet-dev IRC channel on freenode.org ([Archive](https://botbot.me/freenode/puppet-dev/))
115
139
  * [puppet-dev mailing list](https://groups.google.com/forum/#!forum/puppet-dev)
116
140
  * [Community PR Triage notes](https://github.com/puppet-community/community-triage/tree/master/core/notes)
data/Gemfile CHANGED
@@ -26,10 +26,15 @@ end
26
26
  gem "puppet", :path => File.dirname(__FILE__), :require => false
27
27
  gem "facter", *location_for(ENV['FACTER_LOCATION'] || ['> 2.0', '< 4'])
28
28
  gem "hiera", *location_for(ENV['HIERA_LOCATION'] || ['>= 2.0', '< 4'])
29
+ # PUP-7115 - return to a gem dependency in Puppet 5
30
+ # gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ['>= 0.1.3', '< 2'])
29
31
  gem "rake", "10.1.1", :require => false
30
32
  # Hiera has an unbound dependency on json_pure
31
33
  # json_pure 2.0.2+ officially requires Ruby >= 2.0, but should have specified that in 2.0
32
34
  gem 'json_pure', '~> 1.8', :require => false
35
+ # i18n support (gettext-setup and dependencies)
36
+ gem 'gettext-setup', '>= 0.10', '< 1.0', :require => false
37
+ gem 'locale', '~> 2.1', :require => false
33
38
 
34
39
  group(:development, :test) do
35
40
  gem "rspec", "~> 3.1", :require => false
@@ -58,6 +63,7 @@ group(:development, :test) do
58
63
  gem 'addressable', '< 2.5.0'
59
64
  gem 'webmock', '~> 1.24'
60
65
  gem 'vcr', '~> 2.9'
66
+ gem "hocon", :require => false
61
67
  end
62
68
 
63
69
  group(:development) do
data/Rakefile CHANGED
@@ -103,3 +103,4 @@ task(:commits) do
103
103
  puts "...passed"
104
104
  end
105
105
  end
106
+
@@ -9,7 +9,7 @@ version_file: 'lib/puppet/version.rb'
9
9
  # files and gem_files are space separated lists
10
10
  files: '[A-Z]* install.rb bin lib conf man examples ext tasks spec'
11
11
  # The gem specification bits only work on Puppet >= 3.0rc, NOT 2.7.x and earlier
12
- gem_files: '[A-Z]* install.rb bin lib conf man examples ext tasks spec'
12
+ gem_files: '[A-Z]* install.rb bin lib conf man examples ext tasks spec locales'
13
13
  gem_test_files: 'spec/**/*'
14
14
  gem_executables: 'puppet'
15
15
  gem_default_executables: 'puppet'
@@ -20,6 +20,10 @@ gem_runtime_dependencies:
20
20
  facter: ['> 2.0', '< 4']
21
21
  hiera: ['>= 2.0', '< 4']
22
22
  json_pure: '~> 1.8'
23
+ # PUP-7115 - return to a gem dependency in Puppet 5
24
+ # semantic_puppet: ['>= 0.1.3', '< 2']
25
+ gettext-setup: ['>= 0.10', '< 1']
26
+ locale: '~> 2.1'
23
27
  gem_rdoc_options:
24
28
  - --title
25
29
  - "Puppet - Configuration Management"
@@ -123,7 +123,8 @@ class WindowsDaemon < Win32::Daemon
123
123
  def log(msg, level)
124
124
  if LEVELS.index(level) >= @loglevel
125
125
  if (@LOG_TO_FILE)
126
- File.open(LOG_FILE, 'a') { |f| f.puts("#{Time.now} Puppet (#{level}): #{msg}") }
126
+ # without this change its possible that we get Encoding errors trying to write UTF-8 messages in current codepage
127
+ File.open(LOG_FILE, 'a:UTF-8') { |f| f.puts("#{Time.now} Puppet (#{level}): #{msg}") }
127
128
  end
128
129
 
129
130
  case level
data/install.rb CHANGED
@@ -108,9 +108,24 @@ def do_man(man, strip = 'man/')
108
108
  FileUtils.makedirs(om, {:mode => 0755, :verbose => true})
109
109
  FileUtils.chmod(0755, om)
110
110
  FileUtils.install(mf, omf, {:mode => 0644, :preserve => true, :verbose => true})
111
- gzip = %x{which gzip}
112
- gzip.chomp!
113
- %x{#{gzip} -f #{omf}}
111
+ # Solaris does not support gzipped man pages. When called with
112
+ # --no-check-prereqs/without facter the default gzip behavior still applies
113
+ unless $operatingsystem == "Solaris"
114
+ gzip = %x{which gzip}
115
+ gzip.chomp!
116
+ %x{#{gzip} -f #{omf}}
117
+ end
118
+ end
119
+ end
120
+
121
+ def do_locales(locale, strip = 'locales/')
122
+ locale.each do |lf|
123
+ next if File.directory? lf
124
+ olf = File.join(InstallOptions.locale_dir, lf.sub(/^#{strip}/, ''))
125
+ op = File.dirname(olf)
126
+ FileUtils.makedirs(op, {:mode => 0755, :verbose => true})
127
+ FileUtils.chmod(0755, op)
128
+ FileUtils.install(lf, olf, {:mode => 0644, :preserve => true, :verbose => true})
114
129
  end
115
130
  end
116
131
 
@@ -190,6 +205,9 @@ def prepare_installation
190
205
  opts.on('--bindir[=OPTIONAL]', 'Installation directory for binaries', 'overrides RbConfig::CONFIG["bindir"]') do |bindir|
191
206
  InstallOptions.bindir = bindir
192
207
  end
208
+ opts.on('--localedir[=OPTIONAL]', 'Installation directory for locale information', 'Default /opt/puppetlabs/puppet/share/locale') do |localedir|
209
+ InstallOptions.localedir = localedir
210
+ end
193
211
  opts.on('--ruby[=OPTIONAL]', 'Ruby interpreter to use with installation', 'overrides ruby used to call install.rb') do |ruby|
194
212
  InstallOptions.ruby = ruby
195
213
  end
@@ -242,15 +260,19 @@ def prepare_installation
242
260
  $operatingsystem = Facter.value :operatingsystem
243
261
  end
244
262
 
245
- if not InstallOptions.configdir.nil?
246
- configdir = InstallOptions.configdir
247
- elsif $operatingsystem == "windows"
263
+ if $operatingsystem == "windows"
248
264
  begin
265
+ # populates constants used to specify default Windows directories
249
266
  require 'win32/dir'
250
267
  rescue LoadError => e
251
268
  puts "Cannot run on Microsoft Windows without the win32-process, win32-dir & win32-service gems: #{e}"
252
269
  exit -1
253
270
  end
271
+ end
272
+
273
+ if not InstallOptions.configdir.nil?
274
+ configdir = InstallOptions.configdir
275
+ elsif $operatingsystem == "windows"
254
276
  configdir = File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "etc")
255
277
  else
256
278
  configdir = "/etc/puppetlabs/puppet"
@@ -294,6 +316,16 @@ def prepare_installation
294
316
  bindir = RbConfig::CONFIG['bindir']
295
317
  end
296
318
 
319
+ if not InstallOptions.localedir.nil?
320
+ localedir = InstallOptions.localedir
321
+ else
322
+ if $operatingsystem == "windows"
323
+ localedir = File.join(Dir::PROGRAM_FILES, "Puppet Labs", "Puppet", "puppet", "share", "locale")
324
+ else
325
+ localedir = "/opt/puppetlabs/puppet/share/locale"
326
+ end
327
+ end
328
+
297
329
  if not InstallOptions.sitelibdir.nil?
298
330
  sitelibdir = InstallOptions.sitelibdir
299
331
  else
@@ -331,6 +363,7 @@ def prepare_installation
331
363
  rundir = join(destdir, rundir)
332
364
  logdir = join(destdir, logdir)
333
365
  bindir = join(destdir, bindir)
366
+ localedir = join(destdir, localedir)
334
367
  mandir = join(destdir, mandir)
335
368
  sitelibdir = join(destdir, sitelibdir)
336
369
 
@@ -342,6 +375,7 @@ def prepare_installation
342
375
  FileUtils.makedirs(vardir)
343
376
  FileUtils.makedirs(rundir)
344
377
  FileUtils.makedirs(logdir)
378
+ FileUtils.makedirs(localedir)
345
379
 
346
380
  InstallOptions.site_dir = sitelibdir
347
381
  InstallOptions.codedir = codedir
@@ -352,6 +386,7 @@ def prepare_installation
352
386
  InstallOptions.var_dir = vardir
353
387
  InstallOptions.run_dir = rundir
354
388
  InstallOptions.log_dir = logdir
389
+ InstallOptions.locale_dir = localedir
355
390
  end
356
391
 
357
392
  ##
@@ -464,6 +499,7 @@ FileUtils.cd File.dirname(__FILE__) do
464
499
  ri = glob(%w{bin/*.rb lib/**/*.rb}).reject { |e| e=~ /\.(bat|cmd)$/ }
465
500
  man = glob(%w{man/man[0-9]/*})
466
501
  libs = glob(%w{lib/**/*})
502
+ locales = glob(%w{locales/**/*})
467
503
 
468
504
  prepare_installation
469
505
 
@@ -477,5 +513,6 @@ FileUtils.cd File.dirname(__FILE__) do
477
513
  do_bins(bins, InstallOptions.bin_dir)
478
514
  do_bins(windows_bins, InstallOptions.bin_dir, 'ext/windows/') if $operatingsystem == "windows" && InstallOptions.batch_files
479
515
  do_libs(libs)
516
+ do_locales(locales)
480
517
  do_man(man) unless $operatingsystem == "windows"
481
518
  end
@@ -43,37 +43,35 @@ class Hiera::PuppetFunction < Puppet::Functions::InternalFunction
43
43
  end
44
44
 
45
45
  def hiera_no_default(scope, key)
46
- post_lookup(scope, key, lookup(scope, key, nil, nil))
46
+ post_lookup(scope, key, lookup(scope, key, nil, false, nil))
47
47
  end
48
48
 
49
49
  def hiera_with_default(scope, key, default, override = nil)
50
- undefined = (@@undefined_value ||= Object.new)
51
- result = lookup(scope, key, undefined, override)
52
- post_lookup(scope, key, result.equal?(undefined) ? default : result)
50
+ post_lookup(scope, key, lookup(scope, key, default, true, override))
53
51
  end
54
52
 
55
53
  def hiera_block1(scope, key, &default_block)
56
- common(scope, key, nil, default_block)
54
+ post_lookup(scope, key, lookup(scope, key, nil, false, nil, &default_block))
57
55
  end
58
56
 
59
57
  def hiera_block2(scope, key, override, &default_block)
60
- common(scope, key, override, default_block)
58
+ post_lookup(scope, key, lookup(scope, key, nil, false, override, &default_block))
61
59
  end
62
60
 
63
- def common(scope, key, override, default_block)
64
- undefined = (@@undefined_value ||= Object.new)
65
- result = lookup(scope, key, undefined, override)
66
- post_lookup(scope, key, result.equal?(undefined) ? default_block.call(key) : result)
67
- end
68
-
69
- private :common
70
-
71
- def lookup(scope, key, default, override)
72
- HieraPuppet.lookup(key, default, scope, override, merge_type)
61
+ def lookup(scope, key, default, has_default, override, &default_block)
62
+ unless Puppet[:strict] == :off
63
+ Puppet.warn_once(:deprecation, self.class.name,
64
+ "The function '#{self.class.name}' is deprecated in favor of using 'lookup'. See https://docs.puppet.com/puppet/#{Puppet.version}/reference/deprecated_language.html")
65
+ end
66
+ lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {})
67
+ adapter = lookup_invocation.lookup_adapter
68
+ lookup_invocation.set_global_only unless adapter.global_only? || adapter.has_environment_data_provider?(lookup_invocation)
69
+ lookup_invocation.set_hiera_v3_location_overrides(override) unless override.nil? || override.is_a?(Array) && override.empty?
70
+ Puppet::Pops::Lookup.lookup(key, nil, default, has_default, merge_type, lookup_invocation, &default_block)
73
71
  end
74
72
 
75
73
  def merge_type
76
- :priority
74
+ :first
77
75
  end
78
76
 
79
77
  def post_lookup(scope, key, result)
@@ -1,9 +1,12 @@
1
1
  class Hiera
2
2
  class Scope
3
- CALLING_CLASS = "calling_class"
4
- CALLING_CLASS_PATH = "calling_class_path"
5
- CALLING_MODULE = "calling_module"
6
- MODULE_NAME = "module_name"
3
+ CALLING_CLASS = 'calling_class'.freeze
4
+ CALLING_CLASS_PATH = 'calling_class_path'.freeze
5
+ CALLING_MODULE = 'calling_module'.freeze
6
+ MODULE_NAME = 'module_name'.freeze
7
+
8
+ CALLING_KEYS = [CALLING_CLASS, CALLING_CLASS_PATH, CALLING_MODULE].freeze
9
+ EMPTY_STRING = ''.freeze
7
10
 
8
11
  attr_reader :real
9
12
 
@@ -21,20 +24,15 @@ class Hiera
21
24
  else
22
25
  ans = @real.lookupvar(key)
23
26
  end
27
+ ans == EMPTY_STRING ? nil : ans
28
+ end
24
29
 
25
- if ans.nil? or ans == ""
26
- nil
27
- else
28
- ans
29
- end
30
+ def exist?(key)
31
+ CALLING_KEYS.include?(key) || @real.exist?(key)
30
32
  end
31
33
 
32
34
  def include?(key)
33
- if [CALLING_CLASS, CALLING_CLASS_PATH, CALLING_MODULE].include? key
34
- true
35
- else
36
- @real.exist?(key)
37
- end
35
+ CALLING_KEYS.include?(key) || @real.include?(key)
38
36
  end
39
37
 
40
38
  def catalog
@@ -4,6 +4,8 @@ if RUBY_VERSION < "1.9.3"
4
4
  raise LoadError, "Puppet #{Puppet.version} requires ruby 1.9.3 or greater."
5
5
  end
6
6
 
7
+ Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.1.0'
8
+
7
9
  # see the bottom of the file for further inclusions
8
10
  # Also see the new Vendor support - towards the end
9
11
  #
@@ -19,6 +21,20 @@ require 'puppet/external/pson/common'
19
21
  require 'puppet/external/pson/version'
20
22
  require 'puppet/external/pson/pure'
21
23
 
24
+ # When running within puppetserver, the gettext-setup gem might not be available, so
25
+ # we need to skip initializing i18n functionality and stub out methods normally
26
+ # supplied by gettext-setup. Can be removed in Puppet 5. See PUP-7116.
27
+ begin
28
+ require 'gettext-setup'
29
+ require 'locale'
30
+ Puppet::GETTEXT_AVAILABLE = true
31
+ rescue LoadError
32
+ def _(msg)
33
+ msg
34
+ end
35
+ Puppet::GETTEXT_AVAILABLE = false
36
+ end
37
+
22
38
  #------------------------------------------------------------
23
39
  # the top-level module
24
40
  #
@@ -36,6 +52,36 @@ module Puppet
36
52
  require 'puppet/environments'
37
53
 
38
54
  class << self
55
+ if Puppet::GETTEXT_AVAILABLE
56
+ # e.g. ~/code/puppet/locales. Also when running as a gem.
57
+ local_locale_path = File.absolute_path('../locales', File.dirname(__FILE__))
58
+ # e.g. /opt/puppetlabs/puppet/share/locale
59
+ posix_system_locale_path = File.absolute_path('../../../share/locale', File.dirname(__FILE__))
60
+ # e.g. C:\Program Files\Puppet Labs\Puppet\puppet\share\locale
61
+ win32_system_locale_path = File.absolute_path('../../../../../puppet/share/locale', File.dirname(__FILE__))
62
+
63
+ if File.exist?(local_locale_path)
64
+ locale_path = local_locale_path
65
+ elsif File.exist?(win32_system_locale_path)
66
+ locale_path = win32_system_locale_path
67
+ elsif File.exist?(posix_system_locale_path)
68
+ locale_path = posix_system_locale_path
69
+ else
70
+ # We couldn't load our locale data.
71
+ locale_path = nil
72
+ end
73
+
74
+ if locale_path
75
+ if Gem.loaded_specs['gettext-setup'].version < Gem::Version.new('0.8')
76
+ # Will load translations from PO files only
77
+ GettextSetup.initialize(locale_path)
78
+ else
79
+ GettextSetup.initialize(locale_path, :file_format => :mo)
80
+ end
81
+ FastGettext.locale = GettextSetup.negotiate_locale(Locale.current.language)
82
+ end
83
+ end
84
+
39
85
  include Puppet::Util
40
86
  attr_reader :features
41
87
  end
@@ -115,6 +161,12 @@ module Puppet
115
161
  # Load all of the settings.
116
162
  require 'puppet/defaults'
117
163
 
164
+ # Now that settings are loaded we have the code loaded to be able to issue
165
+ # deprecation warnings. Warn if we're on a deprecated ruby version.
166
+ if RUBY_VERSION < Puppet::OLDEST_RECOMMENDED_RUBY_VERSION
167
+ Puppet.deprecation_warning("Support for ruby version #{RUBY_VERSION} is deprecated and will be removed in a future release. See https://docs.puppet.com/puppet/latest/system_requirements.html#ruby for a list of supported ruby versions.")
168
+ end
169
+
118
170
  # Initialize puppet's settings. This is intended only for use by external tools that are not
119
171
  # built off of the Faces API or the Puppet::Util::Application class. It may also be used
120
172
  # to initialize state so that a Face may be used programatically, rather than as a stand-alone
@@ -245,6 +245,10 @@ class Puppet::Application::FaceBase < Puppet::Application
245
245
  end
246
246
  end
247
247
 
248
+ if @face.deprecated?
249
+ Puppet.deprecation_warning("'puppet #{@face.name}' is deprecated and will be removed in a future release")
250
+ end
251
+
248
252
  result = @face.send(@action.name, *arguments)
249
253
  puts render(result, arguments) unless result.nil?
250
254
  status = true
@@ -297,11 +297,13 @@ Copyright (c) 2015 Puppet Labs, LLC Licensed under the Apache 2.0 License
297
297
  type = options.include?(:type) ? Puppet::Pops::Types::TypeParser.singleton.parse(options[:type], scope) : nil
298
298
  result = Puppet::Pops::Lookup.lookup(keys, type, options[:default_value], use_default_value, merge_options, lookup_invocation)
299
299
  puts renderer.render(result) unless explain
300
- rescue Puppet::DataBinding::LookupError
300
+ rescue Puppet::DataBinding::LookupError => e
301
+ lookup_invocation.report_text { e.message }
301
302
  exit(1) unless explain
302
303
  end
303
- puts format == :s ? lookup_invocation.explainer.to_s : renderer.render(lookup_invocation.explainer.to_hash) if explain
304
+ puts format == :s ? lookup_invocation.explainer.explain : renderer.render(lookup_invocation.explainer.to_hash) if explain
304
305
  end
306
+ exit(0)
305
307
  end
306
308
 
307
309
  def generate_scope
@@ -166,7 +166,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
166
166
  require 'tempfile'
167
167
  # Prefer the current directory, which is more likely to be secure
168
168
  # and, in the case of interactive use, accessible to the user.
169
- tmpfile = Tempfile.new('x2puppet', Dir.pwd)
169
+ tmpfile = Tempfile.new('x2puppet', Dir.pwd, :encoding => Encoding::UTF_8)
170
170
  begin
171
171
  # sync write, so nothing buffers before we invoke the editor.
172
172
  tmpfile.sync = true
@@ -1,11 +1,11 @@
1
+ # TODO: API 5.0, remove this module
1
2
  # @api private
3
+ # @deprecated
2
4
  module Puppet::DataProviders
3
5
 
4
6
  def self.assert_loaded
5
7
  unless @loaded
6
8
  require 'puppet/pops'
7
- require 'puppet/data_providers/data_adapter'
8
- require 'puppet/data_providers/lookup_adapter'
9
9
  end
10
10
  @loaded = true
11
11
  end
@@ -25,7 +25,10 @@ module Puppet::DataProviders
25
25
  end
26
26
 
27
27
  def self.lookup_adapter(lookup_invocation)
28
+ unless Puppet[:strict] == :off
29
+ Puppet.deprecation_warning('The method Puppet::DataProviders.lookup_adapter is deprecated and will be removed in the next major release of Puppet.')
30
+ end
28
31
  assert_loaded()
29
- LookupAdapter.adapt(lookup_invocation.scope.compiler)
32
+ Puppet::Pops::Lookup::LookupAdapter.adapt(lookup_invocation.scope.compiler)
30
33
  end
31
34
  end