module Irc
+class Bot
module Config
- @@datadir = nil
+ unless defined?(@@datadir)
+ @@datadir = nil
- # first try for the default path to the data dir
- defaultdir = File.expand_path(File.dirname($0) + '/../data')
+ defaultdatadir = File.expand_path(File.dirname($0) + '/../data/rbot')
- if File.directory? "#{defaultdir}/rbot"
- @@datadir = "#{defaultdir}/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.
- if @@datadir.nil?
+ if @@datadir.nil? or @@coredir.nil?
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"
+ 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
end
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