]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blob - lib/rbot/rbotconfig.rb
ensures the path reported by gems does exists
[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           if File.directory? "#{path}/data/rbot"
41             @@datadir = "#{path}/data/rbot"
42           end
43           if File.directory? "#{path}/lib/rbot/core"
44             @@coredir = "#{path}/lib/rbot/core"
45           end
46         else
47           debug "not installed via rubygems"
48         end
49       rescue LoadError,NameError,NoMethodError
50         debug "no rubygems installed"
51       end
52     end
53
54     if @@datadir.nil? or @@coredir.nil?
55       begin
56         require 'rbot/pkgconfig'
57         @@datadir = PKGConfig::DATADIR
58         @@coredir = PKGConfig::COREDIR
59       rescue LoadError
60         error "fatal - no way to determine data or core dir"
61         exit 2
62       end
63     end
64
65     def Config.datadir
66       @@datadir
67     end
68
69     def Config.coredir
70       @@coredir
71     end
72   end
73 end
74 end