]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blob - lib/rbot/rbotconfig.rb
gem: support for newest ruby versions
[user/henk/code/ruby/rbot.git] / lib / rbot / rbotconfig.rb
1 module Irc
2 class Bot
3   module Config
4     unless defined?(@@datadir)
5       @@datadir = nil
6
7       defaultdatadir = File.expand_path(File.dirname($0) + '/../data/rbot')
8
9       if File.directory? defaultdatadir
10         @@datadir = defaultdatadir
11       end
12     end
13
14     unless defined?(@@coredir)
15       @@coredir = nil
16
17       defaultcoredir = File.expand_path(File.dirname($0) + '/../lib/rbot/core')
18
19       if File.directory? defaultcoredir
20         @@coredir = defaultcoredir
21       end
22     end
23
24     # setup pkg-based configuration - i.e. where were we installed to, where
25     # are our data files, etc.
26     if @@datadir.nil? or @@coredir.nil?
27       begin
28         debug "trying to load rubygems"
29         require 'rubygems'
30         if $version =~ /^(.*)-(?:git|rc\d)(?: .*)?$/
31           version = $1
32         else
33           version = $version
34         end
35         debug "loaded rubygems, looking for rbot version #{$version} (rbot-#{version})"
36         gem = Gem::Specification.find{|spec| spec.name == 'rbot' && spec.version.version == version}
37         if gem
38           path = gem.full_gem_path
39           debug "installed via rubygems to #{path}"
40           @@datadir = "#{path}/data/rbot"
41           @@coredir = "#{path}/lib/rbot/core"
42         else
43           debug "not installed via rubygems"
44         end
45       rescue LoadError,NameError,NoMethodError
46         debug "no rubygems installed"
47       end
48     end
49
50     if @@datadir.nil? or @@coredir.nil?
51       begin
52         require 'rbot/pkgconfig'
53         @@datadir = PKGConfig::DATADIR
54         @@coredir = PKGConfig::COREDIR
55       rescue LoadError
56         error "fatal - no way to determine data or core dir"
57         exit 2
58       end
59     end
60
61     def Config.datadir
62       @@datadir
63     end
64
65     def Config.coredir
66       @@coredir
67     end
68   end
69 end
70 end