puppet 5.3.3 → 5.3.4
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.
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +3 -0
- data/ext/puppet-test +3 -2
- data/lib/hiera/puppet_function.rb +5 -2
- data/lib/hiera_puppet.rb +3 -3
- data/lib/puppet.rb +2 -5
- data/lib/puppet/agent.rb +22 -2
- data/lib/puppet/agent/locker.rb +6 -5
- data/lib/puppet/application.rb +18 -1
- data/lib/puppet/application/agent.rb +9 -2
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/config.rb +1 -0
- data/lib/puppet/application/device.rb +1 -2
- data/lib/puppet/application/filebucket.rb +22 -5
- data/lib/puppet/application/help.rb +1 -0
- data/lib/puppet/application/lookup.rb +1 -3
- data/lib/puppet/application_support.rb +6 -1
- data/lib/puppet/bindings.rb +2 -1
- data/lib/puppet/configurer.rb +9 -4
- data/lib/puppet/configurer/downloader_factory.rb +10 -0
- data/lib/puppet/configurer/plugin_handler.rb +11 -4
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/defaults.rb +99 -27
- data/lib/puppet/environments.rb +2 -0
- data/lib/puppet/error.rb +5 -15
- data/lib/puppet/external/pson/common.rb +2 -2
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +14 -1
- data/lib/puppet/face/epp.rb +4 -2
- data/lib/puppet/face/help.rb +12 -14
- data/lib/puppet/face/man.rb +1 -0
- data/lib/puppet/face/module/build.rb +1 -1
- data/lib/puppet/face/module/list.rb +6 -17
- data/lib/puppet/face/module/uninstall.rb +14 -3
- data/lib/puppet/face/node.rb +1 -0
- data/lib/puppet/face/status.rb +1 -0
- data/lib/puppet/file_serving/base.rb +2 -1
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/configuration/parser.rb +23 -9
- data/lib/puppet/file_serving/mount/locales.rb +35 -0
- data/lib/puppet/forge.rb +2 -1
- data/lib/puppet/forge/errors.rb +24 -22
- data/lib/puppet/functions/binary_file.rb +1 -0
- data/lib/puppet/functions/each.rb +10 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +4 -2
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/map.rb +12 -2
- data/lib/puppet/functions/slice.rb +2 -3
- data/lib/puppet/functions/unique.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +1 -1
- data/lib/puppet/gettext/config.rb +144 -41
- data/lib/puppet/gettext/module_translations.rb +42 -0
- data/lib/puppet/graph/relationship_graph.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +3 -3
- data/lib/puppet/indirector/catalog/compiler.rb +40 -25
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/network_device.rb +2 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +4 -1
- data/lib/puppet/indirector/indirection.rb +17 -9
- data/lib/puppet/indirector/ldap.rb +2 -2
- data/lib/puppet/indirector/node/write_only_yaml.rb +3 -1
- data/lib/puppet/indirector/rest.rb +8 -5
- data/lib/puppet/indirector/ssl_file.rb +2 -2
- data/lib/puppet/indirector/terminus.rb +3 -3
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/interface/action.rb +41 -24
- data/lib/puppet/interface/action_builder.rb +14 -5
- data/lib/puppet/interface/action_manager.rb +1 -1
- data/lib/puppet/interface/documentation.rb +21 -10
- data/lib/puppet/interface/face_collection.rb +4 -2
- data/lib/puppet/interface/option.rb +36 -15
- data/lib/puppet/interface/option_builder.rb +23 -9
- data/lib/puppet/interface/option_manager.rb +8 -3
- data/lib/puppet/metatype/manager.rb +7 -3
- data/lib/puppet/module.rb +18 -21
- data/lib/puppet/module_tool/errors/installer.rb +18 -20
- data/lib/puppet/module_tool/errors/shared.rb +20 -15
- data/lib/puppet/module_tool/errors/uninstaller.rb +1 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
- data/lib/puppet/module_tool/tar/mini.rb +57 -4
- data/lib/puppet/network/auth_config_parser.rb +18 -13
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/client_request.rb +1 -1
- data/lib/puppet/network/format.rb +3 -3
- data/lib/puppet/network/http/api/indirection_type.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
- data/lib/puppet/network/http/error.rb +7 -7
- data/lib/puppet/network/http/factory.rb +9 -0
- data/lib/puppet/network/http/rack.rb +2 -2
- data/lib/puppet/network/http/webrick.rb +2 -4
- data/lib/puppet/node.rb +25 -6
- data/lib/puppet/node/environment.rb +14 -0
- data/lib/puppet/node/facts.rb +9 -0
- data/lib/puppet/parameter.rb +3 -3
- data/lib/puppet/parameter/value_collection.rb +9 -9
- data/lib/puppet/parser/ast/leaf.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +2 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/compiler.rb +6 -5
- data/lib/puppet/parser/functions.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -4
- data/lib/puppet/parser/functions/inline_template.rb +1 -2
- data/lib/puppet/parser/functions/sprintf.rb +17 -3
- data/lib/puppet/parser/functions/template.rb +6 -2
- data/lib/puppet/parser/resource.rb +30 -31
- data/lib/puppet/parser/scope.rb +20 -11
- data/lib/puppet/parser/templatewrapper.rb +4 -3
- data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -1
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +21 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +2 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -1
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/functions/function.rb +8 -2
- data/lib/puppet/pops/issue_reporter.rb +7 -2
- data/lib/puppet/pops/issues.rb +10 -4
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/loader/module_loaders.rb +5 -2
- data/lib/puppet/pops/loader/static_loader.rb +1 -1
- data/lib/puppet/pops/loaders.rb +7 -3
- data/lib/puppet/pops/lookup/explainer.rb +2 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +2 -2
- data/lib/puppet/pops/lookup/lookup_adapter.rb +4 -4
- data/lib/puppet/pops/merge_strategy.rb +6 -3
- data/lib/puppet/pops/migration/migration_checker.rb +8 -8
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +4 -2
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +2 -1
- data/lib/puppet/pops/types/iterable.rb +2 -0
- data/lib/puppet/pops/types/p_object_type.rb +36 -15
- data/lib/puppet/pops/types/type_calculator.rb +2 -1
- data/lib/puppet/pops/types/type_factory.rb +3 -1
- data/lib/puppet/pops/types/type_mismatch_describer.rb +19 -6
- data/lib/puppet/pops/types/type_parser.rb +7 -7
- data/lib/puppet/pops/types/types.rb +10 -4
- data/lib/puppet/pops/validation.rb +14 -12
- data/lib/puppet/property.rb +14 -6
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/provider.rb +4 -4
- data/lib/puppet/provider/group/aix.rb +4 -2
- data/lib/puppet/provider/ldap.rb +2 -2
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +7 -4
- data/lib/puppet/provider/nameservice/directoryservice.rb +4 -3
- data/lib/puppet/provider/package/aix.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +7 -8
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +9 -6
- data/lib/puppet/provider/package/pkgutil.rb +3 -3
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +4 -4
- data/lib/puppet/provider/selmodule/semodule.rb +5 -3
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +2 -0
- data/lib/puppet/provider/service/systemd.rb +1 -0
- data/lib/puppet/provider/service/upstart.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +13 -6
- data/lib/puppet/provider/user/openbsd.rb +2 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -1
- data/lib/puppet/provider/zone/solaris.rb +2 -2
- data/lib/puppet/reference/configuration.rb +4 -2
- data/lib/puppet/relationship.rb +2 -1
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource.rb +7 -5
- data/lib/puppet/resource/capability_finder.rb +14 -11
- data/lib/puppet/resource/catalog.rb +33 -18
- data/lib/puppet/resource/type.rb +5 -5
- data/lib/puppet/settings.rb +19 -13
- data/lib/puppet/settings/base_setting.rb +23 -8
- data/lib/puppet/settings/config_file.rb +14 -4
- data/lib/puppet/settings/environment_conf.rb +19 -9
- data/lib/puppet/ssl/base.rb +9 -4
- data/lib/puppet/ssl/oids.rb +8 -2
- data/lib/puppet/syntax_checkers/base64.rb +5 -6
- data/lib/puppet/transaction.rb +7 -3
- data/lib/puppet/transaction/persistence.rb +16 -1
- data/lib/puppet/transaction/report.rb +6 -0
- data/lib/puppet/type.rb +27 -35
- data/lib/puppet/type/file.rb +2 -1
- data/lib/puppet/type/file/data_sync.rb +2 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/schedule.rb +26 -14
- data/lib/puppet/type/user.rb +9 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +27 -21
- data/lib/puppet/util/at_fork/solaris.rb +6 -4
- data/lib/puppet/util/command_line.rb +5 -0
- data/lib/puppet/util/command_line/trollop.rb +6 -5
- data/lib/puppet/util/errors.rb +61 -8
- data/lib/puppet/util/fileparsing.rb +3 -5
- data/lib/puppet/util/http_proxy.rb +14 -6
- data/lib/puppet/util/instance_loader.rb +1 -3
- data/lib/puppet/util/ldap/manager.rb +6 -3
- data/lib/puppet/util/log.rb +19 -24
- data/lib/puppet/util/logging.rb +21 -28
- data/lib/puppet/util/methodhelper.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +21 -13
- data/lib/puppet/util/plist.rb +3 -1
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/reference.rb +2 -3
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/windows/eventlog.rb +10 -5
- data/lib/puppet/util/windows/file.rb +61 -9
- data/lib/puppet/util/windows/process.rb +1 -1
- data/lib/puppet/util/windows/taskscheduler.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +5 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/en/puppet.po +19 -0
- data/locales/ja/puppet.po +2739 -809
- data/locales/puppet.pot +2367 -734
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +2 -0
- data/spec/integration/agent/logging_spec.rb +2 -0
- data/spec/integration/faces/plugin_spec.rb +1 -0
- data/spec/integration/network/authconfig_spec.rb +2 -2
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +16 -3
- data/spec/integration/provider/cron/crontab_spec.rb +1 -0
- data/spec/integration/transaction/report_spec.rb +5 -0
- data/spec/lib/matchers/json.rb +14 -13
- data/spec/unit/agent_spec.rb +33 -0
- data/spec/unit/application/config_spec.rb +4 -0
- data/spec/unit/application/lookup_spec.rb +30 -0
- data/spec/unit/application_spec.rb +18 -0
- data/spec/unit/configurer/downloader_factory_spec.rb +33 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +71 -16
- data/spec/unit/environments_spec.rb +15 -0
- data/spec/unit/face/config_spec.rb +8 -9
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +50 -4
- data/spec/unit/file_serving/configuration/parser_spec.rb +2 -2
- data/spec/unit/file_serving/mount/locales_spec.rb +73 -0
- data/spec/unit/functions/break_spec.rb +108 -50
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/hiera_spec.rb +0 -1
- data/spec/unit/functions/lookup_spec.rb +85 -19
- data/spec/unit/functions/next_spec.rb +1 -1
- data/spec/unit/functions/return_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +125 -0
- data/spec/unit/gettext/module_loading_spec.rb +53 -0
- data/spec/unit/indirector/json_spec.rb +0 -11
- data/spec/unit/indirector/node/exec_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface_spec.rb +12 -0
- data/spec/unit/module_spec.rb +0 -28
- data/spec/unit/module_tool/tar/mini_spec.rb +34 -5
- data/spec/unit/network/http/factory_spec.rb +22 -0
- data/spec/unit/network/http/webrick_spec.rb +30 -29
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node_spec.rb +102 -16
- data/spec/unit/parser/environment_compiler_spec.rb +1 -1
- data/spec/unit/parser/functions/sprintf_spec.rb +26 -0
- data/spec/unit/parser/resource/param_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +9 -9
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +40 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
- data/spec/unit/provider/selmodule_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +1 -1
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +12 -2
- data/spec/unit/settings/config_file_spec.rb +1 -1
- data/spec/unit/transaction/persistence_spec.rb +42 -0
- data/spec/unit/transaction/report_spec.rb +19 -4
- data/spec/unit/transaction_spec.rb +27 -0
- data/spec/unit/type/schedule_spec.rb +14 -0
- data/spec/unit/type_spec.rb +3 -3
- data/spec/unit/util/errors_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +37 -0
- data/spec/unit/util/log_spec.rb +3 -3
- data/spec/unit/util/logging_spec.rb +7 -7
- data/spec/unit/util/monkey_patches_spec.rb +6 -2
- metadata +3433 -3416
- checksums.yaml +0 -7
- data/spec/unit/gettext_config_spec.rb +0 -57
@@ -49,10 +49,12 @@ class Puppet::Interface::ActionBuilder
|
|
49
49
|
# @dsl Faces
|
50
50
|
def when_rendering(type = nil, &block)
|
51
51
|
if type.nil? then # the default error message sucks --daniel 2011-04-18
|
52
|
-
|
52
|
+
#TRANSLATORS 'when_rendering' is a method name and should not be translated
|
53
|
+
raise ArgumentError, _('You must give a rendering format to when_rendering')
|
53
54
|
end
|
54
55
|
if block.nil? then
|
55
|
-
|
56
|
+
#TRANSLATORS 'when_rendering' is a method name and should not be translated
|
57
|
+
raise ArgumentError, _('You must give a block to when_rendering')
|
56
58
|
end
|
57
59
|
@action.set_rendering_method_for(type, block)
|
58
60
|
end
|
@@ -111,11 +113,15 @@ class Puppet::Interface::ActionBuilder
|
|
111
113
|
# Sets the default rendering format
|
112
114
|
# @api private
|
113
115
|
def render_as(value = nil)
|
114
|
-
value.nil?
|
116
|
+
if value.nil?
|
117
|
+
#TRANSLATORS 'render_as' is a method name and should not be translated
|
118
|
+
raise ArgumentError, _("You must give a rendering format to render_as")
|
119
|
+
end
|
115
120
|
|
116
121
|
formats = Puppet::Network::FormatHandler.formats
|
117
122
|
unless formats.include? value
|
118
|
-
raise ArgumentError, "
|
123
|
+
raise ArgumentError, _("%{value} is not a valid rendering format: %{formats_list}") %
|
124
|
+
{ value: value.inspect, formats_list: formats.sort.join(", ")}
|
119
125
|
end
|
120
126
|
|
121
127
|
@action.render_as = value
|
@@ -144,6 +150,9 @@ class Puppet::Interface::ActionBuilder
|
|
144
150
|
@face = face
|
145
151
|
@action = Puppet::Interface::Action.new(face, name)
|
146
152
|
instance_eval(&block)
|
147
|
-
@action.when_invoked
|
153
|
+
unless @action.when_invoked
|
154
|
+
#TRANSLATORS 'when_invoked' is a method name and should not be translated and 'block' is a Ruby code block
|
155
|
+
raise ArgumentError, _("actions need to know what to do when_invoked; please add the block")
|
156
|
+
end
|
148
157
|
end
|
149
158
|
end
|
@@ -17,7 +17,7 @@ module Puppet::Interface::ActionManager
|
|
17
17
|
# @dsl Faces
|
18
18
|
def action(name, &block)
|
19
19
|
@actions ||= {}
|
20
|
-
Puppet.warning "Redefining action
|
20
|
+
Puppet.warning _("Redefining action %{name} for %{self}") % { name: name, self: self } if action?(name)
|
21
21
|
|
22
22
|
action = Puppet::Interface::ActionBuilder.build(self, name, &block)
|
23
23
|
|
@@ -56,7 +56,8 @@ class Puppet::Interface
|
|
56
56
|
# @dsl Faces
|
57
57
|
attr_doc :summary do |value|
|
58
58
|
value =~ /\n/ and
|
59
|
-
|
59
|
+
#TRANSLATORS 'Face' refers to a programming API in Puppet, 'summary' and 'description' are specifc attribute names and should not be translated
|
60
|
+
raise ArgumentError, _("Face summary should be a single line; put the long text in 'description' instead.")
|
60
61
|
value
|
61
62
|
end
|
62
63
|
|
@@ -200,11 +201,13 @@ class Puppet::Interface
|
|
200
201
|
def author(value = nil)
|
201
202
|
unless value.nil? then
|
202
203
|
unless value.is_a? String
|
203
|
-
|
204
|
+
#TRANSLATORS 'author' is an attribute name and should not be translated
|
205
|
+
raise ArgumentError, _('author must be a string; use multiple statements for multiple authors')
|
204
206
|
end
|
205
207
|
|
206
208
|
if value =~ /\n/ then
|
207
|
-
|
209
|
+
#TRANSLATORS 'author' is an attribute name and should not be translated
|
210
|
+
raise ArgumentError, _('author should be a single line; use multiple statements for multiple authors')
|
208
211
|
end
|
209
212
|
@authors.push(Puppet::Interface::DocGen.strip_whitespace(value))
|
210
213
|
end
|
@@ -223,7 +226,8 @@ class Puppet::Interface
|
|
223
226
|
# I think it's a bug that this ends up being the exposed
|
224
227
|
# version of `author` on ActionBuilder
|
225
228
|
if Array(value).any? {|x| x =~ /\n/ } then
|
226
|
-
|
229
|
+
#TRANSLATORS 'author' is an attribute name and should not be translated
|
230
|
+
raise ArgumentError, _('author should be a single line; use multiple statements')
|
227
231
|
end
|
228
232
|
@authors = Array(value).map{|x| Puppet::Interface::DocGen.strip_whitespace(x) }
|
229
233
|
end
|
@@ -243,7 +247,8 @@ class Puppet::Interface
|
|
243
247
|
# @dsl Faces
|
244
248
|
def copyright(owner = nil, years = nil)
|
245
249
|
if years.nil? and not owner.nil? then
|
246
|
-
|
250
|
+
#TRANSLATORS 'copyright' is an attribute name and should not be translated
|
251
|
+
raise ArgumentError, _('copyright takes the owners names, then the years covered')
|
247
252
|
end
|
248
253
|
self.copyright_owner = owner unless owner.nil?
|
249
254
|
self.copyright_years = years unless years.nil?
|
@@ -266,7 +271,8 @@ class Puppet::Interface
|
|
266
271
|
when String then @copyright_owner = value
|
267
272
|
when Array then @copyright_owner = value.join(", ")
|
268
273
|
else
|
269
|
-
|
274
|
+
#TRANSLATORS 'copyright' is an attribute name and should not be translated
|
275
|
+
raise ArgumentError, _("copyright owner must be a string or an array of strings")
|
270
276
|
end
|
271
277
|
@copyright_owner
|
272
278
|
end
|
@@ -302,7 +308,9 @@ class Puppet::Interface
|
|
302
308
|
fault = "after #{future}"
|
303
309
|
end
|
304
310
|
if fault then
|
305
|
-
|
311
|
+
#TRANSLATORS 'copyright' is an attribute name and should not be translated
|
312
|
+
raise ArgumentError, _("copyright with a year %{value} is very strange; did you accidentally add or subtract two years?") %
|
313
|
+
{ value: fault }
|
306
314
|
end
|
307
315
|
|
308
316
|
input
|
@@ -314,11 +322,13 @@ class Puppet::Interface
|
|
314
322
|
part.to_i
|
315
323
|
elsif found = part.split(/-/) then
|
316
324
|
unless found.length == 2 and found.all? {|x| x.strip =~ /^\d+$/ }
|
317
|
-
|
325
|
+
#TRANSLATORS 'copyright' is an attribute name and should not be translated
|
326
|
+
raise ArgumentError, _("%{value} is not a good copyright year or range") % { value: part.inspect }
|
318
327
|
end
|
319
328
|
Range.new(found[0].to_i, found[1].to_i)
|
320
329
|
else
|
321
|
-
|
330
|
+
#TRANSLATORS 'copyright' is an attribute name and should not be translated
|
331
|
+
raise ArgumentError, _("%{value} is not a good copyright year or range") % { value: part.inspect }
|
322
332
|
end
|
323
333
|
end
|
324
334
|
|
@@ -335,7 +345,8 @@ class Puppet::Interface
|
|
335
345
|
result
|
336
346
|
|
337
347
|
else
|
338
|
-
|
348
|
+
#TRANSLATORS 'copyright' is an attribute name and should not be translated
|
349
|
+
raise ArgumentError, _("%{value} is not a good copyright year, set, or range") % { value: input.inspect }
|
339
350
|
end
|
340
351
|
end
|
341
352
|
end
|
@@ -111,7 +111,7 @@ module Puppet::Interface::FaceCollection
|
|
111
111
|
nil
|
112
112
|
rescue SyntaxError => e
|
113
113
|
raise unless e.message =~ %r{#{path}\.rb:\d+: }
|
114
|
-
Puppet.err "Failed to load face
|
114
|
+
Puppet.err _("Failed to load face %{name}:\n%{detail}") % { name: name, detail: e }
|
115
115
|
# ...but we just carry on after complaining.
|
116
116
|
nil
|
117
117
|
end
|
@@ -122,7 +122,9 @@ module Puppet::Interface::FaceCollection
|
|
122
122
|
|
123
123
|
def self.underscorize(name)
|
124
124
|
unless name.to_s =~ /^[-_a-z][-_a-z0-9]*$/i then
|
125
|
-
|
125
|
+
#TRANSLATORS 'face' refers to a programming API in Puppet
|
126
|
+
raise ArgumentError, _("%{name} (%{class_name}) is not a valid face name") %
|
127
|
+
{ name: name.inspect, class_name: name.class }
|
126
128
|
end
|
127
129
|
|
128
130
|
name.to_s.downcase.split(/[-_]/).join('_').to_sym
|
@@ -18,7 +18,7 @@ class Puppet::Interface::Option
|
|
18
18
|
declaration.each do |item|
|
19
19
|
if item.is_a? String and item.to_s =~ /^-/ then
|
20
20
|
unless item =~ /^-[a-z]\b/ or item =~ /^--[^-]/ then
|
21
|
-
raise ArgumentError, "
|
21
|
+
raise ArgumentError, _("%{option}: long options need two dashes (--)") % { option: item.inspect }
|
22
22
|
end
|
23
23
|
@optparse << item
|
24
24
|
|
@@ -33,20 +33,21 @@ class Puppet::Interface::Option
|
|
33
33
|
# jeffweiss 17 april 2012
|
34
34
|
name = optparse_to_optionname(item)
|
35
35
|
if Puppet.settings.include? name then
|
36
|
-
raise ArgumentError, "
|
36
|
+
raise ArgumentError, _("%{option}: already defined in puppet") % { option: item.inspect }
|
37
37
|
end
|
38
38
|
if dup = dups[name] then
|
39
|
-
raise ArgumentError, "
|
39
|
+
raise ArgumentError, _("%{option}: duplicates existing alias %{duplicate} in %{parent}") %
|
40
|
+
{ option: item.inspect, duplicate: dup.inspect, parent: @parent }
|
40
41
|
else
|
41
42
|
dups[name] = item
|
42
43
|
end
|
43
44
|
else
|
44
|
-
raise ArgumentError, "
|
45
|
+
raise ArgumentError, _("%{option} is not valid for an option argument") % { option: item.inspect }
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
49
|
if @optparse.empty? then
|
49
|
-
raise ArgumentError, "No option declarations found while building"
|
50
|
+
raise ArgumentError, _("No option declarations found while building")
|
50
51
|
end
|
51
52
|
|
52
53
|
# Now, infer the name from the options; we prefer the first long option as
|
@@ -59,15 +60,17 @@ class Puppet::Interface::Option
|
|
59
60
|
# relax this rule later if we find a valid use case for it. --daniel 2011-03-30
|
60
61
|
@argument = @optparse.any? { |o| o =~ /[ =]/ }
|
61
62
|
if @argument and not @optparse.all? { |o| o =~ /[ =]/ } then
|
62
|
-
raise ArgumentError, "Option
|
63
|
+
raise ArgumentError, _("Option %{name} is inconsistent about taking an argument") % { name: @name }
|
63
64
|
end
|
64
65
|
|
65
66
|
# Is our argument optional? The rules about consistency apply here, also,
|
66
67
|
# just like they do to taking arguments at all. --daniel 2011-03-30
|
67
68
|
@optional_argument = @optparse.any? { |o| o=~/[ =]\[/ }
|
68
|
-
@optional_argument
|
69
|
+
if @optional_argument
|
70
|
+
raise ArgumentError, _("Options with optional arguments are not supported")
|
71
|
+
end
|
69
72
|
if @optional_argument and not @optparse.all? { |o| o=~/[ =]\[/ } then
|
70
|
-
raise ArgumentError, "Option
|
73
|
+
raise ArgumentError, _("Option %{name} is inconsistent about the argument being optional") % { name: @name }
|
71
74
|
end
|
72
75
|
end
|
73
76
|
|
@@ -82,7 +85,7 @@ class Puppet::Interface::Option
|
|
82
85
|
# @api private
|
83
86
|
def optparse_to_optionname(declaration)
|
84
87
|
unless found = declaration.match(/^-+(?:\[no-\])?([^ =]+)/) then
|
85
|
-
raise ArgumentError, "Can't find a name in the declaration
|
88
|
+
raise ArgumentError, _("Can't find a name in the declaration %{declaration}") % { declaration: declaration.inspect }
|
86
89
|
end
|
87
90
|
found.captures.first
|
88
91
|
end
|
@@ -90,7 +93,9 @@ class Puppet::Interface::Option
|
|
90
93
|
# @api private
|
91
94
|
def optparse_to_name(declaration)
|
92
95
|
name = optparse_to_optionname(declaration).tr('-', '_')
|
93
|
-
|
96
|
+
unless name.to_s =~ /^[a-z]\w*$/
|
97
|
+
raise _("%{name} is an invalid option name") % { name: name.inspect }
|
98
|
+
end
|
94
99
|
name.to_sym
|
95
100
|
end
|
96
101
|
|
@@ -110,8 +115,14 @@ class Puppet::Interface::Option
|
|
110
115
|
end
|
111
116
|
|
112
117
|
def default=(proc)
|
113
|
-
required
|
114
|
-
|
118
|
+
if required
|
119
|
+
raise ArgumentError, _("%{name} can't be optional and have a default value") % { name: self }
|
120
|
+
end
|
121
|
+
unless proc.is_a? Proc
|
122
|
+
#TRANSLATORS 'proc' is a Ruby block of code
|
123
|
+
raise ArgumentError, _("default value for %{name} is a %{class_name}, not a proc") %
|
124
|
+
{ name: self, class_name: proc.class.name.inspect }
|
125
|
+
end
|
115
126
|
@default = proc
|
116
127
|
end
|
117
128
|
|
@@ -122,20 +133,30 @@ class Puppet::Interface::Option
|
|
122
133
|
attr_reader :parent, :name, :aliases, :optparse
|
123
134
|
attr_accessor :required
|
124
135
|
def required=(value)
|
125
|
-
has_default?
|
136
|
+
if has_default?
|
137
|
+
raise ArgumentError, _("%{name} can't be optional and have a default value") % { name: self }
|
138
|
+
end
|
126
139
|
@required = value
|
127
140
|
end
|
128
141
|
|
129
142
|
attr_accessor :before_action
|
130
143
|
def before_action=(proc)
|
131
|
-
proc.is_a? Proc
|
144
|
+
unless proc.is_a? Proc
|
145
|
+
#TRANSLATORS 'proc' is a Ruby block of code
|
146
|
+
raise ArgumentError, _("before action hook for %{name} is a %{class_name}, not a proc") %
|
147
|
+
{ name: self, class_name: proc.class.name.inspect }
|
148
|
+
end
|
132
149
|
@before_action =
|
133
150
|
@parent.__send__(:__add_method, __decoration_name(:before), proc)
|
134
151
|
end
|
135
152
|
|
136
153
|
attr_accessor :after_action
|
137
154
|
def after_action=(proc)
|
138
|
-
proc.is_a? Proc
|
155
|
+
unless proc.is_a? Proc
|
156
|
+
#TRANSLATORS 'proc' is a Ruby block of code
|
157
|
+
raise ArgumentError, _("after action hook for %{name} is a %{class_name}, not a proc") %
|
158
|
+
{ name: self, class_name: proc.class.name.inspect }
|
159
|
+
end
|
139
160
|
@after_action =
|
140
161
|
@parent.__send__(:__add_method, __decoration_name(:after), proc)
|
141
162
|
end
|
@@ -40,12 +40,17 @@ class Puppet::Interface::OptionBuilder
|
|
40
40
|
# @api public
|
41
41
|
# @dsl Faces
|
42
42
|
def before_action(&block)
|
43
|
-
|
43
|
+
unless block
|
44
|
+
#TRANSLATORS 'before_action' is a method name and should not be translated
|
45
|
+
raise ArgumentError, _("%{option} before_action requires a block") % { option: @option }
|
46
|
+
end
|
44
47
|
if @option.before_action
|
45
|
-
|
48
|
+
#TRANSLATORS 'before_action' is a method name and should not be translated
|
49
|
+
raise ArgumentError, _("%{option} already has a before_action set") % { option: @option }
|
46
50
|
end
|
47
51
|
unless block.arity == 3 then
|
48
|
-
|
52
|
+
#TRANSLATORS 'before_action' is a method name and should not be translated
|
53
|
+
raise ArgumentError, _("before_action takes three arguments, action, args, and options")
|
49
54
|
end
|
50
55
|
@option.before_action = block
|
51
56
|
end
|
@@ -55,12 +60,17 @@ class Puppet::Interface::OptionBuilder
|
|
55
60
|
# @api public
|
56
61
|
# @dsl Faces
|
57
62
|
def after_action(&block)
|
58
|
-
|
63
|
+
unless block
|
64
|
+
#TRANSLATORS 'after_action' is a method name and should not be translated
|
65
|
+
raise ArgumentError, _("%{option} after_action requires a block") % { option: @option }
|
66
|
+
end
|
59
67
|
if @option.after_action
|
60
|
-
|
68
|
+
#TRANSLATORS 'after_action' is a method name and should not be translated
|
69
|
+
raise ArgumentError, _("%{option} already has an after_action set") % { option: @option }
|
61
70
|
end
|
62
71
|
unless block.arity == 3 then
|
63
|
-
|
72
|
+
#TRANSLATORS 'after_action' is a method name and should not be translated
|
73
|
+
raise ArgumentError, _("after_action takes three arguments, action, args, and options")
|
64
74
|
end
|
65
75
|
@option.after_action = block
|
66
76
|
end
|
@@ -79,12 +89,16 @@ class Puppet::Interface::OptionBuilder
|
|
79
89
|
# @api public
|
80
90
|
# @dsl Faces
|
81
91
|
def default_to(&block)
|
82
|
-
|
92
|
+
unless block
|
93
|
+
#TRANSLATORS 'default_to' is a method name and should not be translated
|
94
|
+
raise ArgumentError, _("%{option} default_to requires a block") % { option: @option }
|
95
|
+
end
|
83
96
|
if @option.has_default?
|
84
|
-
raise ArgumentError, "
|
97
|
+
raise ArgumentError, _("%{option} already has a default value") % { option: @option }
|
85
98
|
end
|
86
99
|
unless block.arity == 0
|
87
|
-
|
100
|
+
#TRANSLATORS 'default_to' is a method name and should not be translated
|
101
|
+
raise ArgumentError, _("%{option} default_to block should not take any arguments") % { option: @option }
|
88
102
|
end
|
89
103
|
@option.default = block
|
90
104
|
end
|
@@ -9,7 +9,10 @@ module Puppet::Interface::OptionManager
|
|
9
9
|
def display_global_options(*args)
|
10
10
|
@display_global_options ||= []
|
11
11
|
[args].flatten.each do |refopt|
|
12
|
-
|
12
|
+
unless Puppet.settings.include?(refopt)
|
13
|
+
#TRANSLATORS 'Puppet.settings' references to the Puppet settings options and should not be translated
|
14
|
+
raise ArgumentError, _("Global option %{option} does not exist in Puppet.settings") % { option: refopt }
|
15
|
+
end
|
13
16
|
@display_global_options << refopt if refopt
|
14
17
|
end
|
15
18
|
@display_global_options.uniq!
|
@@ -51,13 +54,15 @@ module Puppet::Interface::OptionManager
|
|
51
54
|
|
52
55
|
option.aliases.each do |name|
|
53
56
|
if conflict = get_option(name) then
|
54
|
-
raise ArgumentError, "Option
|
57
|
+
raise ArgumentError, _("Option %{option} conflicts with existing option %{conflict}") %
|
58
|
+
{ option: option, conflict: conflict }
|
55
59
|
end
|
56
60
|
|
57
61
|
actions.each do |action|
|
58
62
|
action = get_action(action)
|
59
63
|
if conflict = action.get_option(name) then
|
60
|
-
raise ArgumentError, "Option
|
64
|
+
raise ArgumentError, _("Option %{option} conflicts with existing option %{conflict} on %{action}") %
|
65
|
+
{ option: option, conflict: conflict, action: action }
|
61
66
|
end
|
62
67
|
end
|
63
68
|
end
|
@@ -72,7 +72,9 @@ module Manager
|
|
72
72
|
def newtype(name, options = {}, &block)
|
73
73
|
# Handle backward compatibility
|
74
74
|
unless options.is_a?(Hash)
|
75
|
-
|
75
|
+
#TRANSLATORS 'Puppet::Type.newtype' should not be translated
|
76
|
+
Puppet.warning(_("Puppet::Type.newtype(%{name}) now expects a hash as the second argument, not %{argument}") %
|
77
|
+
{ name: name, argument: options.inspect})
|
76
78
|
end
|
77
79
|
|
78
80
|
# First make sure we don't have a method sitting around
|
@@ -107,7 +109,8 @@ module Manager
|
|
107
109
|
# Now define a "new<type>" method for convenience.
|
108
110
|
if self.respond_to? newmethod
|
109
111
|
# Refuse to overwrite existing methods like 'newparam' or 'newtype'.
|
110
|
-
|
112
|
+
#TRANSLATORS 'new%{method}' will become a method name, do not translate this string
|
113
|
+
Puppet.warning(_("'new%{method}' method already exists; skipping") % { method: name.to_s })
|
111
114
|
else
|
112
115
|
selfobj.send(:define_method, newmethod) do |*args|
|
113
116
|
klass.new(*args)
|
@@ -169,7 +172,8 @@ module Manager
|
|
169
172
|
end
|
170
173
|
# Try loading the type.
|
171
174
|
if typeloader.load(name, Puppet.lookup(:current_environment))
|
172
|
-
|
175
|
+
#TRANSLATORS 'puppet/type/%{name}' should not be translated
|
176
|
+
Puppet.warning(_("Loaded puppet/type/%{name} but no class was created") % { name: name }) unless @types.include? name
|
173
177
|
elsif !Puppet[:always_retry_plugins]
|
174
178
|
# PUP-5482 - Only look for a type once if plugin retry is disabled
|
175
179
|
@types[name] = nil
|
data/lib/puppet/module.rb
CHANGED
@@ -23,6 +23,7 @@ class Puppet::Module
|
|
23
23
|
"templates" => "templates",
|
24
24
|
"plugins" => "lib",
|
25
25
|
"pluginfacts" => "facts.d",
|
26
|
+
"locales" => "locales",
|
26
27
|
}
|
27
28
|
|
28
29
|
# Find and return the +module+ that +path+ belongs to. If +path+ is
|
@@ -96,9 +97,6 @@ class Puppet::Module
|
|
96
97
|
load_metadata
|
97
98
|
|
98
99
|
@absolute_path_to_manifests = Puppet::FileSystem::PathPattern.absolute(manifests)
|
99
|
-
|
100
|
-
# i18n initialization for modules
|
101
|
-
initialize_i18n unless Puppet[:disable_i18n]
|
102
100
|
end
|
103
101
|
|
104
102
|
# @deprecated The puppetversion module metadata field is no longer used.
|
@@ -208,7 +206,8 @@ class Puppet::Module
|
|
208
206
|
rescue Errno::ENOENT
|
209
207
|
{}
|
210
208
|
rescue JSON::JSONError => e
|
211
|
-
|
209
|
+
#TRANSLATORS 'metadata.json' is a specific file name and should not be translated.
|
210
|
+
msg = _("%{name} has an invalid and unparsable metadata.json file. The parse error: %{error}") % { name: name, error: e.message }
|
212
211
|
case Puppet[:strict]
|
213
212
|
when :off
|
214
213
|
Puppet.debug(msg)
|
@@ -302,6 +301,21 @@ class Puppet::Module
|
|
302
301
|
subpath("facts.d")
|
303
302
|
end
|
304
303
|
|
304
|
+
#@return [String]
|
305
|
+
def locale_directory
|
306
|
+
subpath("locales")
|
307
|
+
end
|
308
|
+
|
309
|
+
# Returns true if the module has translation files for the
|
310
|
+
# given locale.
|
311
|
+
# @param [String] locale the two-letter language code to check
|
312
|
+
# for translations
|
313
|
+
# @return true if the module has a directory for the locale, false
|
314
|
+
# false otherwise
|
315
|
+
def has_translations?(locale)
|
316
|
+
return Puppet::FileSystem.exist?(File.join(locale_directory, locale))
|
317
|
+
end
|
318
|
+
|
305
319
|
def has_external_facts?
|
306
320
|
File.directory?(plugin_fact_directory)
|
307
321
|
end
|
@@ -422,23 +436,6 @@ class Puppet::Module
|
|
422
436
|
@strict_semver
|
423
437
|
end
|
424
438
|
|
425
|
-
def initialize_i18n
|
426
|
-
# this name takes the form "namespace-module", and should match the name of
|
427
|
-
# the PO file containing the translations.
|
428
|
-
module_name = @forge_name ? @forge_name.gsub("/", "-") : name
|
429
|
-
return if Puppet::GettextConfig.translations_loaded?(module_name)
|
430
|
-
|
431
|
-
locales_path = File.absolute_path('locales', path)
|
432
|
-
|
433
|
-
if Puppet::GettextConfig.load_translations(module_name, locales_path, :po)
|
434
|
-
Puppet.debug "i18n initialized for #{module_name}"
|
435
|
-
elsif Puppet::GettextConfig.gettext_loaded?
|
436
|
-
Puppet.debug "Could not find translation files for #{module_name} at #{locales_path}. Skipping i18n initialization."
|
437
|
-
else
|
438
|
-
Puppet.debug "No gettext library found, skipping i18n initialization."
|
439
|
-
end
|
440
|
-
end
|
441
|
-
|
442
439
|
private
|
443
440
|
|
444
441
|
def wanted_manifests_from(pattern)
|