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