summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/package.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-09-06 04:49:45 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-09-06 04:49:45 +0000
commite309b76e168f83e27cf541dc19a02c5b25c1e47c (patch)
treef5849a38377df2d719646c438d43ccdb9a99702f /lib/puppet/util/package.rb
parentc5ce953462f424138f0009ce978eb9620aff84a7 (diff)
downloadpuppet-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.rb31
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