Sha256: 9a07491aa5941e494e5e3da9ddaa9d5207721f614d2df7297f29f0bc1b2fb1df

Contents?: true

Size: 989 Bytes

Versions: 20

Compression:

Stored size: 989 Bytes

Contents

# frozen_string_literal: true

module Puppet::Util::Package
  def versioncmp(version_a, version_b, ignore_trailing_zeroes = false)
    vre = /[-.]|\d+|[^-.\d]+/

    if ignore_trailing_zeroes
      version_a = normalize(version_a)
      version_b = normalize(version_b)
    end

    ax = version_a.scan(vre)
    bx = version_b.scan(vre)

    while ax.length > 0 && bx.length > 0
      a = ax.shift
      b = bx.shift

      next      if a == b
      return -1 if a == '-'
      return 1  if b == '-'
      return -1 if a == '.'
      return 1  if b == '.'

      if a =~ /^\d+$/ && b =~ /^\d+$/
        return a.to_s.upcase <=> b.to_s.upcase if a =~ /^0/ || b =~ /^0/

        return a.to_i <=> b.to_i
      end
      return a.upcase <=> b.upcase
    end
    version_a <=> version_b
  end
  module_function :versioncmp

  def self.normalize(version)
    version = version.split('-')
    version.first.sub!(/([.0]+)$/, '')

    version.join('-')
  end
  private_class_method :normalize
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
puppet-8.10.0 lib/puppet/util/package.rb
puppet-8.10.0-x86-mingw32 lib/puppet/util/package.rb
puppet-8.10.0-x64-mingw32 lib/puppet/util/package.rb
puppet-8.10.0-universal-darwin lib/puppet/util/package.rb
puppet-8.9.0 lib/puppet/util/package.rb
puppet-8.9.0-x86-mingw32 lib/puppet/util/package.rb
puppet-8.9.0-x64-mingw32 lib/puppet/util/package.rb
puppet-8.9.0-universal-darwin lib/puppet/util/package.rb
puppet-8.8.1 lib/puppet/util/package.rb
puppet-8.8.1-x86-mingw32 lib/puppet/util/package.rb
puppet-8.8.1-x64-mingw32 lib/puppet/util/package.rb
puppet-8.8.1-universal-darwin lib/puppet/util/package.rb
puppet-8.7.0 lib/puppet/util/package.rb
puppet-8.7.0-x86-mingw32 lib/puppet/util/package.rb
puppet-8.7.0-x64-mingw32 lib/puppet/util/package.rb
puppet-8.7.0-universal-darwin lib/puppet/util/package.rb
puppet-8.6.0 lib/puppet/util/package.rb
puppet-8.6.0-x86-mingw32 lib/puppet/util/package.rb
puppet-8.6.0-x64-mingw32 lib/puppet/util/package.rb
puppet-8.6.0-universal-darwin lib/puppet/util/package.rb