mack 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +3 -1
- data/errors/errors.rb +8 -0
- data/initialization/initializers/plugins.rb +5 -1
- data/lib/generators/generator_base.rb +83 -0
- data/lib/generators/plugin_generator/plugin_generator.rb +30 -0
- data/lib/generators/plugin_generator/templates/init.rb.template +1 -0
- data/lib/generators/plugin_generator/templates/lib/plugin.rb.template +1 -0
- data/tasks/rake_rules.rake +8 -0
- metadata +5 -1
data/CHANGELOG
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
===0.0.
|
1
|
+
===0.0.6
|
2
|
+
* rake generate:<generator_name>
|
3
|
+
* rake generate:plugin - will generate the stub of a plugin in the vendor/plugins directory.
|
2
4
|
* rake dump:config - prints out the configuration information for the specified environment.
|
3
5
|
* redirect_to now takes an optional Hash as a second parameter, instead of a fixnum.
|
4
6
|
* redirect_to will now do server side redirects if passed :server_side => true as part of the optional second argument Hash.
|
data/errors/errors.rb
CHANGED
@@ -75,5 +75,13 @@ module Mack
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
# Raised if a Mack::Generator::Base required parameter is not supplied.
|
79
|
+
class RequiredGeneratorParameterMissing < StandardError
|
80
|
+
# Takes the name of the missing parameter.
|
81
|
+
def initialize(name)
|
82
|
+
super("The required parameter '#{name.to_s.upcase}' is missing for this generator!")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
78
86
|
end # Errors
|
79
87
|
end # Mack
|
@@ -4,6 +4,10 @@ Dir.glob(File.join(MACK_PLUGINS, "*")).each do |d|
|
|
4
4
|
$: << File.join(d, "lib") # add the lib for this plugin to the global load path
|
5
5
|
end
|
6
6
|
plugins.sort.each do |plug|
|
7
|
-
|
7
|
+
begin
|
8
|
+
require File.join(plug, "init.rb") # load the init.rb for each plugin.
|
9
|
+
rescue Exception => e
|
10
|
+
puts e.message
|
11
|
+
end
|
8
12
|
$:.delete(File.join(plug, "lib")) # remove the plugins lib directory from the global load path.
|
9
13
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Mack
|
2
|
+
module Generator # :nodoc:
|
3
|
+
# All generator classes should extend this class if they're expected to be used by the rake generate:<generator_name> task.
|
4
|
+
# A generator must by name in the following style: <name>Generator.
|
5
|
+
#
|
6
|
+
# Example:
|
7
|
+
# class MyCoolGenerator < Mack::Generator::Base
|
8
|
+
# require_param :name, :foo
|
9
|
+
#
|
10
|
+
# def generate
|
11
|
+
# # do work...
|
12
|
+
# end
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# rake generate:my_cool # => calls MyCoolGenerator
|
16
|
+
class Base
|
17
|
+
|
18
|
+
include FileUtils
|
19
|
+
|
20
|
+
# Used to define arguments that are required by the generator.
|
21
|
+
def self.require_param(*args)
|
22
|
+
required_params << args
|
23
|
+
required_params.flatten!
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns the required_params array.
|
27
|
+
def self.required_params
|
28
|
+
@required_params ||= []
|
29
|
+
end
|
30
|
+
|
31
|
+
# Takes a Hash of parameters.
|
32
|
+
# Raise Mack::Errors::RequiredGeneratorParameterMissing if a required parameter
|
33
|
+
# is missing.
|
34
|
+
def initialize(env = {})
|
35
|
+
@env = env
|
36
|
+
self.class.required_params.each do |p|
|
37
|
+
raise Mack::Errors::RequiredGeneratorParameterMissing.new(p) unless param(p)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Runs the generate method.
|
42
|
+
def run
|
43
|
+
generate
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns a parameter from the initial Hash of parameters.
|
47
|
+
def param(key)
|
48
|
+
(@env[key.to_s.downcase] ||= @env[key.to_s.upcase])
|
49
|
+
end
|
50
|
+
|
51
|
+
# Needs to be implemented by the subclass.
|
52
|
+
def generate
|
53
|
+
raise MethodNotImplemented.new("generate")
|
54
|
+
end
|
55
|
+
|
56
|
+
# Takes an input_file runs it through ERB and
|
57
|
+
# saves it to the specified output_file. If the output_file exists it will
|
58
|
+
# be skipped. If you would like to force the writing of the file, use the
|
59
|
+
# :force => true option.
|
60
|
+
def template(input_file, output_file, options = {})
|
61
|
+
if File.exists?(output_file)
|
62
|
+
unless options[:force]
|
63
|
+
puts "Skipped: #{output_file}"
|
64
|
+
return
|
65
|
+
end
|
66
|
+
end
|
67
|
+
File.open(output_file, "w") {|f| f.puts ERB.new(File.open(input_file).read).result(binding)}
|
68
|
+
puts "Wrote: #{output_file}"
|
69
|
+
end
|
70
|
+
|
71
|
+
# Creates the specified directory.
|
72
|
+
def directory(output_dir, options = {})
|
73
|
+
if File.exists?(output_dir)
|
74
|
+
puts "Exists: #{output_dir}"
|
75
|
+
return
|
76
|
+
end
|
77
|
+
mkdir_p(output_dir)
|
78
|
+
puts "Created: #{output_dir}"
|
79
|
+
end
|
80
|
+
|
81
|
+
end # Base
|
82
|
+
end # Generator
|
83
|
+
end # Mack
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Generates plugins for Mack applications.
|
2
|
+
#
|
3
|
+
# Example:
|
4
|
+
# rake generate:plugin name=my_cool_plugin
|
5
|
+
# This will generate the following in your mack application:
|
6
|
+
# vendor/plugins/my_cool_plugin
|
7
|
+
# vendor/plugins/my_cool_plugin/init.rb
|
8
|
+
# vendor/plugins/my_cool_plugin/lib
|
9
|
+
# vendor/plugins/my_cool_plugin/lib/my_cool_plugin.rb
|
10
|
+
class PluginGenerator < Mack::Generator::Base
|
11
|
+
|
12
|
+
require_param :name
|
13
|
+
|
14
|
+
def generate
|
15
|
+
plugin_dir = File.join(MACK_ROOT, "vendor", "plugins", param(:name).downcase)
|
16
|
+
template_dir = File.join(File.dirname(__FILE__), "templates")
|
17
|
+
|
18
|
+
# create vendor/plugins/<name>
|
19
|
+
directory(plugin_dir)
|
20
|
+
# create vendor/plugins/<name>/lib
|
21
|
+
directory(File.join(plugin_dir, "lib"))
|
22
|
+
|
23
|
+
# create vendor/plugins/<name>/init.rb
|
24
|
+
template(File.join(template_dir, "init.rb.template"), File.join(plugin_dir, "init.rb"))
|
25
|
+
# create vendor/plugins/<name>/lib/<name>.rb
|
26
|
+
template(File.join(template_dir, "lib", "plugin.rb.template"), File.join(plugin_dir, "lib", "#{param(:name).downcase}.rb"))
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require '<%= param(:name) %>'
|
@@ -0,0 +1 @@
|
|
1
|
+
# Do work here for <%= param(:name) %>
|
data/tasks/rake_rules.rake
CHANGED
@@ -16,4 +16,12 @@ rule /^cachetastic:/ do |t|
|
|
16
16
|
ENV['cache_name'] = cache_name
|
17
17
|
ENV['cache_action'] = cache_action
|
18
18
|
Rake::Task["cachetastic:manipulate_caches"].invoke
|
19
|
+
end
|
20
|
+
|
21
|
+
rule /^generate:/ do |t|
|
22
|
+
klass = t.name.gsub("generate:", '')
|
23
|
+
Rake::Task["environment"].invoke
|
24
|
+
klass = "#{klass.camelcase}Generator"
|
25
|
+
gen = klass.constantize.new(ENV)
|
26
|
+
gen.run
|
19
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- markbates
|
@@ -106,6 +106,10 @@ files:
|
|
106
106
|
- initialization/initializers/orm_support.rb
|
107
107
|
- initialization/initializers/plugins.rb
|
108
108
|
- initialization/server/simple_server.rb
|
109
|
+
- lib/generators/generator_base.rb
|
110
|
+
- lib/generators/plugin_generator/plugin_generator.rb
|
111
|
+
- lib/generators/plugin_generator/templates/init.rb.template
|
112
|
+
- lib/generators/plugin_generator/templates/lib/plugin.rb.template
|
109
113
|
- lib/utils/html.rb
|
110
114
|
- lib/utils/server.rb
|
111
115
|
- mack.rb
|