--- /dev/null
+module MCollective
+ module Generators
+ class Base
+ attr_accessor :meta, :plugin_name, :mod_name
+ def initialize(name, description, author, license, version, url, timeout)
+ @meta = {:name => name,
+ :description => description,
+ :author => author,
+ :license => license,
+ :version => version,
+ :url => url,
+ :timeout => timeout}
+ end
+
+ def create_metadata_string
+ ddl_template = File.read(File.join(File.dirname(__FILE__), "templates", "ddl.erb"))
+ ERB.new(ddl_template, nil, "-").result(binding)
+ end
+
+ def create_plugin_string
+ plugin_template = File.read(File.join(File.dirname(__FILE__), "templates", "plugin.erb"))
+ ERB.new(plugin_template, nil, "-").result(binding)
+ end
+
+ def write_plugins
+ begin
+ Dir.mkdir @plugin_name
+ dirname = File.join(@plugin_name, @mod_name.downcase)
+ Dir.mkdir dirname
+ puts "Created plugin directory : #{@plugin_name}"
+
+ File.open(File.join(dirname, "#{@plugin_name}.ddl"), "w"){|f| f.puts @ddl}
+ puts "Created DDL file : #{File.join(dirname, "#{@plugin_name}.ddl")}"
+
+ File.open(File.join(dirname, "#{@plugin_name}.rb"), "w"){|f| f.puts @plugin}
+ puts "Created #{@mod_name} file : #{File.join(dirname, "#{@plugin_name}.rb")}"
+ rescue Errno::EEXIST
+ raise "cannot generate '#{@plugin_name}' : plugin directory already exists."
+ rescue Exception => e
+ FileUtils.rm_rf(@plugin_name) if File.directory?(@plugin_name)
+ raise "cannot generate plugin - #{e}"
+ end
+ end
+ end
+ end
+end