puppet 5.3.2-x86-mingw32 → 5.3.3-x86-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.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Gemfile +5 -1
- data/Rakefile +9 -4
- data/lib/puppet.rb +4 -5
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/forge.rb +9 -3
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/gettext/config.rb +86 -28
- data/lib/puppet/graph/relationship_graph.rb +6 -0
- data/lib/puppet/indirector/catalog/compiler.rb +25 -5
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/module.rb +9 -18
- data/lib/puppet/pops/types/p_binary_type.rb +9 -2
- data/lib/puppet/pops/types/p_object_type.rb +9 -3
- data/lib/puppet/pops/types/ruby_generator.rb +65 -24
- data/lib/puppet/provider/service/base.rb +21 -8
- data/lib/puppet/provider/zfs/zfs.rb +5 -1
- data/lib/puppet/util/windows/file.rb +35 -4
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/ja/puppet.po +92 -64
- data/locales/puppet.pot +28 -24
- data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +3 -0
- data/spec/integration/file_bucket/file_spec.rb +20 -5
- data/spec/integration/transaction_spec.rb +35 -2
- data/spec/unit/forge/forge_spec.rb +2 -2
- data/spec/unit/forge_spec.rb +105 -0
- data/spec/unit/gettext_config_spec.rb +4 -4
- data/spec/unit/graph/relationship_graph_spec.rb +15 -0
- data/spec/unit/module_spec.rb +8 -13
- data/spec/unit/pops/types/ruby_generator_spec.rb +192 -0
- data/spec/unit/provider/service/base_spec.rb +20 -0
- data/spec/unit/provider/zfs/zfs_spec.rb +7 -1
- data/spec/unit/type/nagios_spec.rb +21 -1
- metadata +3374 -3394
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 20df1f4986bf723f1beda476aea3ed1bdb151e54
         | 
| 4 | 
            +
              data.tar.gz: d20d1b68713479b3e1cb1e6833825325cd4582b2
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: aff84c546b8d86b5eb19677a3847807a955a97da191d8e7fb971ff82a2191a424534e2bc0124d448aac93bf2315c12e8a75d1e52d2571b38d7d3c0b2d62b1452
         | 
| 7 | 
            +
              data.tar.gz: 8e9ff5e3fd6dc81f3884a9252cb3bb6d522a72b8addc17df22fcba2b05bcfd75f953197780426746ce11237bc99ed39f23e4ce504a14adf7144b8a6a3c63da83
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -53,7 +53,11 @@ group(:development, :test) do | |
| 53 53 | 
             
              gem "multi_json", "1.7.7", :require => false, :platforms => [:ruby, :jruby]
         | 
| 54 54 | 
             
              gem "json-schema", "2.1.1", :require => false, :platforms => [:ruby, :jruby]
         | 
| 55 55 |  | 
| 56 | 
            -
               | 
| 56 | 
            +
              if RUBY_VERSION >= '2.0'
         | 
| 57 | 
            +
                # pin rubocop as 0.50 requires a higher version of the rainbow gem (see below)
         | 
| 58 | 
            +
                gem 'rubocop', '~> 0.49.1', :platforms => [:ruby]
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 57 61 | 
             
              # pin rainbow gem as 2.2.1 requires rubygems 2.6.9+ and (donotwant)
         | 
| 58 62 | 
             
              gem "rainbow", "< 2.2.1", :platforms => [:ruby]
         | 
| 59 63 |  | 
    
        data/Rakefile
    CHANGED
    
    | @@ -69,10 +69,15 @@ end | |
| 69 69 |  | 
| 70 70 | 
             
            desc 'run static analysis with rubocop'
         | 
| 71 71 | 
             
            task(:rubocop) do
         | 
| 72 | 
            -
               | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
               | 
| 72 | 
            +
              if RUBY_VERSION < '2.0'
         | 
| 73 | 
            +
                puts 'rubocop tests require Ruby 2.0 or higher'
         | 
| 74 | 
            +
                puts 'skipping rubocop'
         | 
| 75 | 
            +
              else
         | 
| 76 | 
            +
                require 'rubocop'
         | 
| 77 | 
            +
                cli = RuboCop::CLI.new
         | 
| 78 | 
            +
                exit_code = cli.run(%w(--display-cop-names --format simple))
         | 
| 79 | 
            +
                raise "RuboCop detected offenses" if exit_code != 0
         | 
| 80 | 
            +
              end
         | 
| 76 81 | 
             
            end
         | 
| 77 82 |  | 
| 78 83 | 
             
            desc "verify that commit messages match CONTRIBUTING.md requirements"
         | 
    
        data/lib/puppet.rb
    CHANGED
    
    | @@ -42,11 +42,10 @@ module Puppet | |
| 42 42 | 
             
              require 'puppet/environments'
         | 
| 43 43 |  | 
| 44 44 | 
             
              class << self
         | 
| 45 | 
            -
                 | 
| 46 | 
            -
                 | 
| 47 | 
            -
             | 
| 48 | 
            -
                   | 
| 49 | 
            -
                  require 'puppet/gettext/stubs'
         | 
| 45 | 
            +
                Puppet::GettextConfig.create_text_domain('production')
         | 
| 46 | 
            +
                locale_dir = Puppet::GettextConfig.puppet_locale_path
         | 
| 47 | 
            +
                if Puppet::GettextConfig.load_translations('puppet', locale_dir, Puppet::GettextConfig.translation_mode(locale_dir))
         | 
| 48 | 
            +
                  Puppet::GettextConfig.set_locale(Locale.current.language)
         | 
| 50 49 | 
             
                end
         | 
| 51 50 |  | 
| 52 51 | 
             
                include Puppet::Util
         | 
| @@ -52,7 +52,7 @@ require 'strscan' | |
| 52 52 | 
             
            class ::Nagios::Parser::SyntaxError < RuntimeError; end
         | 
| 53 53 |  | 
| 54 54 | 
             
            def parse(src)
         | 
| 55 | 
            -
              if src.respond_to?("force_encoding") then
         | 
| 55 | 
            +
              if (RUBY_VERSION < '2.1.0') && src.respond_to?("force_encoding") then
         | 
| 56 56 | 
             
                src.force_encoding("ASCII-8BIT")
         | 
| 57 57 | 
             
              end
         | 
| 58 58 | 
             
              @ss = StringScanner.new(src)
         | 
| @@ -14,7 +14,7 @@ require 'strscan' | |
| 14 14 | 
             
            class ::Nagios::Parser::SyntaxError < RuntimeError; end
         | 
| 15 15 |  | 
| 16 16 | 
             
            def parse(src)
         | 
| 17 | 
            -
              if src.respond_to?("force_encoding") then
         | 
| 17 | 
            +
              if (RUBY_VERSION < '2.1.0') && src.respond_to?("force_encoding") then
         | 
| 18 18 | 
             
                src.force_encoding("ASCII-8BIT")
         | 
| 19 19 | 
             
              end
         | 
| 20 20 | 
             
              @ss = StringScanner.new(src)
         | 
    
        data/lib/puppet/forge.rb
    CHANGED
    
    | @@ -65,7 +65,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source | |
| 65 65 |  | 
| 66 66 | 
             
                  if response.code == '200'
         | 
| 67 67 | 
             
                    result = JSON.parse(response.body)
         | 
| 68 | 
            -
                    uri = result['pagination']['next']
         | 
| 68 | 
            +
                    uri = decode_uri(result['pagination']['next'])
         | 
| 69 69 | 
             
                    matches.concat result['results']
         | 
| 70 70 | 
             
                  else
         | 
| 71 71 | 
             
                    raise ResponseError.new(:uri => URI.parse(@host).merge(uri), :response => response)
         | 
| @@ -90,7 +90,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source | |
| 90 90 | 
             
              # @see SemanticPuppet::Dependency::Source#fetch
         | 
| 91 91 | 
             
              def fetch(input)
         | 
| 92 92 | 
             
                name = input.tr('/', '-')
         | 
| 93 | 
            -
                uri = "/v3/releases?module=#{name}"
         | 
| 93 | 
            +
                uri = "/v3/releases?module=#{name}&sort_by=version"
         | 
| 94 94 | 
             
                if Puppet[:module_groups]
         | 
| 95 95 | 
             
                  uri += "&module_groups=#{Puppet[:module_groups].gsub('+', ' ')}"
         | 
| 96 96 | 
             
                end
         | 
| @@ -107,7 +107,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source | |
| 107 107 | 
             
                  end
         | 
| 108 108 |  | 
| 109 109 | 
             
                  releases.concat(process(response['results']))
         | 
| 110 | 
            -
                  uri = response['pagination']['next']
         | 
| 110 | 
            +
                  uri = decode_uri(response['pagination']['next'])
         | 
| 111 111 | 
             
                end
         | 
| 112 112 |  | 
| 113 113 | 
             
                return releases
         | 
| @@ -226,4 +226,10 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source | |
| 226 226 |  | 
| 227 227 | 
             
                l.select { |r| r }
         | 
| 228 228 | 
             
              end
         | 
| 229 | 
            +
             | 
| 230 | 
            +
              def decode_uri(uri)
         | 
| 231 | 
            +
                return if uri.nil?
         | 
| 232 | 
            +
             | 
| 233 | 
            +
                URI.decode(uri.gsub('+', ' '))
         | 
| 234 | 
            +
              end
         | 
| 229 235 | 
             
            end
         | 
| @@ -44,8 +44,8 @@ class Puppet::Forge | |
| 44 44 |  | 
| 45 45 | 
             
                # Return a Net::HTTPResponse read for this +path+.
         | 
| 46 46 | 
             
                def make_http_request(path, io = nil)
         | 
| 47 | 
            -
                  Puppet.debug "HTTP GET #{@host}#{path}"
         | 
| 48 47 | 
             
                  request = get_request_object(@uri.path.chomp('/')+path)
         | 
| 48 | 
            +
                  Puppet.debug "HTTP GET #{@host}#{request.path}"
         | 
| 49 49 | 
             
                  return read_response(request, io)
         | 
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| @@ -10,19 +10,58 @@ module Puppet::GettextConfig | |
| 10 10 | 
             
              # Used instead of features because we initialize gettext before features is available.
         | 
| 11 11 | 
             
              # Stubbing gettext if unavailable is handled in puppet.rb.
         | 
| 12 12 | 
             
              begin
         | 
| 13 | 
            -
                require ' | 
| 13 | 
            +
                require 'fast_gettext'
         | 
| 14 14 | 
             
                require 'locale'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                # Make translation methods (e.g. `_()` and `n_()`) available everywhere.
         | 
| 17 | 
            +
                class ::Object
         | 
| 18 | 
            +
                  include FastGettext::Translation
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 15 21 | 
             
                @gettext_loaded = true
         | 
| 16 22 | 
             
              rescue LoadError
         | 
| 23 | 
            +
                # Stub out gettext's `_` and `n_()` methods, which attempt to load translations,
         | 
| 24 | 
            +
                # with versions that do nothing
         | 
| 25 | 
            +
                require 'puppet/gettext/stubs'
         | 
| 17 26 | 
             
                @gettext_loaded = false
         | 
| 18 27 | 
             
              end
         | 
| 19 28 |  | 
| 20 | 
            -
              #  | 
| 21 | 
            -
              #  | 
| 29 | 
            +
              # @api private
         | 
| 30 | 
            +
              # Whether we were able to require fast_gettext and locale
         | 
| 31 | 
            +
              # @return [Boolean] true if translation gems were successfully loaded
         | 
| 22 32 | 
             
              def self.gettext_loaded?
         | 
| 23 33 | 
             
                @gettext_loaded
         | 
| 24 34 | 
             
              end
         | 
| 25 35 |  | 
| 36 | 
            +
              # @api private
         | 
| 37 | 
            +
              # Whether translations have been loaded for a given project
         | 
| 38 | 
            +
              # @param project_name [String] the project whose translations we are querying
         | 
| 39 | 
            +
              # @return [Boolean] true if translations have been loaded for the project
         | 
| 40 | 
            +
              def self.translations_loaded?(project_name)
         | 
| 41 | 
            +
                return false unless gettext_loaded?
         | 
| 42 | 
            +
                if @loaded_repositories[project_name]
         | 
| 43 | 
            +
                  return true
         | 
| 44 | 
            +
                else
         | 
| 45 | 
            +
                  return false
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              # @api private
         | 
| 50 | 
            +
              # Creates a new empty text domain with the given name, replacing
         | 
| 51 | 
            +
              # any existing domain with that name, then switches to using
         | 
| 52 | 
            +
              # that domain. Also clears the cache of loaded translations.
         | 
| 53 | 
            +
              # @param domain_name [String] the name of the domain to create
         | 
| 54 | 
            +
              def self.create_text_domain(domain_name)
         | 
| 55 | 
            +
                return unless gettext_loaded?
         | 
| 56 | 
            +
                # Clear the cache of loaded translation repositories
         | 
| 57 | 
            +
                @loaded_repositories = {}
         | 
| 58 | 
            +
                FastGettext.add_text_domain(domain_name, type: :chain, chain: [])
         | 
| 59 | 
            +
                #TODO remove this when we start managing domains per environment
         | 
| 60 | 
            +
                FastGettext.default_text_domain = domain_name
         | 
| 61 | 
            +
                FastGettext.text_domain = domain_name
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              # @api private
         | 
| 26 65 | 
             
              # Search for puppet gettext config files
         | 
| 27 66 | 
             
              # @return [String] path to the config, or nil if not found
         | 
| 28 67 | 
             
              def self.puppet_locale_path
         | 
| @@ -37,6 +76,7 @@ module Puppet::GettextConfig | |
| 37 76 | 
             
                end
         | 
| 38 77 | 
             
              end
         | 
| 39 78 |  | 
| 79 | 
            +
              # @api private
         | 
| 40 80 | 
             
              # Determine which translation file format to use
         | 
| 41 81 | 
             
              # @param conf_path [String] the path to the gettext config file
         | 
| 42 82 | 
             
              # @return [Symbol] :mo if in a package structure, :po otherwise
         | 
| @@ -48,44 +88,62 @@ module Puppet::GettextConfig | |
| 48 88 | 
             
                end
         | 
| 49 89 | 
             
              end
         | 
| 50 90 |  | 
| 91 | 
            +
              # @api private
         | 
| 51 92 | 
             
              # Prevent future gettext initializations
         | 
| 52 93 | 
             
              def self.disable_gettext
         | 
| 53 94 | 
             
                @gettext_disabled = true
         | 
| 54 95 | 
             
              end
         | 
| 55 96 |  | 
| 56 | 
            -
              #  | 
| 57 | 
            -
              #  | 
| 97 | 
            +
              # @api private
         | 
| 98 | 
            +
              # Attempt to load tranlstions for the given project.
         | 
| 99 | 
            +
              # @param project_name [String] the project whose translations we want to load
         | 
| 100 | 
            +
              # @param locale_dir [String] the path to the directory containing translations
         | 
| 58 101 | 
             
              # @param file_format [Symbol] translation file format to use, either :po or :mo
         | 
| 59 102 | 
             
              # @return true if initialization succeeded, false otherwise
         | 
| 60 | 
            -
              def self. | 
| 103 | 
            +
              def self.load_translations(project_name, locale_dir, file_format)
         | 
| 61 104 | 
             
                return false if @gettext_disabled || !@gettext_loaded
         | 
| 62 105 |  | 
| 106 | 
            +
                return false unless locale_dir && Puppet::FileSystem.exist?(locale_dir)
         | 
| 107 | 
            +
             | 
| 63 108 | 
             
                unless file_format == :po || file_format == :mo
         | 
| 64 109 | 
             
                  raise Puppet::Error, "Unsupported translation file format #{file_format}; please use :po or :mo"
         | 
| 65 110 | 
             
                end
         | 
| 66 111 |  | 
| 67 | 
            -
                 | 
| 68 | 
            -
             | 
| 69 | 
            -
                conf_file = File.join(conf_file_dir, "config.yaml")
         | 
| 70 | 
            -
                if Puppet::FileSystem.exist?(conf_file)
         | 
| 71 | 
            -
                  if GettextSetup.method(:initialize).parameters.count == 1
         | 
| 72 | 
            -
                    # For use with old gettext-setup gem versions, will load PO files only
         | 
| 73 | 
            -
                    GettextSetup.initialize(conf_file_dir)
         | 
| 74 | 
            -
                  else
         | 
| 75 | 
            -
                    GettextSetup.initialize(conf_file_dir, :file_format => file_format)
         | 
| 76 | 
            -
                  end
         | 
| 77 | 
            -
                  # Only change this once.
         | 
| 78 | 
            -
                  # Because negotiate_locales will only return a non-default locale if
         | 
| 79 | 
            -
                  # the system locale matches a translation set actually available for the
         | 
| 80 | 
            -
                  # given gettext project, we don't want this to get set back to default if
         | 
| 81 | 
            -
                  # we load a module that doesn't have translations, but Puppet does have
         | 
| 82 | 
            -
                  # translations for the user's locale.
         | 
| 83 | 
            -
                  if FastGettext.locale == GettextSetup.default_locale
         | 
| 84 | 
            -
                    FastGettext.locale = GettextSetup.negotiate_locale(Locale.current.language)
         | 
| 85 | 
            -
                  end
         | 
| 86 | 
            -
                  true
         | 
| 87 | 
            -
                else
         | 
| 88 | 
            -
                  false
         | 
| 112 | 
            +
                if project_name.nil? || project_name.empty?
         | 
| 113 | 
            +
                  raise Puppet::Error, "A project name must be specified in order to initialize translations."
         | 
| 89 114 | 
             
                end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                add_repository_to_domain(project_name, locale_dir, file_format)
         | 
| 117 | 
            +
                return true
         | 
| 118 | 
            +
              end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
              # @api private
         | 
| 121 | 
            +
              # Add the translations for this project to the domain's repository chain
         | 
| 122 | 
            +
              # chain for the currently selected text domain, if needed.
         | 
| 123 | 
            +
              # @param project_name [String] the name of the project for which to load translations
         | 
| 124 | 
            +
              # @param locale_dir [String] the path to the directory containing translations
         | 
| 125 | 
            +
              # @param file_format [Symbol] the fomat of the translations files, :po or :mo
         | 
| 126 | 
            +
              def self.add_repository_to_domain(project_name, locale_dir, file_format)
         | 
| 127 | 
            +
                # check if we've already loaded these transltaions
         | 
| 128 | 
            +
                current_chain = FastGettext.translation_repositories[FastGettext.text_domain].chain
         | 
| 129 | 
            +
                return current_chain if @loaded_repositories[project_name]
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                repository = FastGettext::TranslationRepository.build(project_name,
         | 
| 132 | 
            +
                                                                      path: locale_dir,
         | 
| 133 | 
            +
                                                                      type: file_format,
         | 
| 134 | 
            +
                                                                      ignore_fuzzy: false)
         | 
| 135 | 
            +
                @loaded_repositories[project_name] = true
         | 
| 136 | 
            +
                current_chain << repository
         | 
| 137 | 
            +
              end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
              # @api private
         | 
| 140 | 
            +
              # Sets the language in which to display strings.
         | 
| 141 | 
            +
              # @param locale [String] the language portion of a locale string (e.g. "ja")
         | 
| 142 | 
            +
              def self.set_locale(locale)
         | 
| 143 | 
            +
                return if !gettext_loaded?
         | 
| 144 | 
            +
                # make sure we're not using the `available_locales` machinery
         | 
| 145 | 
            +
                FastGettext.default_available_locales = nil
         | 
| 146 | 
            +
             | 
| 147 | 
            +
                FastGettext.default_locale = locale
         | 
| 90 148 | 
             
              end
         | 
| 91 149 | 
             
            end
         | 
| @@ -247,6 +247,12 @@ class Puppet::Graph::RelationshipGraph < Puppet::Graph::SimpleGraph | |
| 247 247 | 
             
                containers.each { |x|
         | 
| 248 248 | 
             
                  admissible[x] = whit_class.new(:name => "admissible_#{x.ref}", :catalog => catalog)
         | 
| 249 249 | 
             
                  completed[x]  = whit_class.new(:name => "completed_#{x.ref}",  :catalog => catalog)
         | 
| 250 | 
            +
             | 
| 251 | 
            +
                  # This copies the original container's tags over to the two anchor whits.
         | 
| 252 | 
            +
                  # Without this, tags are not propagated to the container's resources.
         | 
| 253 | 
            +
                  admissible[x].set_tags(x)
         | 
| 254 | 
            +
                  completed[x].set_tags(x)
         | 
| 255 | 
            +
             | 
| 250 256 | 
             
                  priority = @prioritizer.priority_of(x)
         | 
| 251 257 | 
             
                  add_vertex(admissible[x], priority)
         | 
| 252 258 | 
             
                  add_vertex(completed[x], priority)
         | 
| @@ -129,10 +129,13 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code | |
| 129 129 | 
             
              def inlineable?(resource, sources)
         | 
| 130 130 | 
             
                case
         | 
| 131 131 | 
             
                  when resource[:ensure] == 'absent'
         | 
| 132 | 
            +
                    #TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
         | 
| 132 133 | 
             
                    return Puppet::Util::Profiler.profile(_("Not inlining absent resource"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :absent]) { false }
         | 
| 133 134 | 
             
                  when sources.empty?
         | 
| 135 | 
            +
                    #TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
         | 
| 134 136 | 
             
                    return Puppet::Util::Profiler.profile(_("Not inlining resource without sources"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :no_sources]) { false }
         | 
| 135 137 | 
             
                  when (not (sources.all? {|source| source =~ /^puppet:/}))
         | 
| 138 | 
            +
                    #TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
         | 
| 136 139 | 
             
                    return Puppet::Util::Profiler.profile(_("Not inlining unsupported source scheme"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :unsupported_scheme]) { false }
         | 
| 137 140 | 
             
                  else
         | 
| 138 141 | 
             
                    return true
         | 
| @@ -154,11 +157,13 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code | |
| 154 157 | 
             
              # Helper method to log file resources that could not be inlined because they
         | 
| 155 158 | 
             
              # fall outside of an environment.
         | 
| 156 159 | 
             
              def log_file_outside_environment
         | 
| 160 | 
            +
                #TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
         | 
| 157 161 | 
             
                Puppet::Util::Profiler.profile(_("Not inlining file outside environment"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :file_outside_environment]) { true }
         | 
| 158 162 | 
             
              end
         | 
| 159 163 |  | 
| 160 164 | 
             
              # Helper method to log file resources that were successfully inlined.
         | 
| 161 165 | 
             
              def log_metadata_inlining
         | 
| 166 | 
            +
                #TRANSLATORS Inlining refers to adding additional metadata
         | 
| 162 167 | 
             
                Puppet::Util::Profiler.profile(_("Inlining file metadata"), [:compiler, :static_compile_inlining, :inlined_file_metadata]) { true }
         | 
| 163 168 | 
             
              end
         | 
| 164 169 |  | 
| @@ -270,9 +275,19 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code | |
| 270 275 | 
             
                  raise Puppet::Error, _("Unable to find a common checksum type between agent '%{agent_type}' and master '%{master_type}'.") % { agent_type: options[:checksum_type], master_type: known_checksum_types } unless checksum_type
         | 
| 271 276 | 
             
                end
         | 
| 272 277 |  | 
| 273 | 
            -
                str =  | 
| 274 | 
            -
             | 
| 275 | 
            -
             | 
| 278 | 
            +
                str = if checksum_type
         | 
| 279 | 
            +
                        if node.environment
         | 
| 280 | 
            +
                          _("Compiled static catalog for %{node} in environment %{environment}") % { node: node.name, environment: node.environment }
         | 
| 281 | 
            +
                        else
         | 
| 282 | 
            +
                          _("Compiled static catalog for %{node}") % { node: node.name }
         | 
| 283 | 
            +
                        end
         | 
| 284 | 
            +
                      else
         | 
| 285 | 
            +
                        if node.environment
         | 
| 286 | 
            +
                          _("Compiled catalog for %{node} in environment %{environment}") % { node: node.name, environment: node.environment }
         | 
| 287 | 
            +
                        else
         | 
| 288 | 
            +
                          _("Compiled catalog for %{node}") % { node: node.name }
         | 
| 289 | 
            +
                        end
         | 
| 290 | 
            +
                      end
         | 
| 276 291 | 
             
                config = nil
         | 
| 277 292 |  | 
| 278 293 | 
             
                benchmark(:notice, str) do
         | 
| @@ -288,8 +303,13 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code | |
| 288 303 | 
             
                    end
         | 
| 289 304 |  | 
| 290 305 | 
             
                    if checksum_type && config.is_a?(model)
         | 
| 291 | 
            -
                      str =  | 
| 292 | 
            -
             | 
| 306 | 
            +
                      str = if node.environment
         | 
| 307 | 
            +
                              #TRANSLATORS Inlined refers to adding additional metadata
         | 
| 308 | 
            +
                              _("Inlined resource metadata into static catalog for %{node} in environment %{environment}") % { node: node.name, environment: node.environment }
         | 
| 309 | 
            +
                            else
         | 
| 310 | 
            +
                              #TRANSLATORS Inlined refers to adding additional metadata
         | 
| 311 | 
            +
                              _("Inlined resource metadata into static catalog for %{node}") % { node: node.name }
         | 
| 312 | 
            +
                            end
         | 
| 293 313 | 
             
                      benchmark(:notice, str) do
         | 
| 294 314 | 
             
                        Puppet::Util::Profiler.profile(str, [:compiler, :static_compile_postprocessing, node.environment, node.name]) do
         | 
| 295 315 | 
             
                          inline_metadata(config, checksum_type)
         | 
| @@ -219,7 +219,7 @@ module Puppet::FileBucketFile | |
| 219 219 | 
             
                #   and content as that in the bucket_file
         | 
| 220 220 | 
             
                # @api private
         | 
| 221 221 | 
             
                def verify_identical_file(contents_file, bucket_file)
         | 
| 222 | 
            -
                  (bucket_file. | 
| 222 | 
            +
                  (bucket_file.to_binary.bytesize == Puppet::FileSystem.size(contents_file)) &&
         | 
| 223 223 | 
             
                    (bucket_file.stream() {|s| Puppet::FileSystem.compare_stream(contents_file, s) })
         | 
| 224 224 | 
             
                end
         | 
| 225 225 |  | 
    
        data/lib/puppet/module.rb
    CHANGED
    
    | @@ -423,33 +423,24 @@ class Puppet::Module | |
| 423 423 | 
             
              end
         | 
| 424 424 |  | 
| 425 425 | 
             
              def initialize_i18n
         | 
| 426 | 
            -
                 | 
| 427 | 
            -
                 | 
| 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)
         | 
| 428 430 |  | 
| 429 431 | 
             
                locales_path = File.absolute_path('locales', path)
         | 
| 430 432 |  | 
| 431 | 
            -
                if Puppet::GettextConfig. | 
| 432 | 
            -
                  Puppet.debug " | 
| 433 | 
            -
                 | 
| 434 | 
            -
             | 
| 435 | 
            -
                    Puppet.debug "Could not find locales configuration file for #{module_name} at #{config_path}. Skipping i18n initialization."
         | 
| 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."
         | 
| 436 437 | 
             
                else
         | 
| 437 | 
            -
             | 
| 438 | 
            -
                  end
         | 
| 438 | 
            +
                  Puppet.debug "No gettext library found, skipping i18n initialization."
         | 
| 439 439 | 
             
                end
         | 
| 440 440 | 
             
              end
         | 
| 441 441 |  | 
| 442 442 | 
             
              private
         | 
| 443 443 |  | 
| 444 | 
            -
              def i18n_initialized?(module_name)
         | 
| 445 | 
            -
                if Puppet::GettextConfig.gettext_loaded?
         | 
| 446 | 
            -
                  GettextSetup.translation_repositories.has_key? module_name
         | 
| 447 | 
            -
                else
         | 
| 448 | 
            -
                  # GettextSetup not yet initialized or not found
         | 
| 449 | 
            -
                  false
         | 
| 450 | 
            -
                end
         | 
| 451 | 
            -
              end
         | 
| 452 | 
            -
             | 
| 453 444 | 
             
              def wanted_manifests_from(pattern)
         | 
| 454 445 | 
             
                begin
         | 
| 455 446 | 
             
                  extended = File.extname(pattern).empty? ? "#{pattern}.pp" : pattern
         | 
| @@ -2,8 +2,15 @@ require 'base64' | |
| 2 2 | 
             
            module Puppet::Pops
         | 
| 3 3 | 
             
            module Types
         | 
| 4 4 |  | 
| 5 | 
            -
            # A Puppet Language Type that  | 
| 6 | 
            -
            #  | 
| 5 | 
            +
            # A Puppet Language Type that represents binary data content (a sequence of 8-bit bytes).
         | 
| 6 | 
            +
            # Instances of this data type can be created from `String` and `Array[Integer[0,255]]`
         | 
| 7 | 
            +
            # values. Also see the `binary_file` function for reading binary content from a file.
         | 
| 8 | 
            +
            #
         | 
| 9 | 
            +
            # A `Binary` can be converted to `String` and `Array` form - see function `new` for
         | 
| 10 | 
            +
            # the respective target data type for more information.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # Instances of this data type serialize as base 64 encoded strings when the serialization
         | 
| 13 | 
            +
            # format is textual, and as binary content when a serialization format supports this.
         | 
| 7 14 | 
             
            #
         | 
| 8 15 | 
             
            # @api public
         | 
| 9 16 | 
             
            class PBinaryType < PAnyType
         | 
| @@ -228,10 +228,10 @@ class PObjectType < PMetaType | |
| 228 228 | 
             
                  # TODO: Assumes Ruby implementation for now
         | 
| 229 229 | 
             
                  if(callable_type.is_a?(PVariantType))
         | 
| 230 230 | 
             
                    callable_type.types.map do |ct|
         | 
| 231 | 
            -
                      Functions::Dispatch.new(ct, name, [], false, ct.block_type.nil? ? nil : 'block')
         | 
| 231 | 
            +
                      Functions::Dispatch.new(ct, RubyGenerator.protect_reserved_name(name), [], false, ct.block_type.nil? ? nil : 'block')
         | 
| 232 232 | 
             
                    end
         | 
| 233 233 | 
             
                  else
         | 
| 234 | 
            -
                    [Functions::Dispatch.new(callable_type, name, [], false, callable_type.block_type.nil? ? nil : 'block')]
         | 
| 234 | 
            +
                    [Functions::Dispatch.new(callable_type, RubyGenerator.protect_reserved_name(name), [], false, callable_type.block_type.nil? ? nil : 'block')]
         | 
| 235 235 | 
             
                  end
         | 
| 236 236 | 
             
                end
         | 
| 237 237 |  | 
| @@ -544,7 +544,13 @@ class PObjectType < PMetaType | |
| 544 544 | 
             
                init_non_opt_count = 0
         | 
| 545 545 | 
             
                init_param_names = init.parameters.map do |p|
         | 
| 546 546 | 
             
                  init_non_opt_count += 1 if :req == p[0]
         | 
| 547 | 
            -
                  p[1].to_s
         | 
| 547 | 
            +
                  n = p[1].to_s
         | 
| 548 | 
            +
                  r = RubyGenerator.unprotect_reserved_name(n)
         | 
| 549 | 
            +
                  unless r.equal?(n)
         | 
| 550 | 
            +
                    # assert that the protected name wasn't a real name (names can start with underscore)
         | 
| 551 | 
            +
                    n = r unless param_names.index(r).nil?
         | 
| 552 | 
            +
                  end
         | 
| 553 | 
            +
                  n
         | 
| 548 554 | 
             
                end
         | 
| 549 555 |  | 
| 550 556 | 
             
                if init_param_names != param_names
         |