diff options
Diffstat (limited to 'lib/puppet/util')
-rw-r--r-- | lib/puppet/util/package.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/puppet/util/package.rb b/lib/puppet/util/package.rb new file mode 100644 index 000000000..00e04f64a --- /dev/null +++ b/lib/puppet/util/package.rb @@ -0,0 +1,31 @@ +require 'puppet' + +module Puppet::Util::Package + def versioncmp(version_a, version_b) + vre = /[-.]|\d+|[^-.\d]+/ + ax = version_a.scan(vre) + bx = version_b.scan(vre) + + while (ax.length>0 && bx.length>0) do + a = ax.shift + b = bx.shift + + if( a == b ) then next + elsif (a == '-' && b == '-') then next + elsif (a == '-') then return -1 + elsif (b == '-') then return 1 + elsif (a == '.' && b == '.') then next + elsif (a == '.' ) then return -1 + elsif (b == '.' ) then return 1 + elsif (a =~ /^\d+$/ && b =~ /^\d+$/) then + if( a =~ /^0/ or b =~ /^0/ ) then + return a.to_s.upcase <=> b.to_s.upcase + end + return a.to_i <=> b.to_i + else + return a.upcase <=> b.upcase + end + end + return version_a <=> version_b; + end +end |