From 57a8f4bc04b4f87ad0d7028dcbf29b96d49eaffd Mon Sep 17 00:00:00 2001 From: Saku Ytti Date: Mon, 14 Apr 2014 16:28:23 +0300 Subject: Use 'asetus' for configuration files Main benefits a) we get support for system wide configs b) we don't use symbols in config file, they're confusing to non-rubyist --- lib/oxidized/source/csv.rb | 27 ++++++++++++--------------- lib/oxidized/source/source.rb | 1 + lib/oxidized/source/sql.rb | 29 +++++++++++++---------------- 3 files changed, 26 insertions(+), 31 deletions(-) (limited to 'lib/oxidized/source') diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb index cf73fc8..9d291c7 100644 --- a/lib/oxidized/source/csv.rb +++ b/lib/oxidized/source/csv.rb @@ -1,31 +1,28 @@ module Oxidized class CSV < Source def initialize - @cfg = CFG.source[:csv] + @cfg = CFG.source.csv super end def setup - if not @cfg - CFG.source[:csv] = { - :file => File.join(Config::Root, 'router.db'), - :delimiter => /:/, - :map => { - :name => 0, - :model => 1, - } - } - CFG.save + if @cfg.empty? + CFGS.user.source.csv.file = File.join(Config::Root, 'router.db') + CFGS.user.source.csv.delimiter = /:/ + CFGS.user.source.csv.map.name = 0 + CFGS.user.source.csv.map.model = 1 + CFGS.save :user + raise NoConfig, 'no source csv config, edit ~/.config/oxidized/config' end end def load nodes = [] - open(@cfg[:file]).each_line do |line| - data = line.chomp.split @cfg[:delimiter] + open(@cfg.file).each_line do |line| + data = line.chomp.split @cfg.delimiter keys = {} - @cfg[:map].each do |key, position| - keys[key] = data[position] + @cfg.map.each do |key, position| + keys[key.to_sym] = data[position] end keys[:model] = map_model keys[:model] if keys.key? :model nodes << keys diff --git a/lib/oxidized/source/source.rb b/lib/oxidized/source/source.rb index f5976a0..93c9b6f 100644 --- a/lib/oxidized/source/source.rb +++ b/lib/oxidized/source/source.rb @@ -1,5 +1,6 @@ module Oxidized class Source + class NoConfig < OxidizedError; end class << self def inherited klass Oxidized.mgr.loader = { :class => klass } diff --git a/lib/oxidized/source/sql.rb b/lib/oxidized/source/sql.rb index 385f632..f84a7a8 100644 --- a/lib/oxidized/source/sql.rb +++ b/lib/oxidized/source/sql.rb @@ -4,34 +4,31 @@ class SQL < Source def initialize super - @cfg = CFG.source[:sql] + @cfg = CFG.source.sql end def setup - if not @cfg - CFG.source[:sql] = { - :adapter => 'sqlite', - :file => File.join(Config::Root, 'sqlite.db'), - :table => 'devices', - :map => { - :name => 'name', - :model => 'rancid', - } - } - CFG.save + if @cfg.empty? + CFGS.user.source.sql.adapter = 'sqlite' + CFGS.user.source.sql.file = File.join(Config::Root, 'sqlite.db') + CFGS.user.source.sql.table = 'devices' + CFGS.user.source.sql.map.name = 'name' + CFGS.user.source.sql.map.model = 'rancid' + CFGS.save :user + raise NoConfig, 'no source sql config, edit ~/.config/oxidized/config' end end def load nodes = [] - db = case @cfg[:adapter] + db = case @cfg.adapter when 'sqlite' require 'sqlite3' - Sequel.sqlite @cfg[:file] + Sequel.sqlite @cfg.file end - db[@cfg[:table].to_sym].each do |node| + db[@cfg.table.to_sym].each do |node| keys = {} - @cfg[:map].each { |key, sql_column| keys[key] = node[sql_column.to_sym] } + @cfg.map.each { |key, sql_column| keys[key.to_sym] = node[sql_column.to_sym] } keys[:model] = map_model keys[:model] if keys.key? :model nodes << keys end -- cgit v1.2.1