]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/rbotconfig.rb
ensures the path reported by gems does exists
[user/henk/code/ruby/rbot.git] / lib / rbot / rbotconfig.rb
index 409ab9f8d415fb0feda07cbc3cc9e39527cf25f7..894a1b65d7a9d5b0780d5f48aded2c39d3eff9f8 100644 (file)
@@ -1,18 +1,24 @@
 module Irc
+class Bot
   module Config
-    @@datadir = nil
-    @@coredir = nil
+    unless defined?(@@datadir)
+      @@datadir = nil
 
-    # first try for the default path to the data dir
-    defaultdatadir = File.expand_path(File.dirname($0) + '/../data/rbot')
-    defaultcoredir = File.expand_path(File.dirname($0) + '/../lib/rbot/core')
+      defaultdatadir = File.expand_path(File.dirname($0) + '/../data/rbot')
 
-    if File.directory? defaultdatadir
-      @@datadir = defaultdatadir
+      if File.directory? defaultdatadir
+        @@datadir = defaultdatadir
+      end
     end
 
-    if File.directory? defaultcoredir
-      @@coredir = defaultcoredir
+    unless defined?(@@coredir)
+      @@coredir = nil
+
+      defaultcoredir = File.expand_path(File.dirname($0) + '/../lib/rbot/core')
+
+      if File.directory? defaultcoredir
+        @@coredir = defaultcoredir
+      end
     end
 
     # setup pkg-based configuration - i.e. where were we installed to, where
@@ -21,18 +27,22 @@ module Irc
       begin
         debug "trying to load rubygems"
         require 'rubygems'
-        debug "loaded rubygems, looking for rbot-#$version"
-        if $version =~ /(.*)-svn\Z/
+        if $version =~ /^(.*)-(?:git|rc\d)(?: .*)?$/
           version = $1
         else
           version = $version
         end
-        gemname, gem = Gem.source_index.find{|name, spec| spec.name == 'rbot' && spec.version.version == version}
-        debug "got gem #{gem}"
-        if gem && path = gem.full_gem_path
+        debug "loaded rubygems, looking for rbot version #{$version} (rbot-#{version})"
+        gem = Gem::Specification.find{|spec| spec.name == 'rbot' && spec.version.version == version}
+        if gem
+          path = gem.full_gem_path
           debug "installed via rubygems to #{path}"
-          @@datadir = "#{path}/data/rbot"
-          @@coredir = "#{path}/lib/rbot/core"
+          if File.directory? "#{path}/data/rbot"
+            @@datadir = "#{path}/data/rbot"
+          end
+          if File.directory? "#{path}/lib/rbot/core"
+            @@coredir = "#{path}/lib/rbot/core"
+          end
         else
           debug "not installed via rubygems"
         end
@@ -61,3 +71,4 @@ module Irc
     end
   end
 end
+end