]> git.immae.eu Git - perso/Immae/Projets/Ruby/Monitor.git/blobdiff - ini_read.rb
Separation in sub-files
[perso/Immae/Projets/Ruby/Monitor.git] / ini_read.rb
diff --git a/ini_read.rb b/ini_read.rb
new file mode 100644 (file)
index 0000000..9ae3f1b
--- /dev/null
@@ -0,0 +1,91 @@
+require 'optparse'
+require 'ostruct'
+require "inifile"
+
+class OptParse
+  def parse(args)
+    
+    options = OpenStruct.new()
+    options.inifile = nil
+
+    opt_parser = OptionParser.new() do |opts|
+      
+      opts.banner = "Usage: monitor [options]"
+      opts.separator ""
+
+      opts.on( '-f', "-f ini_file", "chose a different initialization file") do |ini|
+        options.inifile = ini
+      end
+    end
+    opt_parser.parse!(args)
+    return options
+  end
+end
+
+
+class Ini_read
+  attr_reader(:global,:sections)
+#  attr_reader :global
+#  attr_accessor :global
+  def initialize()
+    options = OptParse.new().parse(ARGV)
+    find_ini(options.inifile)
+    read_ini()
+    parse_config()
+  end
+
+  def find_ini(option_inifile)
+    if(not option_inifile.nil?)
+      @inifile = option_inifile
+    elsif(ENV.has_key?('MONITOR_RC'))
+      @inifile = ENV['MONITOR_RC']
+    elsif(Process.uid == 0)
+      @inifile = "/etc/monitor.rc"
+    else
+      @inifile = ENV['HOME']+"/.monitorrc"
+    end
+  end
+
+  def read_ini()
+    @config = IniFile.load(@inifile, :default=>'global')
+    if(@config.nil?)
+      puts "Initialization file not found or not readable"
+      exit
+    end
+  end
+  def each_section()
+    return @sections
+  end
+
+  def parse_config()
+    @global = {}
+    @sections = {}
+    @config.each_section do |section|
+      sec = @config[section]
+      if(section == "global")
+        @global = sec
+      end
+      if(not sec.has_key?('Type'))
+        puts "Section incomplete, ignored: "+ section
+        next
+      elsif(not sec.has_key?('Command'))
+        puts "Section incomplete, ignored: "+ section
+        next
+      end
+      if(sec['Type'] == "continuous")
+        if(not sec.has_key?('Buffer'))
+          sec['Buffer'] = 1000
+        end
+      end
+      if(sec['Type'] == "oneshot")
+        if(not sec.has_key?('Periodic'))
+          sec['Periodic'] = 600
+        end
+      end
+      @sections[section] = sec
+    end
+  end
+
+end
+