diff options
author | Raine Virta <rane@kapsi.fi> | 2010-04-22 23:47:36 +0300 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2010-08-18 10:41:22 +0200 |
commit | ff7cdac8fc918a6ad280153e9487cd4cb0f2fae4 (patch) | |
tree | 4c4c8d0a89cdaf2f38c00d2c8776f0095c654d91 /tasks/plugin.rake | |
parent | 73a39cfaab866b6fff34e5c6685dab08207875ed (diff) |
Add a plugin skeleton generator
`rake plugin`
Diffstat (limited to 'tasks/plugin.rake')
-rw-r--r-- | tasks/plugin.rake | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tasks/plugin.rake b/tasks/plugin.rake new file mode 100644 index 00000000..f781481e --- /dev/null +++ b/tasks/plugin.rake @@ -0,0 +1,53 @@ +task :plugin, :name do |t, args| + if args.to_a.empty? + raise <<-eos +Usage: rake #{t}[<plugin name>] +Example: rake plugin[Greet] + eos + end + plugin_name = args.name.downcase + class_name = "#{plugin_name.capitalize}Plugin" + plugin_template = <<-eot +class #{class_name} < Plugin + def help(plugin, topic="") + topics = %w{hello} + + case topic + when 'hello' + _("hello, this is an example topic of my new plugin! :)") + else + _("#{plugin_name} plugin — topics: %{list}") % { + :list => topics.join(", ") + } + end + end + + def example(m, params) + m.reply "example action was triggered" + end +end + +plugin = #{class_name}.new +plugin.map "#{plugin_name} [:arg]", :action => 'example' + eot + + plugins_path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data/rbot/plugins')) + file_path = File.join(plugins_path, "#{plugin_name}.rb") + + if File.exist?(file_path) + puts "File exists: #{file_path}" + print "Overwrite? " + input = STDIN.gets.chomp + puts + + exit unless input =~ /y(es)?/ + end + + File.open(file_path, "w") do |f| + f << plugin_template + end + + puts "Plugin skeleton for #{class_name} written!" + puts "Now issue `rescan` on the bot and use the command `help #{plugin_name}` to see that the plugin works." + puts +end |