sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit ed12112fe44da42eead22aeaeaa70d4c42596420
parent 75429eec816c990462653dfec45893348cd6e9bf
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Wed,  9 Jan 2008 10:50:04 -0800

compare bin and lib versions, and error out on mismatch

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.

Diffstat:
M Rakefile | 7 ++++++-
M bin/sup | 14 ++++++++++++++
M lib/sup.rb | 2 +-
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git 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
@@ -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}"
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -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")