# File lib/mcollective/util.rb, line 418
    def self.versioncmp(version_a, version_b)
      vre = /[-.]|\d+|[^-.\d]+/
      ax = version_a.scan(vre)
      bx = version_b.scan(vre)

      until ax.empty? || bx.empty?
        a = ax.shift
        b = bx.shift

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

        if a =~ /^[^0]\d+$/ && b =~ /^[^0]\d+$/
          return Integer(a) <=> Integer(b)
        else
          return a.upcase <=> b.upcase
        end
      end

      version_a <=> version_b
    end