X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Frbotconfig.rb;h=894a1b65d7a9d5b0780d5f48aded2c39d3eff9f8;hb=452e323bfdb73d6b93ab96f5fc417891e4aa8f53;hp=042fa39d73988b6b00018149f4893f87bb268478;hpb=7334553f8bc335188533669df733f05b12147af0;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/rbotconfig.rb b/lib/rbot/rbotconfig.rb index 042fa39d..894a1b65 100644 --- a/lib/rbot/rbotconfig.rb +++ b/lib/rbot/rbotconfig.rb @@ -1,36 +1,74 @@ module Irc +class Bot module Config - @@datadir = nil + unless defined?(@@datadir) + @@datadir = nil + + defaultdatadir = File.expand_path(File.dirname($0) + '/../data/rbot') + + if File.directory? defaultdatadir + @@datadir = defaultdatadir + end + end + + 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 # are our data files, etc. - begin - debug "trying to load rubygems" - require 'rubygems' - debug "loaded rubygems, looking for rbot-#$version" - 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 "installed via rubygems to #{path}" - @@datadir = "#{path}/data/rbot" - else - debug "not installed via rubygems" + if @@datadir.nil? or @@coredir.nil? + begin + debug "trying to load rubygems" + require 'rubygems' + if $version =~ /^(.*)-(?:git|rc\d)(?: .*)?$/ + version = $1 + else + version = $version + end + 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}" + 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 + rescue LoadError,NameError,NoMethodError + debug "no rubygems installed" end - rescue LoadError - debug "no rubygems installed" end - if @@datadir.nil? + if @@datadir.nil? or @@coredir.nil? begin require 'rbot/pkgconfig' @@datadir = PKGConfig::DATADIR + @@coredir = PKGConfig::COREDIR rescue LoadError - puts "fatal - no way to determine data dir" + error "fatal - no way to determine data or core dir" exit 2 end end - + def Config.datadir @@datadir end + + def Config.coredir + @@coredir + end end end +end