ronin-gen 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +14 -0
- data/Manifest.txt +4 -4
- data/README.txt +32 -30
- data/Rakefile +11 -1
- data/bin/ronin-gen +2 -2
- data/bin/ronin-gen-extension +1 -1
- data/bin/ronin-gen-overlay +1 -1
- data/lib/ronin/generators.rb +0 -2
- data/lib/ronin/generators/dir_generator.rb +38 -7
- data/lib/ronin/generators/generator.rb +93 -88
- data/lib/ronin/generators/platform/extension.rb +7 -11
- data/lib/ronin/generators/platform/overlay.rb +91 -106
- data/lib/ronin/generators/platform/static.rb +0 -2
- data/lib/ronin/generators/version.rb +1 -3
- data/lib/ronin/ui/command_line/commands/gen.rb +8 -19
- data/lib/ronin/ui/command_line/commands/gen_extension.rb +1 -24
- data/lib/ronin/ui/command_line/commands/gen_overlay.rb +1 -65
- data/spec/generated_overlay_examples.rb +6 -0
- data/spec/generators/classes/dir_generator.rb +2 -4
- data/spec/generators/classes/file_generator.rb +4 -4
- data/spec/generators/classes/templated_generator.rb +3 -7
- data/spec/generators/classes/touch_generator.rb +1 -3
- data/spec/generators/generator_spec.rb +8 -10
- data/spec/generators/helpers/static/generators/templated.txt.erb +1 -1
- data/spec/generators/platform/extension_spec.rb +1 -4
- data/spec/generators/platform/overlay_spec.rb +2 -4
- data/spec/spec_helper.rb +1 -1
- data/spec/ui/command_line/commands/gen_extension_spec.rb +1 -1
- data/spec/ui/command_line/commands/gen_overlay_spec.rb +4 -4
- data/static/ronin/generators/platform/Rakefile.erb +5 -0
- data/static/ronin/{platform/generators → generators/platform}/extension.rb +0 -0
- data/static/ronin/{platform/generators → generators/platform}/spec/spec_helper.rb +1 -1
- data/tasks/spec.rb +1 -0
- data/tasks/yard.rb +13 -0
- metadata +33 -14
- metadata.gz.sig +0 -0
- data/TODO.txt +0 -3
- data/lib/ronin/generators/platform/spec.rb +0 -46
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
@@ -17,7 +16,6 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
21
|
require 'ronin/generators/platform/static'
|
@@ -33,21 +31,19 @@ module Ronin
|
|
33
31
|
LIB_DIR = Ronin::Platform::Extension::LIB_DIR
|
34
32
|
|
35
33
|
# The default extension file
|
36
|
-
EXTENSION_FILE = File.join('ronin','
|
37
|
-
|
38
|
-
protected
|
34
|
+
EXTENSION_FILE = File.join('ronin','generators','platform','extension.rb')
|
39
35
|
|
40
36
|
#
|
41
37
|
# Generates a skeleton Extension.
|
42
38
|
#
|
43
|
-
def generate
|
44
|
-
name = File.basename(
|
39
|
+
def generate
|
40
|
+
name = File.basename(self.path)
|
45
41
|
|
46
|
-
|
47
|
-
|
48
|
-
|
42
|
+
mkdir LIB_DIR
|
43
|
+
touch File.join(LIB_DIR,name + '.rb')
|
44
|
+
mkdir File.join(LIB_DIR,name)
|
49
45
|
|
50
|
-
|
46
|
+
copy_file EXTENSION_FILE, Ronin::Platform::Extension::EXTENSION_FILE
|
51
47
|
end
|
52
48
|
|
53
49
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
@@ -17,7 +16,6 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
21
|
require 'ronin/generators/platform/static'
|
@@ -39,7 +37,7 @@ module Ronin
|
|
39
37
|
METADATA_FILE = Ronin::Platform::Overlay::METADATA_FILE
|
40
38
|
|
41
39
|
# The Overlay metadata XSL URL
|
42
|
-
METADATA_XSL = '
|
40
|
+
METADATA_XSL = File.join('ronin','platform','overlay.xsl')
|
43
41
|
|
44
42
|
# The Overlay lib directory
|
45
43
|
LIB_DIR = Ronin::Platform::Overlay::LIB_DIR
|
@@ -51,123 +49,99 @@ module Ronin
|
|
51
49
|
DEFAULT_LICENSE = 'CC-by'
|
52
50
|
|
53
51
|
# Default maintainer to use
|
54
|
-
DEFAULT_MAINTAINER = {
|
52
|
+
DEFAULT_MAINTAINER = {'Name' => 'name@example.com'}
|
55
53
|
|
56
54
|
# Default description to use
|
57
55
|
DEFAULT_DESCRIPTION = 'This is an Overlay'
|
58
56
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
# <tt>:website</tt>:: Website for the overlay.
|
91
|
-
# <tt>:license</tt>:: License for the overlay. Defaults to
|
92
|
-
# DEFUALT_LICENSE, if not given.
|
93
|
-
# <tt>:maintainers</tt>:: List of maintainers for the overlay.
|
94
|
-
# <tt>:description</tt>:: The description of the overlay.
|
95
|
-
# Defaults to DEFAULT_DESCRIPTION,
|
96
|
-
# if not given.
|
97
|
-
#
|
98
|
-
def initialize(options={})
|
99
|
-
@title = options[:title]
|
100
|
-
@source = options[:source]
|
101
|
-
@source_view = options[:source_view]
|
102
|
-
@website = options[:website]
|
103
|
-
@license = (options[:license] || DEFAULT_LICENSE)
|
104
|
-
@maintainers = []
|
105
|
-
|
106
|
-
if options[:maintainers]
|
107
|
-
@maintainers.merge!(options[:maintainers])
|
108
|
-
end
|
109
|
-
|
110
|
-
@description = (options[:description] || DEFAULT_DESCRIPTION)
|
111
|
-
@tasks = Set[]
|
57
|
+
class_option :title, :type => :string
|
58
|
+
class_option :source, :type => :string
|
59
|
+
class_option :source_view, :type => :string
|
60
|
+
class_option :website, :type => :string
|
61
|
+
class_option :license, :type => :string, :default => DEFAULT_LICENSE
|
62
|
+
class_option :description, :type => :string, :default => DEFAULT_DESCRIPTION
|
63
|
+
class_option :maintainers, :type => :hash, :default => {}, :banner => 'NAME:EMAIL ...'
|
64
|
+
class_option :gems, :type => :array, :default => [], :banner => 'GEM ...'
|
65
|
+
class_option :tasks, :type => :array, :default => [], :banner => 'TASK ...'
|
66
|
+
class_option :test_suite, :type => :string, :banner => 'test|spec'
|
67
|
+
|
68
|
+
no_tasks do
|
69
|
+
def invoke(*names,&block)
|
70
|
+
@title = options[:title]
|
71
|
+
@source = options[:source]
|
72
|
+
@source_view = options[:source_view]
|
73
|
+
@website = options[:website]
|
74
|
+
@license = options[:license]
|
75
|
+
@description = options[:description]
|
76
|
+
@maintainers = options[:maintainers]
|
77
|
+
@gems = options[:gems]
|
78
|
+
@tasks = options[:tasks]
|
79
|
+
@test_suite = options[:test_suite]
|
80
|
+
|
81
|
+
@title ||= File.basename(self.path).gsub(/[_\s]+/,' ').capitalize
|
82
|
+
@source_view ||= @source
|
83
|
+
@website ||= @source_view
|
84
|
+
|
85
|
+
if @maintainers
|
86
|
+
@maintainers = DEFAULT_MAINTAINER
|
87
|
+
end
|
112
88
|
|
113
|
-
|
114
|
-
@tasks.merge!(options[:tasks])
|
89
|
+
super(*names,&block)
|
115
90
|
end
|
116
91
|
end
|
117
92
|
|
118
|
-
#
|
119
|
-
# Adds a new maintainer with the specified _name_ and _email_.
|
120
|
-
#
|
121
|
-
def maintainer(name,email)
|
122
|
-
@maintainers << {:name => name, :email => email}
|
123
|
-
end
|
124
|
-
|
125
|
-
protected
|
126
|
-
|
127
93
|
#
|
128
94
|
# Generates a skeleton Overlay.
|
129
95
|
#
|
130
|
-
def generate
|
131
|
-
|
132
|
-
@source_view ||= @source
|
133
|
-
@website ||= @source_view
|
134
|
-
@maintainers << DEFAULT_MAINTAINER if @maintainers.empty?
|
96
|
+
def generate
|
97
|
+
mkdir 'static'
|
135
98
|
|
136
|
-
|
137
|
-
|
99
|
+
inside File.join('static','ronin','platform') do
|
100
|
+
copy_file METADATA_XSL, File.basename(METADATA_XSL)
|
101
|
+
end
|
138
102
|
|
139
|
-
|
140
|
-
|
103
|
+
mkdir LIB_DIR
|
104
|
+
touch File.join(LIB_DIR,Ronin::Platform::Overlay::INIT_FILE)
|
141
105
|
|
142
|
-
|
143
|
-
|
106
|
+
mkdir OBJECTS_DIR
|
107
|
+
mkdir 'tasks'
|
144
108
|
end
|
145
109
|
|
146
110
|
#
|
147
111
|
# Generates the Rakefile of the Overlay.
|
148
112
|
#
|
149
|
-
def
|
150
|
-
|
151
|
-
|
113
|
+
def rakefile
|
114
|
+
case @test_suite
|
115
|
+
when 'rspec', 'spec'
|
116
|
+
@tasks << 'spec' unless @tasks.include?('spec')
|
117
|
+
end
|
152
118
|
|
153
|
-
|
154
|
-
|
155
|
-
end
|
119
|
+
template File.join('ronin','generators','platform','Rakefile.erb'), 'Rakefile'
|
120
|
+
end
|
156
121
|
|
157
|
-
|
122
|
+
#
|
123
|
+
# Generates a base test suite for the Overlay.
|
124
|
+
#
|
125
|
+
def test_suite
|
126
|
+
case @test_suite
|
127
|
+
when 'test','unit'
|
128
|
+
mkdir 'test'
|
129
|
+
when 'rspec', 'spec'
|
130
|
+
mkdir 'spec'
|
131
|
+
copy_file File.join('ronin','generators','platform','spec','spec_helper.rb'),'spec'
|
158
132
|
end
|
159
133
|
end
|
160
134
|
|
161
135
|
#
|
162
136
|
# Generates the XML metadata file for the Overlay.
|
163
137
|
#
|
164
|
-
def
|
165
|
-
|
138
|
+
def metadata
|
139
|
+
create_file(METADATA_FILE) do
|
166
140
|
doc = XML::Document.new
|
167
141
|
doc << XML::ProcessingInstruction.new(
|
168
142
|
doc,
|
169
143
|
'xml-stylesheet',
|
170
|
-
"type=\"text/xsl\" href=\"
|
144
|
+
"type=\"text/xsl\" href=\"static/#{METADATA_XSL}\""
|
171
145
|
)
|
172
146
|
|
173
147
|
root = XML::Node.new('ronin-overlay',doc)
|
@@ -177,7 +151,7 @@ module Ronin
|
|
177
151
|
title_tag << XML::Text.new(@title,doc)
|
178
152
|
root << title_tag
|
179
153
|
|
180
|
-
if
|
154
|
+
if options[:source]
|
181
155
|
source_tag = XML::Node.new('source',doc)
|
182
156
|
source_tag << XML::Text.new(@source,doc)
|
183
157
|
root << source_tag
|
@@ -201,34 +175,45 @@ module Ronin
|
|
201
175
|
|
202
176
|
maintainers_tag = XML::Node.new('maintainers',doc)
|
203
177
|
|
204
|
-
@maintainers.each do |
|
205
|
-
|
206
|
-
maintainer_tag = XML::Node.new('maintainer',doc)
|
178
|
+
@maintainers.each do |name,email|
|
179
|
+
maintainer_tag = XML::Node.new('maintainer',doc)
|
207
180
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
if author[:email]
|
215
|
-
email_tag = XML::Node.new('email',doc)
|
216
|
-
email_tag << XML::Text.new(author[:email],doc)
|
217
|
-
maintainer_tag << email_tag
|
218
|
-
end
|
181
|
+
if name
|
182
|
+
name_tag = XML::Node.new('name',doc)
|
183
|
+
name_tag << XML::Text.new(name,doc)
|
184
|
+
maintainer_tag << name_tag
|
185
|
+
end
|
219
186
|
|
220
|
-
|
187
|
+
if email
|
188
|
+
email_tag = XML::Node.new('email',doc)
|
189
|
+
email_tag << XML::Text.new(email,doc)
|
190
|
+
maintainer_tag << email_tag
|
221
191
|
end
|
192
|
+
|
193
|
+
maintainers_tag << maintainer_tag
|
222
194
|
end
|
223
195
|
|
224
196
|
root << maintainers_tag
|
225
197
|
|
198
|
+
unless @gems.empty?
|
199
|
+
dependencies_tag = XML::Node.new('dependencies',doc)
|
200
|
+
dependencies_tag << XML::Text.new(gems_tag,doc)
|
201
|
+
|
202
|
+
@gems.each do |gem_name|
|
203
|
+
gem_tag = XML::Node.new('gem',doc)
|
204
|
+
gem_tag << XML::Text.new(gem_name,doc)
|
205
|
+
dependencies_tag << gem_tag
|
206
|
+
end
|
207
|
+
|
208
|
+
root << dependencies_tag
|
209
|
+
end
|
210
|
+
|
226
211
|
description_tag = XML::Node.new('description',doc)
|
227
212
|
description_tag << XML::Text.new(@description,doc)
|
228
213
|
root << description_tag
|
229
214
|
|
230
215
|
doc << root
|
231
|
-
doc.
|
216
|
+
doc.to_xml
|
232
217
|
end
|
233
218
|
end
|
234
219
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at example.com)
|
@@ -17,7 +16,6 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
21
|
require 'ronin/static'
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at example.com)
|
@@ -17,12 +16,11 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
21
|
module Ronin
|
24
22
|
module Generators
|
25
23
|
# Ronin Gen version
|
26
|
-
VERSION = '0.
|
24
|
+
VERSION = '0.2.0'
|
27
25
|
end
|
28
26
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
@@ -17,7 +16,6 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
21
|
require 'ronin/generators/version'
|
@@ -30,26 +28,17 @@ module Ronin
|
|
30
28
|
module Commands
|
31
29
|
class Gen < Command
|
32
30
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
opts.on('-V','--version','Print version information and exit') do
|
38
|
-
success { puts "Ronin Gen #{Ronin::Generators::VERSION}" }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
opts.arguments(
|
43
|
-
'NAME' => 'Name of the Generator to run'
|
44
|
-
)
|
45
|
-
|
46
|
-
opts.summary('Runs the Generator with the specified NAME and options')
|
31
|
+
desc "version", "Prints the version and exists"
|
32
|
+
def version
|
33
|
+
puts "Ronin Gen #{Ronin::Generators::VERSION}"
|
34
|
+
exit
|
47
35
|
end
|
48
36
|
|
49
|
-
|
50
|
-
|
37
|
+
desc "default", "Prints the list of available generators"
|
38
|
+
def default
|
39
|
+
print_array CommandLine.commands.map { |name|
|
51
40
|
if name =~ /^gen_/
|
52
|
-
name.gsub(/^gen_/,'
|
41
|
+
name.gsub(/^gen_/,'')
|
53
42
|
else
|
54
43
|
nil
|
55
44
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
@@ -17,37 +16,15 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
|
-
require 'ronin/ui/command_line/command'
|
24
21
|
require 'ronin/generators/platform/extension'
|
25
22
|
|
26
23
|
module Ronin
|
27
24
|
module UI
|
28
25
|
module CommandLine
|
29
26
|
module Commands
|
30
|
-
class GenExtension <
|
31
|
-
|
32
|
-
def defaults
|
33
|
-
@generator = Generators::Platform::Extension.new
|
34
|
-
end
|
35
|
-
|
36
|
-
def define_options(opts)
|
37
|
-
opts.usage = 'PATH [...]'
|
38
|
-
|
39
|
-
opts.arguments(
|
40
|
-
'PATH' => 'The PATH of the Extension to be created'
|
41
|
-
)
|
42
|
-
|
43
|
-
opts.summary('Create an empty Extension at the specified PATH')
|
44
|
-
end
|
45
|
-
|
46
|
-
def arguments(*args)
|
47
|
-
args.each do |path|
|
48
|
-
@generator.run(File.expand_path(path))
|
49
|
-
end
|
50
|
-
end
|
27
|
+
class GenExtension < Generators::Platform::Extension
|
51
28
|
|
52
29
|
end
|
53
30
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#
|
2
|
-
#--
|
3
2
|
# Ronin Gen - A Ruby library for Ronin that provides various generators.
|
4
3
|
#
|
5
4
|
# Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
@@ -17,78 +16,15 @@
|
|
17
16
|
# You should have received a copy of the GNU General Public License
|
18
17
|
# along with this program; if not, write to the Free Software
|
19
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
20
|
-
#++
|
21
19
|
#
|
22
20
|
|
23
|
-
require 'ronin/ui/command_line/command'
|
24
21
|
require 'ronin/generators/platform/overlay'
|
25
22
|
|
26
23
|
module Ronin
|
27
24
|
module UI
|
28
25
|
module CommandLine
|
29
26
|
module Commands
|
30
|
-
class GenOverlay <
|
31
|
-
|
32
|
-
def defaults
|
33
|
-
@generator = Generators::Platform::Overlay.new
|
34
|
-
end
|
35
|
-
|
36
|
-
def define_options(opts)
|
37
|
-
opts.usage = '[options] PATH'
|
38
|
-
|
39
|
-
opts.options do
|
40
|
-
opts.on('-t','--title NAME','Name of the Overlay') do |title|
|
41
|
-
@generator.title = title
|
42
|
-
end
|
43
|
-
|
44
|
-
opts.on('-S','--source URL','The URL where the source of the Overlay will be hosted') do |url|
|
45
|
-
@generator.source = url
|
46
|
-
end
|
47
|
-
|
48
|
-
opts.on('-V','--source-view URL','The URL for viewing the contents of the Overlay') do |url|
|
49
|
-
@generator.source_view = url
|
50
|
-
end
|
51
|
-
|
52
|
-
opts.on('-U','--website URL','The URL of the website of the Overlay') do |url|
|
53
|
-
@generator.website = url
|
54
|
-
end
|
55
|
-
|
56
|
-
opts.on('-L','--license LICENSE','The license of the contents of the Overlay') do |license|
|
57
|
-
@generator.license = license
|
58
|
-
end
|
59
|
-
|
60
|
-
opts.on('-m','--maintainer "NAME <EMAIL>"','Name of a maintainer of the Overlay') do |text|
|
61
|
-
name = text.scan(/^[^<]+[^<\s]/).first
|
62
|
-
email = text.scan(/<([^<>]+)>\s*$/).first
|
63
|
-
|
64
|
-
email = email.first if email
|
65
|
-
|
66
|
-
@generator.maintainers << {:name => name, :email => email}
|
67
|
-
end
|
68
|
-
|
69
|
-
opts.on('-D','--description TEXT','The description for the Overlay') do |text|
|
70
|
-
@generator.description = text
|
71
|
-
end
|
72
|
-
|
73
|
-
opts.on('--task TASK','Add the TASK to the Overlay') do |task|
|
74
|
-
@generator.tasks << task.to_s
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
opts.arguments(
|
79
|
-
'PATH' => 'The PATH of the Overlay to be created'
|
80
|
-
)
|
81
|
-
|
82
|
-
opts.summary('Create an empty Overlay at the specified PATH')
|
83
|
-
end
|
84
|
-
|
85
|
-
def arguments(*args)
|
86
|
-
unless args.length == 1
|
87
|
-
fail('only one Overlay path maybe specified')
|
88
|
-
end
|
89
|
-
|
90
|
-
@generator.run(File.expand_path(args.first))
|
91
|
-
end
|
27
|
+
class GenOverlay < Generators::Platform::Overlay
|
92
28
|
|
93
29
|
end
|
94
30
|
end
|