From 7fc1afb479035f78a3eee008fe551100942186bc Mon Sep 17 00:00:00 2001 From: Daichi_h Date: Wed, 22 Feb 2012 16:23:50 +0900 Subject: [PATCH] Change the mechanism for load plug-in --- lib/core.rb | 35 ++++++++----------- .../{hatenabookmark.rb => hatena_bookmark.rb} | 0 2 files changed, 15 insertions(+), 20 deletions(-) rename plugins/publish/{hatenabookmark.rb => hatena_bookmark.rb} (100%) diff --git a/lib/core.rb b/lib/core.rb index 6752f30..839d4c1 100644 --- a/lib/core.rb +++ b/lib/core.rb @@ -8,30 +8,25 @@ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0. class Automatic + require 'pathname' + require 'yaml' + def self.core(recipe) - basedir = File.dirname(__FILE__) - $:.unshift File.join(basedir, '..', 'plugins', 'subscription') - $:.unshift File.join(basedir, '..', 'plugins', 'filter') - $:.unshift File.join(basedir, '..', 'plugins', 'store') - $:.unshift File.join(basedir, '..', 'plugins', 'publish') + basedir = Pathname.new(__FILE__).parent.parent + recipe = basedir + 'config/default.yml' if recipe.empty? - Dir.glob(basedir + '/../plugins/**/*.rb').each {|r| - require(File.basename(r, '.rb')) - } + Pathname.glob(basedir + 'plugins/*/*.rb').each do |path| + klass_name = + path.parent.basename.to_s.split('_').map(&:capitalize).join + + path.basename('.rb').to_s.split('_').map(&:capitalize).join - require 'yaml' - if recipe == "" - recipe = basedir + '/../config/default.yml' + autoload klass_name.to_sym, path end - File.open(recipe) {|io| - YAML.load_documents(io) {|yaml| - @pipeline = [] - yaml['plugins'].each {|plugin| - loader = eval(plugin['module']).new(plugin['config'], @pipeline) - @pipeline = loader.run - } - } - } + @pipeline = [] + YAML.load(File.read(recipe))['plugins'].each do |plugin| + klass = eval(plugin['module']) + @pipeline = klass.new(plugin['config'], @pipeline).run + end end end diff --git a/plugins/publish/hatenabookmark.rb b/plugins/publish/hatena_bookmark.rb similarity index 100% rename from plugins/publish/hatenabookmark.rb rename to plugins/publish/hatena_bookmark.rb