Class: Arbi::Config

Inherits:
Hash
  • Object
show all
Includes:
Singleton
Defined in:
lib/arbi/config.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



28
29
30
31
# File 'lib/arbi/config.rb', line 28

def initialize
  super()
  self.parse
end

Class Method Details

.[](*args) ⇒ Object



72
73
74
# File 'lib/arbi/config.rb', line 72

def [](*args)
  self.instance.send(:[], *args)
end

.[]=(*args) ⇒ Object



76
77
78
# File 'lib/arbi/config.rb', line 76

def []=(*args)
  self.instance.send(:[]=, *args)
end

.__method_missing__Object



63
# File 'lib/arbi/config.rb', line 63

alias __method_missing__ method_missing

.inspectObject



80
81
82
# File 'lib/arbi/config.rb', line 80

def inspect
  self.instance.inspect
end

.method_missing(sym, *args, &blk) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/arbi/config.rb', line 64

def method_missing(sym, *args, &blk)
  if self.instance.respond_to?(sym)
    self.instance.send(sym, *args, &blk)
  else
    self.__method_missing__(sym, *args, &blk)
  end
end

.to_sObject



84
85
86
# File 'lib/arbi/config.rb', line 84

def to_s
  self.instance.to_s
end

Instance Method Details

#parse(file = '/etc/arbi.yaml') ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/arbi/config.rb', line 33

def parse(file = '/etc/arbi.yaml')
  config = ::YAML.load_file(file)
rescue Exception => e
  Arbi.debug "Config: #{e}"
ensure
  config ||= {}
  config[:server] ||= {}
  config[:server][:address] ||= '127.0.0.1'
  config[:server][:port] ||= 6969
  config[:server][:acpi] ||= {}
  config[:server][:acpi][:listen] ||= '/var/run/acpid.socket'
  config[:server][:acpi][:bind] ||= '/var/run/arbid.socket'
  config[:client] ||= {}
  config[:client][:address] ||= '127.0.0.1'
  config[:client][:port] ||= 6969
  config[:client][:default_cmd] ||= ['help', 'quit']
  config[:modules] ||= {}
  config[:modules][:path] ||= []
  config[:modules][:modules] ||= []

  config[:client][:default_cmd].map!(&:to_s).uniq!
  config[:client][:default_cmd].delete('quit')
  config[:client][:default_cmd] << 'quit'
  config[:modules][:path] << File.join(File.dirname(__FILE__), 'modules')
  config[:modules][:path].uniq!

  self.replace(config)
end