# 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