From 5102422f1417d5f0a4215965dcd18ef6596ab782 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Tue, 26 Apr 2011 20:27:52 -0400
Subject: v2 v3: bin/ improved ruby version check

---
 bin/sisu                   | 29 ++++++++++++++++++-----------
 bin/sisu3                  | 29 ++++++++++++++++++-----------
 bin/sisu_termsheet         | 29 ++++++++++++++++++-----------
 bin/sisu_webrick           | 29 ++++++++++++++++++-----------
 data/doc/sisu/CHANGELOG_v2 |  3 +++
 data/doc/sisu/CHANGELOG_v3 |  3 +++
 6 files changed, 78 insertions(+), 44 deletions(-)

diff --git a/bin/sisu b/bin/sisu
index ceeebd6c..5f60f8d7 100644
--- a/bin/sisu
+++ b/bin/sisu
@@ -2,17 +2,16 @@
 # encoding: utf-8
 #SiSU: copyright (C) 1997 - 2011 Ralph Amissah; License GPL, see appended program information
 begin
-  def check_sisu_stable_ruby_version?
-    rbv_sisu_stable='1.8.7'
-    if RUBY_VERSION < rbv_sisu_stable
-      raise "Please, use Ruby#{rbv_sisu_stable} or later, current Ruby #{RUBY_VERSION}"
-    else check_incompatible_ruby_build?
-    end
-  end
-  def check_sisu_dev_ruby_version?
-    rbv_sisu_dev='1.9.2'
-    if RUBY_VERSION < rbv_sisu_dev
-      raise "Please, use Ruby#{rbv_sisu_dev} or later, current Ruby #{RUBY_VERSION}"
+  def ruby_version_ok?(base_version)
+    @v ||=RUBY_VERSION.scan(/\d+/)
+    vb=base_version.scan(/\d+/)
+    if @v[0] <  vb[0] \
+    or @v[0] == vb[0] \
+    && @v[1] <  vb[1] \
+    or @v[0] == vb[0] \
+    && @v[1] == vb[1] \
+    && @v[1] <  vb[2]
+      raise "Please, use Ruby#{vb} or later, current Ruby #{RUBY_VERSION}"
     else check_incompatible_ruby_build?
     end
   end
@@ -30,6 +29,14 @@ current version #{e['RUBY_PROGRAM_VERSION']}p#{e['PATCHLEVEL']}
 WOK
     end
   end
+  def check_sisu_stable_ruby_version?
+    rbv_sisu_stable='1.8.7'
+    ruby_version_ok?(rbv_sisu_stable)
+  end
+  def check_sisu_dev_ruby_version?
+    rbv_sisu_dev='1.9.2'
+    ruby_version_ok?(rbv_sisu_dev)
+  end
   $VERBOSE=nil
   $KCODE='u' if RUBY_VERSION < '1.9'
   argv=$*
diff --git a/bin/sisu3 b/bin/sisu3
index e3246376..31664a70 100644
--- a/bin/sisu3
+++ b/bin/sisu3
@@ -2,17 +2,16 @@
 # encoding: utf-8
 #SiSU: copyright (C) 1997 - 2011 Ralph Amissah; License GPL, see appended program information
 begin
-  def check_sisu_stable_ruby_version?
-    rbv_sisu_stable='1.8.7'
-    if RUBY_VERSION < rbv_sisu_stable
-      raise "Please, use Ruby#{rbv_sisu_stable} or later, current Ruby #{RUBY_VERSION}"
-    else check_incompatible_ruby_build?
-    end
-  end
-  def check_sisu_dev_ruby_version?
-    rbv_sisu_dev='1.9.2'
-    if RUBY_VERSION < rbv_sisu_dev
-      raise "Please, use Ruby#{rbv_sisu_dev} or later, current Ruby #{RUBY_VERSION}"
+  def ruby_version_ok?(base_version)
+    @v ||=RUBY_VERSION.scan(/\d+/)
+    vb=base_version.scan(/\d+/)
+    if @v[0] <  vb[0] \
+    or @v[0] == vb[0] \
+    && @v[1] <  vb[1] \
+    or @v[0] == vb[0] \
+    && @v[1] == vb[1] \
+    && @v[1] <  vb[2]
+      raise "Please, use Ruby#{vb} or later, current Ruby #{RUBY_VERSION}"
     else check_incompatible_ruby_build?
     end
   end
@@ -30,6 +29,14 @@ current version #{e['RUBY_PROGRAM_VERSION']}p#{e['PATCHLEVEL']}
 WOK
     end
   end
+  def check_sisu_stable_ruby_version?
+    rbv_sisu_stable='1.8.7'
+    ruby_version_ok?(rbv_sisu_stable)
+  end
+  def check_sisu_dev_ruby_version?
+    rbv_sisu_dev='1.9.2'
+    ruby_version_ok?(rbv_sisu_dev)
+  end
   $VERBOSE=nil
   $KCODE='u' if RUBY_VERSION < '1.9'
   argv=$*
diff --git a/bin/sisu_termsheet b/bin/sisu_termsheet
index 10318191..28ac0277 100644
--- a/bin/sisu_termsheet
+++ b/bin/sisu_termsheet
@@ -2,17 +2,16 @@
 # encoding: utf-8
 #SiSU: copyright (C) 1997 - 2011 Ralph Amissah; License GPL, see appended program information
 begin
-  def check_sisu_stable_ruby_version?
-    rbv_sisu_stable='1.8.7'
-    if RUBY_VERSION < rbv_sisu_stable
-      raise "Please, use Ruby#{rbv_sisu_stable} or later, current Ruby #{RUBY_VERSION}"
-    else check_incompatible_ruby_build?
-    end
-  end
-  def check_sisu_dev_ruby_version?
-    rbv_sisu_dev='1.9.2'
-    if RUBY_VERSION < rbv_sisu_dev
-      raise "Please, use Ruby#{rbv_sisu_dev} or later, current Ruby #{RUBY_VERSION}"
+  def ruby_version_ok?(base_version)
+    @v ||=RUBY_VERSION.scan(/\d+/)
+    vb=base_version.scan(/\d+/)
+    if @v[0] <  vb[0] \
+    or @v[0] == vb[0] \
+    && @v[1] <  vb[1] \
+    or @v[0] == vb[0] \
+    && @v[1] == vb[1] \
+    && @v[1] <  vb[2]
+      raise "Please, use Ruby#{vb} or later, current Ruby #{RUBY_VERSION}"
     else check_incompatible_ruby_build?
     end
   end
@@ -30,6 +29,14 @@ current version #{e['RUBY_PROGRAM_VERSION']}p#{e['PATCHLEVEL']}
 WOK
     end
   end
+  def check_sisu_stable_ruby_version?
+    rbv_sisu_stable='1.8.7'
+    ruby_version_ok?(rbv_sisu_stable)
+  end
+  def check_sisu_dev_ruby_version?
+    rbv_sisu_dev='1.9.2'
+    ruby_version_ok?(rbv_sisu_dev)
+  end
   $VERBOSE=nil
   argv=$*
   SiSU_version_dir=case argv.inspect
diff --git a/bin/sisu_webrick b/bin/sisu_webrick
index 8f79a51f..4abcaff4 100644
--- a/bin/sisu_webrick
+++ b/bin/sisu_webrick
@@ -2,17 +2,16 @@
 # encoding: utf-8
 #SiSU: copyright (C) 1997 - 2011 Ralph Amissah; License GPL, see appended program information
 begin
-  def check_sisu_stable_ruby_version?
-    rbv_sisu_stable='1.8.7'
-    if RUBY_VERSION < rbv_sisu_stable
-      raise "Please, use Ruby#{rbv_sisu_stable} or later, current Ruby #{RUBY_VERSION}"
-    else check_incompatible_ruby_build?
-    end
-  end
-  def check_sisu_dev_ruby_version?
-    rbv_sisu_dev='1.9.2'
-    if RUBY_VERSION < rbv_sisu_dev
-      raise "Please, use Ruby#{rbv_sisu_dev} or later, current Ruby #{RUBY_VERSION}"
+  def ruby_version_ok?(base_version)
+    @v ||=RUBY_VERSION.scan(/\d+/)
+    vb=base_version.scan(/\d+/)
+    if @v[0] <  vb[0] \
+    or @v[0] == vb[0] \
+    && @v[1] <  vb[1] \
+    or @v[0] == vb[0] \
+    && @v[1] == vb[1] \
+    && @v[1] <  vb[2]
+      raise "Please, use Ruby#{vb} or later, current Ruby #{RUBY_VERSION}"
     else check_incompatible_ruby_build?
     end
   end
@@ -30,6 +29,14 @@ current version #{e['RUBY_PROGRAM_VERSION']}p#{e['PATCHLEVEL']}
 WOK
     end
   end
+  def check_sisu_stable_ruby_version?
+    rbv_sisu_stable='1.8.7'
+    ruby_version_ok?(rbv_sisu_stable)
+  end
+  def check_sisu_dev_ruby_version?
+    rbv_sisu_dev='1.9.2'
+    ruby_version_ok?(rbv_sisu_dev)
+  end
   $VERBOSE=nil
   argv=$*
   SiSU_version_dir=case argv.inspect
diff --git a/data/doc/sisu/CHANGELOG_v2 b/data/doc/sisu/CHANGELOG_v2
index adcbfa1b..0002cdf3 100644
--- a/data/doc/sisu/CHANGELOG_v2
+++ b/data/doc/sisu/CHANGELOG_v2
@@ -15,6 +15,9 @@ Reverse Chronological:
 %% 2.9.3.orig.tar.gz (2011-04-26:17/2) [see 3.0.8]
 http://git.sisudoc.org/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/3.0.8-1
 
+  * bin/sisu3 bin/sisu /bin/sisu_webrick bin/sisu_termsheet
+    * improved ruby version check
+
 %% 2.9.2.orig.tar.gz (2011-04-20:16/3) [see 3.0.7]
 http://git.sisudoc.org/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/3.0.7-1
 
diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3
index d3256318..29de6ddd 100644
--- a/data/doc/sisu/CHANGELOG_v3
+++ b/data/doc/sisu/CHANGELOG_v3
@@ -20,6 +20,9 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.8.orig.tar.gz
   sisu_3.0.8-1.dsc
   sisu_3.0.8-1.debian.tar.gz
 
+  * bin/sisu3 bin/sisu /bin/sisu_webrick bin/sisu_termsheet
+    * improved ruby version check
+
 %% 3.0.7.orig.tar.gz (2011-04-20:16/3)
 http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/3.0.7-1
 http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.7.orig.tar.gz
-- 
cgit v1.2.3