From 70b4d72c18d092bf14c982a28e860321f947755c Mon Sep 17 00:00:00 2001 From: Tom Gilbert Date: Wed, 31 Aug 2005 20:39:19 +0000 Subject: a little more robustness around emtpy lookups Also more robustness around reading/writing conf.yaml --- lib/rbot/config.rb | 28 +++++++++++++++++++--------- lib/rbot/keywords.rb | 1 + 2 files changed, 20 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/rbot/config.rb b/lib/rbot/config.rb index 36160875..7475d617 100644 --- a/lib/rbot/config.rb +++ b/lib/rbot/config.rb @@ -311,20 +311,30 @@ module Irc :defaults => {:topic => false} if(File.exist?("#{@@bot.botclass}/conf.yaml")) - newconfig = YAML::load_file("#{@@bot.botclass}/conf.yaml") - @@config.update newconfig - else - # first-run wizard! - BotConfigWizard.new(@@bot).run - # save newly created config - save + begin + newconfig = YAML::load_file("#{@@bot.botclass}/conf.yaml") + @@config.update newconfig + return + rescue + $stderr.puts "failed to read conf.yaml: #{$!}" + end end + # if we got here, we need to run the first-run wizard + BotConfigWizard.new(@@bot).run + # save newly created config + save end # write current configuration to #{botclass}/conf.rbot def save - File.open("#{@@bot.botclass}/conf.yaml", "w") do |file| - file.puts @@config.to_yaml + begin + File.open("#{@@bot.botclass}/conf.yaml.new", "w") do |file| + file.puts @@config.to_yaml + end + File.rename("#{@@bot.botclass}/conf.yaml.new", + "#{@@bot.botclass}/conf.yaml") + rescue + $stderr.puts "failed to write configuration file conf.yaml! #{$!}" end end diff --git a/lib/rbot/keywords.rb b/lib/rbot/keywords.rb index 8065e8b8..cc91155c 100644 --- a/lib/rbot/keywords.rb +++ b/lib/rbot/keywords.rb @@ -250,6 +250,7 @@ module Irc # # handle a message asking about a keyword def keyword(m, key, dunno=true) + return if key.nil? unless(kw = self[key]) m.reply @bot.lang.get("dunno") if (dunno) return -- cgit v1.2.3