diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-09-06 04:49:45 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-09-06 04:49:45 +0000 |
commit | e309b76e168f83e27cf541dc19a02c5b25c1e47c (patch) | |
tree | f5849a38377df2d719646c438d43ccdb9a99702f /lib/puppet/util/package.rb | |
parent | c5ce953462f424138f0009ce978eb9620aff84a7 (diff) | |
download | puppet-e309b76e168f83e27cf541dc19a02c5b25c1e47c.tar.gz puppet-e309b76e168f83e27cf541dc19a02c5b25c1e47c.tar.xz puppet-e309b76e168f83e27cf541dc19a02c5b25c1e47c.zip |
Modifying the provider base class so that it defines a method for every used command (e.g., you call "commands :rpm => 'rpm'", and it defines an "rpm" method. I then pushed this throughout the package providers, which are the heaviest users of commands.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1571 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/util/package.rb')
-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 |