summaryrefslogtreecommitdiff
path: root/lib/oxidized/config/core.rb
blob: 59ada3a66abaf99397909f844c5702729d6226e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
module Oxidized
  require 'ostruct'
  require 'yaml'
  class Config < OpenStruct
    require 'oxidized/config/defaults'
    # @param file [string] configuration file location
    def initialize file=File.join(Config::Root, 'config')
      super()
      @file = file.to_s
    end
    # load config from file or bootstrap with built-ins
    def load
      if File.exists? @file
        cfg = YAML.load_file @file
        marshal_load marshal_dump.merge(cfg)
      else
        save
      end
    end
    def defaults
      require 'oxidized/config/bootstrap'
    end
    # save config to file
    def save
      File.write @file, YAML.dump(marshal_dump)
    end
  end
  CFG = Config.new
  CFG.defaults
  CFG.load
  Log.level = Logger::INFO unless CFG.debug
  Log.file = CFG.log if CFG.log
end