From 1475d4085a97d1851d6c3b351596a4682cc0a479 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Tue, 28 Sep 2010 03:38:13 -0700 Subject: Add a configuration file parsing method. --- lognotify.rb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lognotify.rb b/lognotify.rb index cc2a975..affc9f2 100755 --- a/lognotify.rb +++ b/lognotify.rb @@ -6,3 +6,37 @@ # Copyright 2010 David Vazgenovich Shakaryan # Distributed under the terms of the GNU General Public License v3. # See http://www.gnu.org/licenses/gpl.txt for the full license text. + +CONFIG_DIR="~/.config/lognotify" + +# Configuration file parser. +def parse identifier + conf = Hash.new + file = File.expand_path(CONFIG_DIR + '/' + identifier + '.conf') + + File.open(file) do |contents| + contents.each_line do |line| + # Remove whitespace from beginning of line, allowing for indentation. + line.lstrip! + + # Ignore empty lines and comments. + unless line.empty? or line[0,1] == '#' + key, val = line.split('=', 2) + + # Raise an error if line does not contain a key/value pair. + if val.nil? + raise 'Check line ' + contents.lineno.to_s + ' for errors.' + end + + conf[key.strip.to_sym] = val.strip + end + end + end + + return conf +end + +# Test code... +ARGV.each do |identifier| + puts parse(identifier).inspect +end -- cgit v1.2.3-70-g09d2