57ff3a04d758e7de6d61aaded2f032b256ebdc8a
[packages/precise/mcollective.git] / lib / mcollective / generators / base.rb
1 module MCollective
2   module Generators
3     class Base
4       attr_accessor :meta, :plugin_name, :mod_name
5       def initialize(name, description, author, license, version, url, timeout)
6         @meta = {:name => name,
7                  :description => description,
8                  :author => author,
9                  :license => license,
10                  :version => version,
11                  :url => url,
12                  :timeout => timeout}
13       end
14
15       def create_metadata_string
16         ddl_template = File.read(File.join(File.dirname(__FILE__), "templates", "ddl.erb"))
17         ERB.new(ddl_template, nil, "-").result(binding)
18       end
19
20       def create_plugin_string
21         plugin_template = File.read(File.join(File.dirname(__FILE__), "templates", "plugin.erb"))
22         ERB.new(plugin_template, nil, "-").result(binding)
23       end
24
25       def write_plugins
26         begin
27           Dir.mkdir @plugin_name
28           dirname = File.join(@plugin_name, @mod_name.downcase)
29           Dir.mkdir dirname
30           puts "Created plugin directory : #{@plugin_name}"
31
32           File.open(File.join(dirname, "#{@plugin_name}.ddl"), "w"){|f| f.puts @ddl}
33           puts "Created DDL file : #{File.join(dirname, "#{@plugin_name}.ddl")}"
34
35           File.open(File.join(dirname, "#{@plugin_name}.rb"), "w"){|f| f.puts @plugin}
36           puts "Created #{@mod_name} file : #{File.join(dirname, "#{@plugin_name}.rb")}"
37         rescue Errno::EEXIST
38           raise "cannot generate '#{@plugin_name}' : plugin directory already exists."
39         rescue Exception => e
40           FileUtils.rm_rf(@plugin_name) if File.directory?(@plugin_name)
41           raise "cannot generate plugin - #{e}"
42         end
43       end
44     end
45   end
46 end