]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
The path to the fortune executable can now be configured (fortune.path). When empty...
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 30 Jan 2007 14:21:11 +0000 (14:21 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 30 Jan 2007 14:21:11 +0000 (14:21 +0000)
data/rbot/plugins/fortune.rb

index 184b6b1382d344d9b51ef9e9003ee5a1ee021395..e530ae3e84c82d5067e3efa5f3748d30b9db9f86 100644 (file)
@@ -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 [<module>] => 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