Sha256: 3f00119a1adba39132d4cc2422a0ed89d656aba75be779074be0b63ddd826ee7

Contents?: true

Size: 985 Bytes

Versions: 128

Compression:

Stored size: 985 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

128 entries across 128 versions & 1 rubygems

Version Path
puppet-7.30.0 lib/puppet/util/package.rb
puppet-7.30.0-x86-mingw32 lib/puppet/util/package.rb
puppet-7.30.0-x64-mingw32 lib/puppet/util/package.rb
puppet-7.30.0-universal-darwin lib/puppet/util/package.rb
puppet-7.29.1 lib/puppet/util/package.rb
puppet-7.29.1-x86-mingw32 lib/puppet/util/package.rb
puppet-7.29.1-x64-mingw32 lib/puppet/util/package.rb
puppet-7.29.1-universal-darwin lib/puppet/util/package.rb
puppet-7.29.0 lib/puppet/util/package.rb
puppet-7.29.0-x86-mingw32 lib/puppet/util/package.rb
puppet-7.29.0-x64-mingw32 lib/puppet/util/package.rb
puppet-7.29.0-universal-darwin lib/puppet/util/package.rb
puppet-7.28.0 lib/puppet/util/package.rb
puppet-7.28.0-x86-mingw32 lib/puppet/util/package.rb
puppet-7.28.0-x64-mingw32 lib/puppet/util/package.rb
puppet-7.28.0-universal-darwin lib/puppet/util/package.rb
puppet-8.3.1 lib/puppet/util/package.rb
puppet-8.3.1-x86-mingw32 lib/puppet/util/package.rb
puppet-8.3.1-x64-mingw32 lib/puppet/util/package.rb
puppet-8.3.1-universal-darwin lib/puppet/util/package.rb