summaryrefslogtreecommitdiff
path: root/lib/oxidized/config
diff options
context:
space:
mode:
Diffstat (limited to 'lib/oxidized/config')
-rw-r--r--lib/oxidized/config/bootstrap.rb27
-rw-r--r--lib/oxidized/config/core.rb28
-rw-r--r--lib/oxidized/config/defaults.rb12
3 files changed, 67 insertions, 0 deletions
diff --git a/lib/oxidized/config/bootstrap.rb b/lib/oxidized/config/bootstrap.rb
new file mode 100644
index 0000000..e44dde7
--- /dev/null
+++ b/lib/oxidized/config/bootstrap.rb
@@ -0,0 +1,27 @@
+module Oxidized
+ require 'fileutils'
+ FileUtils.mkdir_p Config::Root
+ CFG.username = 'username'
+ CFG.password = 'password'
+ CFG.model = 'junos'
+ CFG.interval = 30
+ CFG.log = File.join Config::Root, 'log'
+ CFG.debug = false
+ CFG.threads = 10
+ CFG.timeout = 5
+ CFG.prompt = /^([\w\.\-@]{3,30}[#>]\s?)$/
+ CFG.input = {
+ :default => 'ssh',
+ }
+ CFG.output = {
+ :default => 'git',
+ }
+ CFG.source = {
+ :default => 'ascii',
+ }
+ CFG.model_map = {
+ 'cisco' => 'ios',
+ 'juniper' => 'junos',
+ }
+ CFG.save
+end
diff --git a/lib/oxidized/config/core.rb b/lib/oxidized/config/core.rb
new file mode 100644
index 0000000..6c91920
--- /dev/null
+++ b/lib/oxidized/config/core.rb
@@ -0,0 +1,28 @@
+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
+ marshal_load YAML.load_file @file
+ else
+ require 'oxidized/config/bootstrap'
+ end
+ end
+ # save config to file
+ def save
+ File.write @file, YAML.dump(marshal_dump)
+ end
+ end
+ CFG = Config.new
+ CFG.load
+ Log.file = CFG.log if CFG.log
+ Log.level = Logger::INFO unless CFG.debug
+end
diff --git a/lib/oxidized/config/defaults.rb b/lib/oxidized/config/defaults.rb
new file mode 100644
index 0000000..a07e1a6
--- /dev/null
+++ b/lib/oxidized/config/defaults.rb
@@ -0,0 +1,12 @@
+module Oxidized
+ class Config
+ Root = File.join ENV['HOME'], '.config', 'oxidized'
+ InputDir = File.join Directory, %w(lib oxidized input)
+ OutputDir = File.join Directory, %w(lib oxidized output)
+ ModelDir = File.join Directory, %w(lib oxidized model)
+ SourceDir = File.join Directory, %w(lib oxidized source)
+ end
+ class << self
+ attr_accessor :mgr
+ end
+end