]> git.notmuchmail.org Git - sup/commitdiff
compare bin and lib versions, and error out on mismatch
authorWilliam Morgan <wmorgan-sup@masanjin.net>
Wed, 9 Jan 2008 18:50:04 +0000 (10:50 -0800)
committerWilliam Morgan <wmorgan-sup@masanjin.net>
Wed, 9 Jan 2008 18:50:04 +0000 (10:50 -0800)
This should help the occasional bug reports that happen because someone
runs bin/sup from development, but somehow picks up libraries from a
pre-installed gem.

To make "rake gem" still function when working from a checkout, we fake
a version number of 999. (Gem versions must be dotted numerics.)

It won't detect version mismatches against gems that have been installed
via "rake gem" from a checkout, but that is typically a less common
issue.

Rakefile
bin/sup
lib/sup.rb

index 1932f62c3a7204cc4bdbd82aa84eb300e31b8b3e..33e988320986b569d1cc7f7e0c045326bae4bbb3 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -7,7 +7,12 @@ class Hoe
   def extra_deps; @extra_deps.reject { |x| Array(x).first == "hoe" } end
 end # thanks to "Mike H"
 
-Hoe.new('sup', Redwood::VERSION) do |p|
+## allow people who use development versions by running "rake gem"
+## and installing the resulting gem it to be able to do this. (gem
+## versions must be in dotted-digit notation only).
+version = Redwood::VERSION == "git" ? 999 : Redwood::VERSION
+
+Hoe.new('sup', version) do |p|
   p.rubyforge_name = 'sup'
   p.author = "William Morgan"
   p.summary = 'A console-based email client with the best features of GMail, mutt, and emacs. Features full text search, labels, tagged operations, multiple buffers, recent contacts, and more.'
diff --git a/bin/sup b/bin/sup
index 0f48ab445ad0de2a540ec1a79ed61ecd2eaf09fe..7314227859aadb65cbfbe1297aec45e29754fd85 100644 (file)
--- a/bin/sup
+++ b/bin/sup
@@ -7,6 +7,20 @@ require 'fileutils'
 require 'trollop'
 require "sup"
 
+BIN_VERSION = "git"
+
+unless Redwood::VERSION == BIN_VERSION
+  $stderr.puts <<EOS
+
+Error: version mismatch!
+The sup executable is at version #{BIN_VERSION.inspect}.
+The sup libraries are at version #{Redwood::VERSION.inspect}.
+
+Is your development environment conflicting with rubygems?
+EOS
+  exit(-1)
+end
+
 $exceptions = []
 $opts = Trollop::options do
   version "sup v#{Redwood::VERSION}"
index 5bb27bab27153f4bba115b830f2c907c7d765b87..d34dec306a54322d0a7926fbaca2a150e2a48100 100644 (file)
@@ -32,7 +32,7 @@ class Module
 end
 
 module Redwood
-  VERSION = "0.3"
+  VERSION = "git"
 
   BASE_DIR   = ENV["SUP_BASE"] || File.join(ENV["HOME"], ".sup")
   CONFIG_FN  = File.join(BASE_DIR, "config.yaml")