rabal 0.0.1 → 0.1.0
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/CHANGES +13 -0
- data/README.PLUGIN +8 -8
- data/Rakefile +79 -0
- data/lib/rabal.rb +26 -28
- data/lib/rabal/application.rb +53 -15
- data/lib/rabal/directory_tree.rb +3 -3
- data/lib/rabal/error.rb +2 -0
- data/lib/rabal/file_tree.rb +9 -4
- data/lib/rabal/gemspec.rb +50 -0
- data/lib/rabal/logger.rb +15 -6
- data/lib/rabal/plugin.rb +9 -5
- data/lib/rabal/plugin/core.rb +4 -3
- data/lib/rabal/plugin/ext.rb +17 -0
- data/lib/rabal/plugin/foundation.rb +21 -10
- data/lib/rabal/plugin/license.rb +8 -13
- data/lib/rabal/plugin/rubyforge.rb +22 -0
- data/lib/rabal/plugin/spec.rb +6 -0
- data/lib/rabal/plugin/test.rb +7 -0
- data/lib/rabal/plugin_tree.rb +1 -2
- data/lib/rabal/project_tree.rb +7 -2
- data/lib/rabal/specification.rb +128 -0
- data/lib/rabal/tree.rb +19 -5
- data/lib/rabal/usage.rb +8 -5
- data/lib/rabal/util.rb +2 -2
- data/lib/rabal/version.rb +6 -3
- data/resources/trees/bin/rabal.project +3 -3
- data/resources/trees/core/{CHANGES → CHANGES.erb} +1 -1
- data/resources/trees/core/{README → README.erb} +1 -1
- data/resources/trees/core/Rakefile.erb +67 -0
- data/resources/trees/core/lib/rabal.project.rb.erb +0 -2
- data/resources/trees/core/lib/rabal.project/gemspec.rb.erb +51 -0
- data/resources/trees/core/lib/rabal.project/specification.rb.erb +128 -0
- data/resources/trees/core/lib/rabal.project/version.rb.erb +2 -1
- data/resources/trees/ext/ext/rabal.project/ext/mkrf_conf.rb.erb +7 -0
- data/resources/trees/ext/tasks/extension.rb.erb +15 -0
- data/resources/trees/rubyforge/tasks/rubyforge.rb.erb +105 -0
- data/resources/trees/spec/{rabal.project_spec.rb.erb → spec/rabal.project_spec.rb.erb} +0 -0
- data/resources/trees/spec/{spec_helper.rb.erb → spec/spec_helper.rb.erb} +0 -0
- data/resources/trees/spec/tasks/rspec.rb.erb +20 -0
- data/resources/trees/test/tasks/testunit.rb.erb +14 -0
- data/resources/trees/test/{rabal.project_test.rb.erb → test/rabal.project_test.rb.erb} +1 -1
- data/resources/trees/test/{test_helper.rb.erb → test/test_helper.rb.erb} +1 -1
- data/spec/application_spec.rb +47 -0
- data/spec/bin_plugin_spec.rb +1 -1
- data/spec/core_plugin_spec.rb +10 -3
- data/spec/license_plugin_spec.rb +10 -8
- data/spec/plugin_tree_spec.rb +4 -4
- data/spec/spec_plugin_spec.rb +1 -1
- data/spec/test_plugin_spec.rb +1 -1
- data/spec/version_spec.rb +1 -1
- metadata +73 -24
- data/resources/trees/core/Rakefile +0 -0
data/CHANGES
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
= rabal Changelog
|
2
|
+
=== Version 0.1.0
|
3
|
+
|
4
|
+
* Support for building ruby C extensions
|
5
|
+
* Highline prompting for arguments missed on the commandline
|
6
|
+
* logfile and verbosity options works
|
7
|
+
* Refactored generated rakefile tasks into namespaces
|
8
|
+
** rubyforge support
|
9
|
+
** rspec and ruby unit templates
|
10
|
+
|
11
|
+
=== Version 0.0.1
|
12
|
+
|
13
|
+
* Initial public release
|
data/README.PLUGIN
CHANGED
@@ -168,7 +168,7 @@ happening.
|
|
168
168
|
validate that all of a plugins +parameters+ have a non-nil value.
|
169
169
|
9. Access the directory within the plugin containing the files that this
|
170
170
|
plugin will use. In this case that directory happens to be
|
171
|
-
|
171
|
+
<tt>gem_directory/resources/trees/license/</tt>
|
172
172
|
10. Every Plugin is required to have a +@tree+ instance variable. This
|
173
173
|
creates a new DirectoryTree instance and associates it with the "."
|
174
174
|
directory within the resulting project structure. This in effect
|
@@ -212,7 +212,7 @@ options.
|
|
212
212
|
|
213
213
|
At the core of rabal are the resource trees utilized by the plugins to
|
214
214
|
generate an output directory/file structure. These tree _templates_ are
|
215
|
-
stored within your gem under the
|
215
|
+
stored within your gem under the <tt>resources/trees</tt> directory from
|
216
216
|
withing your gem.
|
217
217
|
|
218
218
|
You can get a jump start on your plugin project with:
|
@@ -236,8 +236,8 @@ returned from the nested calls:
|
|
236
236
|
|
237
237
|
resource_by_name(my_main_tree_name)
|
238
238
|
|
239
|
-
+my_main_tree_name+ returns
|
240
|
-
return
|
239
|
+
+my_main_tree_name+ returns <tt>trees/xyzzy</tt> and +resource_by_name+ will
|
240
|
+
return <tt>/path/to/gem/resources/trees/xyzzy</tt>.
|
241
241
|
|
242
242
|
A later release of rabal will include a rabal plugin generation plugin
|
243
243
|
to simplify the creation of rabal plugins.
|
@@ -247,7 +247,7 @@ to simplify the creation of rabal plugins.
|
|
247
247
|
The internal mechanisms of rabal use a Tree data structure to represent
|
248
248
|
the directories and files that are created by rabal. Each node in the
|
249
249
|
tree is represented by a Tree or child class such as DirectoryTree or
|
250
|
-
FileTree. Each Tree has a
|
250
|
+
FileTree. Each Tree has a +parameters+ instance variable, which is
|
251
251
|
by convention an instance of OpenStruct. It can be any object though.
|
252
252
|
|
253
253
|
Any Tree instance or erb template when it is evaluated has access to any
|
@@ -257,7 +257,7 @@ the *root* of the Tree which is created by Rabal::Plugin::Core.
|
|
257
257
|
Essentially, in a Tree instance or in an ERB template +method_missing+
|
258
258
|
is defined such that the method call cascades up the Tree data structure
|
259
259
|
until a Tree node is found that either responds to that method or has a
|
260
|
-
|
260
|
+
+parameters+ instance variable that responds to the method call.
|
261
261
|
|
262
262
|
If the call cascades all the way to the *root* and nothing responds to
|
263
263
|
it, then NoMethodError is raised.
|
@@ -265,10 +265,10 @@ it, then NoMethodError is raised.
|
|
265
265
|
=== Core Parameters
|
266
266
|
|
267
267
|
Since Rabal::Plugin::Core is the plugin that creates the root of the
|
268
|
-
entire tree, its
|
268
|
+
entire tree, its +parameters+ are available. Currently these are
|
269
269
|
available during tree generation as:
|
270
270
|
|
271
|
-
*
|
271
|
+
* <b>root.name</b> - the name of the project from the command line
|
272
272
|
* *author* - the author of the project from the <tt>--core-author</tt> option
|
273
273
|
* *email* - the email address of the author from the <tt>--core-email</tt> option
|
274
274
|
|
data/Rakefile
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
|
6
|
+
# since we have directories named 'core' remove that from CLEAN
|
7
|
+
CLEAN.exclude("**/core")
|
8
|
+
|
9
|
+
$: << File.join(File.dirname(__FILE__),"lib")
|
10
|
+
require 'rabal'
|
11
|
+
|
12
|
+
# load all the extra tasks for the project
|
13
|
+
TASK_DIR = File.join(File.dirname(__FILE__),"tasks")
|
14
|
+
FileList[File.join(TASK_DIR,"*.rb")].each do |tasklib|
|
15
|
+
require "tasks/#{File.basename(tasklib)}"
|
16
|
+
end
|
17
|
+
|
18
|
+
task :default => 'test:default'
|
19
|
+
|
20
|
+
#-----------------------------------------------------------------------
|
21
|
+
# Documentation
|
22
|
+
#-----------------------------------------------------------------------
|
23
|
+
namespace :doc do |ns|
|
24
|
+
|
25
|
+
# generating documentation locally
|
26
|
+
Rake::RDocTask.new do |rdoc|
|
27
|
+
rdoc.rdoc_dir = Rabal::SPEC.local_rdoc_dir
|
28
|
+
rdoc.options = Rabal::SPEC.rdoc_options
|
29
|
+
rdoc.rdoc_files = Rabal::SPEC.rdoc_files
|
30
|
+
end
|
31
|
+
|
32
|
+
#desc "View the RDoc documentation locally"
|
33
|
+
task :view => :rdoc do
|
34
|
+
show_files Rabal::SPEC.local_rdoc_dir
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
#-----------------------------------------------------------------------
|
39
|
+
# Packaging and Distribution
|
40
|
+
#-----------------------------------------------------------------------
|
41
|
+
namespace :dist do
|
42
|
+
|
43
|
+
GEM_SPEC = eval(Rabal::SPEC.to_ruby)
|
44
|
+
|
45
|
+
Rake::GemPackageTask.new(GEM_SPEC) do |pkg|
|
46
|
+
pkg.need_tar = Rabal::SPEC.need_tar
|
47
|
+
pkg.need_zip = Rabal::SPEC.need_zip
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Install as a gem"
|
51
|
+
task :install => [:clobber_package, :package] do
|
52
|
+
sh "sudo gem install pkg/#{Rabal::SPEC.full_name}.gem"
|
53
|
+
end
|
54
|
+
|
55
|
+
# uninstall the gem and all executables
|
56
|
+
desc "Uninstall gem"
|
57
|
+
task :uninstall do
|
58
|
+
sh "sudo gem uninstall #{Rabal::SPEC.name} -x"
|
59
|
+
end
|
60
|
+
|
61
|
+
desc "dump gemspec"
|
62
|
+
task :gemspec do
|
63
|
+
puts Rabal::SPEC.to_ruby
|
64
|
+
end
|
65
|
+
|
66
|
+
desc "reinstall gem"
|
67
|
+
task :reinstall => [:install, :uninstall]
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
#-----------------------------------------------------------------------
|
72
|
+
# update the top level clobber task to depend on all possible sub-level
|
73
|
+
# tasks that have a name like ':clobber' in other namespaces
|
74
|
+
#-----------------------------------------------------------------------
|
75
|
+
Rake.application.tasks.each do |t|
|
76
|
+
if t.name =~ /:clobber/ then
|
77
|
+
task :clobber => [t.name]
|
78
|
+
end
|
79
|
+
end
|
data/lib/rabal.rb
CHANGED
@@ -1,37 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
require 'find'
|
2
|
+
require 'erb'
|
3
|
+
require 'logger'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'main'
|
8
8
|
|
9
|
-
Rabal
|
10
|
-
distributing ruby projects.
|
11
|
-
DESC
|
9
|
+
module Rabal
|
12
10
|
|
13
11
|
ROOT_DIR = File.expand_path(File.join(File.dirname(__FILE__),".."))
|
14
12
|
LIB_DIR = File.join(ROOT_DIR,"lib").freeze
|
15
13
|
KNOWN_WORDS = {
|
16
|
-
"rabal.project" => lambda { |tree| tree.root.
|
14
|
+
"rabal.project" => lambda { |tree| tree.root.project_name }
|
17
15
|
}
|
18
16
|
|
19
|
-
#
|
20
|
-
# Utility method to require all files ending in .rb that lie in the
|
21
|
-
# directory below this file that has the same name as the filename
|
22
|
-
# passed in.
|
23
|
-
#
|
24
|
-
def require_all_libs_relative_to(fname)
|
25
|
-
search_me = File.join(File.dirname(fname),File.basename(fname,".*"))
|
26
|
-
|
27
|
-
Dir.entries(search_me).each do |rb|
|
28
|
-
if File.extname(rb) == ".rb" then
|
29
|
-
require File.join(search_me,rb)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
module_function :require_all_libs_relative_to
|
34
|
-
|
35
17
|
#
|
36
18
|
# Module singleton methods, allow for accessing a single rabal
|
37
19
|
# application from anywhere
|
@@ -46,4 +28,20 @@ DESC
|
|
46
28
|
end
|
47
29
|
end
|
48
30
|
end
|
49
|
-
|
31
|
+
|
32
|
+
# require all the files
|
33
|
+
require 'rabal/action_tree'
|
34
|
+
require 'rabal/application'
|
35
|
+
require 'rabal/directory_tree'
|
36
|
+
require 'rabal/error'
|
37
|
+
require 'rabal/file_tree'
|
38
|
+
require 'rabal/gemspec'
|
39
|
+
require 'rabal/logger'
|
40
|
+
require 'rabal/plugin'
|
41
|
+
require 'rabal/plugin_tree'
|
42
|
+
require 'rabal/project_tree'
|
43
|
+
require 'rabal/specification'
|
44
|
+
require 'rabal/tree'
|
45
|
+
require 'rabal/usage'
|
46
|
+
require 'rabal/util'
|
47
|
+
require 'rabal/version'
|
data/lib/rabal/application.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'rabal/logger'
|
2
2
|
|
3
3
|
module Rabal
|
4
4
|
#
|
@@ -6,6 +6,8 @@ module Rabal
|
|
6
6
|
#
|
7
7
|
class Application
|
8
8
|
|
9
|
+
include Log
|
10
|
+
|
9
11
|
attr_accessor :main
|
10
12
|
attr_accessor :plugin_manager
|
11
13
|
attr_accessor :plugin_load_option_names
|
@@ -13,7 +15,17 @@ module Rabal
|
|
13
15
|
attr_accessor :global_option_names
|
14
16
|
attr_accessor :app_argv
|
15
17
|
|
16
|
-
|
18
|
+
# used for testing mainly
|
19
|
+
attr_reader :stdin
|
20
|
+
attr_reader :stdout
|
21
|
+
attr_reader :stderr
|
22
|
+
|
23
|
+
|
24
|
+
def initialize(stdin = $stdin, stdout = $stdout, stderr = $stderr)
|
25
|
+
@stdin = stdin
|
26
|
+
@stdout = stdout
|
27
|
+
@stderr = stderr
|
28
|
+
|
17
29
|
@main = nil
|
18
30
|
@plugin_manager = GemPlugin::Manager.instance
|
19
31
|
@plugin_option_names = []
|
@@ -65,9 +77,9 @@ module Rabal
|
|
65
77
|
# present in the global main, they won't
|
66
78
|
# actually get displayed in the --help
|
67
79
|
plugin.parameters.each do |pname,pconf|
|
68
|
-
p_option_name = "#{plugin_load_name}-#{pconf[
|
80
|
+
p_option_name = "#{plugin_load_name}-#{pconf[:name]}=[p]"
|
69
81
|
pons << p_option_name
|
70
|
-
option(p_option_name) { description pconf[
|
82
|
+
option(p_option_name) { description pconf[:desc] }
|
71
83
|
end
|
72
84
|
}
|
73
85
|
plugin_option_names.concat(pons)
|
@@ -81,8 +93,8 @@ module Rabal
|
|
81
93
|
def main
|
82
94
|
return @main if @main
|
83
95
|
@main = Main.new(app_argv) {
|
84
|
-
description Rabal::
|
85
|
-
author Rabal::
|
96
|
+
description Rabal::SPEC.description
|
97
|
+
author Rabal::SPEC.author
|
86
98
|
version Rabal::VERSION
|
87
99
|
|
88
100
|
# Project, the whole reason rabal exists
|
@@ -104,8 +116,9 @@ module Rabal
|
|
104
116
|
}
|
105
117
|
|
106
118
|
option("verbosity=v","v") {
|
107
|
-
validate { |p| Logger::SEV_LABEL.include?(p.upcase) }
|
108
|
-
description "One of : #{Logger::SEV_LABEL.join(", ")}"
|
119
|
+
validate { |p| ::Logger::SEV_LABEL.include?(p.upcase) }
|
120
|
+
description "One of : #{::Logger::SEV_LABEL.join(", ")}"
|
121
|
+
default "INFO"
|
109
122
|
|
110
123
|
}
|
111
124
|
|
@@ -136,8 +149,8 @@ module Rabal
|
|
136
149
|
main.usage u
|
137
150
|
main.run
|
138
151
|
rescue ::Main::Parameter::Error => mpe
|
139
|
-
puts "Parameter Error: #{File.basename($0)}: #{mpe.message}"
|
140
|
-
puts "Try `#{File.basename($0)} --help' for more information."
|
152
|
+
stderr.puts "Parameter Error: #{File.basename($0)}: #{mpe.message}"
|
153
|
+
stderr.puts "Try `#{File.basename($0)} --help' for more information."
|
141
154
|
exit 1
|
142
155
|
end
|
143
156
|
end
|
@@ -147,24 +160,38 @@ module Rabal
|
|
147
160
|
# parsed, plugins loaded, some activate, etc.
|
148
161
|
#
|
149
162
|
def rabalize
|
150
|
-
|
163
|
+
logfile_and_level_if_necessary
|
164
|
+
|
165
|
+
# save our current directory for returning
|
151
166
|
pwd = Dir.pwd
|
152
167
|
begin
|
153
|
-
|
154
|
-
|
155
|
-
core
|
168
|
+
Log.debug("Loading plugins")
|
169
|
+
|
170
|
+
# create the core plugin to start things off
|
171
|
+
core_params = params_for_plugin(Rabal::Plugin::Core)
|
172
|
+
core_params[:project] = main.params[:project].value
|
173
|
+
core = Rabal::Plugin::Core.new(core_params)
|
174
|
+
|
156
175
|
using_plugins.each do |p|
|
157
176
|
next if p == Rabal::Plugin::Core
|
177
|
+
Log.debug("processing #{p.name} plugin")
|
158
178
|
pi = p.new(params_for_plugin(p))
|
179
|
+
Log.debug("getting tree #{pi.tree.inspect}")
|
159
180
|
core.tree << pi.tree
|
160
181
|
end
|
161
182
|
|
162
183
|
# not using chdir blocks, as that raises
|
163
184
|
# warning: conflicting chdir during another chdir block
|
185
|
+
# hence our saving of pwd before begin
|
164
186
|
Dir.chdir(File.expand_path(main.params[:directory].value))
|
187
|
+
|
165
188
|
core.tree.process
|
166
189
|
rescue ::Rabal::StandardError => rse
|
167
|
-
puts "Application Error: #{rse.message}"
|
190
|
+
stderr.puts "Application Error: #{rse.message}"
|
191
|
+
exit 1
|
192
|
+
rescue Interrupt => ie
|
193
|
+
stderr.puts
|
194
|
+
stderr.puts "Interrupted"
|
168
195
|
exit 1
|
169
196
|
ensure
|
170
197
|
Dir.chdir(pwd)
|
@@ -205,5 +232,16 @@ module Rabal
|
|
205
232
|
end
|
206
233
|
plugin_hash
|
207
234
|
end
|
235
|
+
|
236
|
+
#
|
237
|
+
# if the params for the logfile were given then open them up and
|
238
|
+
#
|
239
|
+
def logfile_and_level_if_necessary
|
240
|
+
if main.params["logfile"].given? then
|
241
|
+
Log.logger = main.params["logfile"].value
|
242
|
+
end
|
243
|
+
Log.logger.level = ::Logger::SEV_LABEL.index(main.params["verbosity"].value)
|
244
|
+
Log.info "Logger initialized"
|
245
|
+
end
|
208
246
|
end
|
209
247
|
end
|
data/lib/rabal/directory_tree.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'rabal/action_tree'
|
2
1
|
require 'rabal/util'
|
2
|
+
require 'rabal/tree'
|
3
|
+
require 'rabal/logger'
|
3
4
|
|
4
5
|
module Rabal
|
5
6
|
include Util
|
@@ -9,7 +10,7 @@ module Rabal
|
|
9
10
|
# parent of the directory this DirectoryTree represents.
|
10
11
|
#
|
11
12
|
class DirectoryTree < ActionTree
|
12
|
-
|
13
|
+
|
13
14
|
# basename of the directory this Tree represents
|
14
15
|
attr_accessor :dir_name
|
15
16
|
|
@@ -17,7 +18,6 @@ module Rabal
|
|
17
18
|
# this DirectoryTree represents.
|
18
19
|
attr_accessor :parent_dir
|
19
20
|
|
20
|
-
|
21
21
|
# Create a DirectoryTree based up a name, or another directory.
|
22
22
|
# Only the last portion of the directory is used. That is
|
23
23
|
# +File.basename+ is called upon name.
|
data/lib/rabal/error.rb
CHANGED
data/lib/rabal/file_tree.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
require 'rabal
|
2
|
-
require 'rabal/util'
|
3
|
-
require 'erb'
|
1
|
+
require 'rabal'
|
4
2
|
|
5
3
|
module Rabal
|
6
4
|
include Util
|
@@ -67,7 +65,14 @@ module Rabal
|
|
67
65
|
#
|
68
66
|
def before_action
|
69
67
|
info("creating content for #{file_name}")
|
70
|
-
|
68
|
+
begin
|
69
|
+
@file_contents = ERB.new(template).result(binding)
|
70
|
+
rescue Exception => e
|
71
|
+
error("Error evaluating template #{file_name}")
|
72
|
+
e.message.split("\n").each do |m|
|
73
|
+
error(m)
|
74
|
+
end
|
75
|
+
end
|
71
76
|
end
|
72
77
|
|
73
78
|
#
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rabal/specification'
|
3
|
+
require 'rabal/version'
|
4
|
+
require 'rake'
|
5
|
+
|
6
|
+
module Rabal
|
7
|
+
SPEC = Rabal::Specification.new do |spec|
|
8
|
+
spec.name = "rabal"
|
9
|
+
spec.version = Rabal::VERSION
|
10
|
+
spec.rubyforge_project = "copiousfreetime"
|
11
|
+
spec.author = "Jeremy Hinegardner"
|
12
|
+
spec.email = "jeremy@hinegardner.org"
|
13
|
+
spec.homepage = "http://copiousfreetime.rubyforge.org/rabal/"
|
14
|
+
|
15
|
+
spec.summary = "A tool for bootstrapping project development"
|
16
|
+
spec.description = <<-DESC
|
17
|
+
Ruby Architecture for Building Applications and
|
18
|
+
Libraries.
|
19
|
+
|
20
|
+
Rabal is a commandline application for bootstrapping,
|
21
|
+
packaging and distributing ruby projects.
|
22
|
+
DESC
|
23
|
+
|
24
|
+
spec.extra_rdoc_files = FileList["[A-Z]*"] - FileList["TODO"]
|
25
|
+
spec.has_rdoc = true
|
26
|
+
spec.rdoc_main = "README"
|
27
|
+
spec.rdoc_options = [ "--line-numbers" , "--inline-source" ]
|
28
|
+
|
29
|
+
spec.test_files = FileList["spec/**/*.rb"]
|
30
|
+
spec.executable = spec.name
|
31
|
+
spec.files = spec.test_files + spec.extra_rdoc_files +
|
32
|
+
FileList["lib/**/*.rb", "resources/**/*"]
|
33
|
+
|
34
|
+
spec.add_dependency("main", ">= 0.0.2")
|
35
|
+
spec.add_dependency("gem_plugin", ">= 0.2.1")
|
36
|
+
spec.add_dependency("highline", ">= 1.2.9")
|
37
|
+
|
38
|
+
spec.platform = Gem::Platform::RUBY
|
39
|
+
|
40
|
+
spec.local_rdoc_dir = "doc/rdoc"
|
41
|
+
spec.remote_rdoc_dir = "#{spec.name}/rdoc"
|
42
|
+
spec.local_coverage_dir = "doc/coverage"
|
43
|
+
spec.remote_coverage_dir= "#{spec.name}/coverage"
|
44
|
+
|
45
|
+
spec.remote_site_dir = "#{spec.name}/"
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|