From: Giuseppe Bilotta Date: Tue, 30 Jan 2007 14:21:11 +0000 (+0000) Subject: The path to the fortune executable can now be configured (fortune.path). When empty... X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=72c8aadb6e251a8d956259a572261781c1a45289;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git The path to the fortune executable can now be configured (fortune.path). When empty, the bot will try to autodetect it. If autodetection is successfull, the path found will be stored in fortune.path --- diff --git a/data/rbot/plugins/fortune.rb b/data/rbot/plugins/fortune.rb index 184b6b13..e530ae3e 100644 --- a/data/rbot/plugins/fortune.rb +++ b/data/rbot/plugins/fortune.rb @@ -1,18 +1,45 @@ class FortunePlugin < Plugin + BotConfig.register BotConfigStringValue.new('fortune.path', + :default => '', + :desc => "Full path to the fortune executable") + def help(plugin, topic="") "fortune [] => get a (short) fortune, optionally specifying fortune db" end def fortune(m, params) db = params[:db] - fortune = nil - ["/usr/games/fortune", "/usr/bin/fortune", "/usr/local/bin/fortune"].each {|f| - if FileTest.executable? f - fortune = f - break - end - } + fortune = @bot.config['fortune.path'] + if fortune.empty? + ["/usr/share/games/fortune", + "/usr/share/bin/fortune", + "/usr/games/fortune", + "/usr/bin/fortune", + "/usr/local/games/fortune", + "/usr/local/bin/fortune"].each {|f| + if FileTest.executable? f + fortune = f + + # Try setting the config entry + config_par = {:key => 'fortune.path', :value => [f], :silent => true } + debug "Setting fortune.path to #{f}" + set_path = @bot.plugins['config'].handle_set(m, config_par) + if set_path + debug "fortune.path set to #{@bot.config['fortune.path']}" + else + debug "couldn't set fortune.path" + end + + break + end + } + end m.reply "fortune binary not found" unless fortune - ret = Utils.safe_exec(fortune, "-n", "255", "-s", db) + begin + ret = Utils.safe_exec(fortune, "-n", "255", "-s", db) + rescue + ret = "failed to execute fortune" + # TODO reset fortune.path when execution fails + end m.reply ret.gsub(/\t/, " ").split(/\n/).join(" ") return end