gemma 4.1.0 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/README.rdoc +14 -13
- data/bin/gemma +24 -19
- data/lib/gemma.rb +13 -12
- data/lib/gemma/conventions.rb +5 -5
- data/lib/gemma/gem_from_template.rb +23 -22
- data/lib/gemma/options.rb +25 -22
- data/lib/gemma/rake_tasks.rb +20 -11
- data/lib/gemma/rake_tasks/gem_tasks.rb +4 -4
- data/lib/gemma/rake_tasks/minitest_tasks.rb +15 -15
- data/lib/gemma/rake_tasks/plugin.rb +3 -2
- data/lib/gemma/rake_tasks/rdoc_tasks.rb +21 -20
- data/lib/gemma/rake_tasks/yard_tasks.rb +22 -21
- data/lib/gemma/utility.rb +13 -7
- data/lib/gemma/version.rb +3 -2
- data/template/base/.rubocop.yml.erb +6 -0
- data/template/base/Gemfile +3 -2
- data/template/base/{README.rdoc.erb → README.md.erb} +13 -10
- data/template/base/{Rakefile.rb.erb → Rakefile.erb} +3 -1
- data/template/base/gem_name.gemspec.erb +19 -21
- data/template/base/lib/gem_name.rb.erb +7 -2
- data/template/base/lib/gem_name/version.rb.erb +2 -0
- data/template/executable/bin/gem_name.erb +2 -2
- data/template/minitest/test/gem_name/gem_name_test.rb.erb +3 -2
- data/test/gemma/gem_from_template_test.rb +20 -18
- data/test/gemma/gemma_new_test.rb +30 -28
- data/test/gemma/gemma_test.rb +41 -30
- data/test/gemma/options_test.rb +47 -24
- metadata +39 -30
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
N2IxM2JiMzRkMzBhZWViMTU2MTJmODZmOWMwMWYwZGU0ZjBmMTFlOQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 50de89c768f1926c49fcf8710eb45a0828d92815
|
4
|
+
data.tar.gz: 3213328600aca48ce8c54c5a984d5548a844d3a9
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MjNjZWY5MTA3NTYzZTQ4Y2U0MWFjNTE4ZmI0NzkxOGUyOTg4OTE2ODFiNzJm
|
11
|
-
NWNmZTYxZGU0OWRkYTQ1YjVlNWUzMDM3ZTJkYWNkZGQ4ZjJiNjM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NGYyNDZjODdjMTVkMzNiN2Y4MDMwOTIwMTg0OTBjYWQ5ZWFlYjJkYzI5MjAw
|
14
|
-
Njg3Y2Y4MGQ2NTlhZTAxZTRmYzNmM2ZkOTQ5NDhjNGUyZTEwOGMwNjQ5YzIw
|
15
|
-
NTQxOWE2YWY2YjBlZWVmYzc2N2FiNTZlZGVmYTA1ODUwMDkyNmY=
|
6
|
+
metadata.gz: bb86aa15921e9ffd00b0441a087a726e97f5cd0cd77cf5fffdf55b0127f003ba46f1ae3dfd0703488bc223c11b2ce3adacc43899d9260a1d3bf2da0436cd7e5c
|
7
|
+
data.tar.gz: f04872a8b10b1ead1132381dbdd88e0b203bfd253015371a7b5b92bb9688cd451081f7fa8a76b9b3ef39e8b8c362b82bbfaf4d1651360b4eda1255327644900c
|
data/README.rdoc
CHANGED
@@ -38,13 +38,13 @@ This gives you a simple gem template like the following:
|
|
38
38
|
|-- bin
|
39
39
|
| `-- my_gem # executable (optional)
|
40
40
|
|-- Gemfile # for bundler (see below)
|
41
|
-
|-- lib
|
41
|
+
|-- lib
|
42
42
|
| |-- my_gem # most of your code goes here
|
43
43
|
| | `-- version.rb # the version constant
|
44
44
|
| `-- my_gem.rb # the main code file
|
45
45
|
|-- my_gem.gemspec # gem metadata
|
46
|
-
|-- Rakefile
|
47
|
-
|-- README.
|
46
|
+
|-- Rakefile # development tasks
|
47
|
+
|-- README.md # documentation
|
48
48
|
`-- test # unit tests go here
|
49
49
|
`-- my_gem
|
50
50
|
`-- my_gem_test.rb
|
@@ -66,7 +66,7 @@ your gemspec; to enable them, add the following to the top of your +Rakefile+:
|
|
66
66
|
|
67
67
|
Gemma::RakeTasks.with_gemspec_file 'my_gem.gemspec'
|
68
68
|
|
69
|
-
task :
|
69
|
+
task default: :test
|
70
70
|
|
71
71
|
This gives you some standard rake tasks, in addition to any that you define
|
72
72
|
yourself.
|
@@ -97,17 +97,10 @@ See the gemma API docs for more information.
|
|
97
97
|
|
98
98
|
== INSTALLATION
|
99
99
|
|
100
|
-
On RVM:
|
101
100
|
gem install gemma
|
102
101
|
|
103
|
-
On a system ruby:
|
104
|
-
sudo gem install bundler
|
105
|
-
sudo gem install gemma
|
106
|
-
|
107
102
|
== DEVELOPMENT
|
108
103
|
|
109
|
-
gem install bundler
|
110
|
-
gem install gemma
|
111
104
|
git clone git://github.com/jdleesmiller/gemma.git
|
112
105
|
cd gemma
|
113
106
|
bundle
|
@@ -130,6 +123,15 @@ On a system ruby:
|
|
130
123
|
|
131
124
|
== HISTORY
|
132
125
|
|
126
|
+
<em>5.0.0</em>
|
127
|
+
* updated dependencies
|
128
|
+
* added rubocop as a dependency and lint the code and the template
|
129
|
+
* converted the template readme to markdown
|
130
|
+
* dropped support for rubies < 2.3 (use 4.x for older rubies)
|
131
|
+
|
132
|
+
<em>4.1.0</em>
|
133
|
+
* updated dependencies
|
134
|
+
|
133
135
|
<em>4.0.0</em>
|
134
136
|
* updated dependencies
|
135
137
|
* removed RunTasks -- bundler handles this now
|
@@ -152,7 +154,7 @@ On a system ruby:
|
|
152
154
|
|
153
155
|
<em>1.0.0</em>
|
154
156
|
* added templates
|
155
|
-
* changed rdoc and yard tasks to use +require_paths+ instead of +files+
|
157
|
+
* changed rdoc and yard tasks to use +require_paths+ instead of +files+
|
156
158
|
* more tests
|
157
159
|
* more documentation
|
158
160
|
|
@@ -184,4 +186,3 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
184
186
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
185
187
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
186
188
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
187
|
-
|
data/bin/gemma
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
#
|
3
4
|
# = gemma
|
4
5
|
#
|
@@ -30,7 +31,7 @@
|
|
30
31
|
#
|
31
32
|
# --template=path::
|
32
33
|
# path to template to use instead of default template(s); specify this
|
33
|
-
# argument multiple times to copy from several templates (in order).
|
34
|
+
# argument multiple times to copy from several templates (in order).
|
34
35
|
#
|
35
36
|
|
36
37
|
require 'getoptlong'
|
@@ -42,8 +43,8 @@ require 'highline'
|
|
42
43
|
#
|
43
44
|
|
44
45
|
getopt = GetoptLong.new(
|
45
|
-
['--help', '-h', GetoptLong::NO_ARGUMENT
|
46
|
-
['--version', '-v', GetoptLong::NO_ARGUMENT
|
46
|
+
['--help', '-h', GetoptLong::NO_ARGUMENT],
|
47
|
+
['--version', '-v', GetoptLong::NO_ARGUMENT],
|
47
48
|
['--name', GetoptLong::REQUIRED_ARGUMENT],
|
48
49
|
['--dir', GetoptLong::REQUIRED_ARGUMENT],
|
49
50
|
['--module', GetoptLong::REQUIRED_ARGUMENT],
|
@@ -69,7 +70,7 @@ end
|
|
69
70
|
|
70
71
|
# Remaining argument should be the command.
|
71
72
|
command = ARGV.shift
|
72
|
-
unless command && command ==
|
73
|
+
unless command && command == 'new'
|
73
74
|
Gemma::Utility.print_usage_from_file_comment __FILE__
|
74
75
|
exit
|
75
76
|
end
|
@@ -83,29 +84,31 @@ gt = Gemma::GemFromTemplate.new
|
|
83
84
|
interactive = !opts['--name'] || opts['--name'].empty?
|
84
85
|
|
85
86
|
if interactive
|
86
|
-
puts
|
87
|
-
puts
|
88
|
-
puts
|
87
|
+
puts
|
88
|
+
puts 'creating a new gem with gemma...'
|
89
|
+
puts
|
89
90
|
end
|
90
91
|
|
91
|
-
|
92
|
-
gt.gem_name
|
92
|
+
if interactive
|
93
|
+
gt.gem_name = hl.ask('gem name: ') { |q| q.validate = /^.+$/ } # weak
|
93
94
|
else
|
94
|
-
gt.gem_name
|
95
|
+
gt.gem_name = opts['--name']
|
95
96
|
end
|
96
97
|
|
97
98
|
if opts['--dir']
|
98
|
-
gt.dir_name
|
99
|
+
gt.dir_name = opts['--dir']
|
99
100
|
elsif interactive
|
100
|
-
gt.dir_name
|
101
|
-
|
101
|
+
gt.dir_name = hl.ask('create gem in directory: ') do |q|
|
102
|
+
q.default = gt.dir_name
|
103
|
+
end
|
102
104
|
end
|
103
105
|
|
104
106
|
if opts['--module']
|
105
107
|
gt.module_name = opts['--module']
|
106
108
|
elsif interactive
|
107
|
-
gt.module_name =
|
108
|
-
|
109
|
+
gt.module_name = hl.ask('wrap contents in module called: ') do |q|
|
110
|
+
q.default = gt.module_name
|
111
|
+
end
|
109
112
|
end
|
110
113
|
|
111
114
|
templates = opts['--template']
|
@@ -113,7 +116,7 @@ if templates.empty?
|
|
113
116
|
if interactive
|
114
117
|
templates << 'base' << 'minitest'
|
115
118
|
hl.choose do |menu|
|
116
|
-
menu.prompt =
|
119
|
+
menu.prompt = 'type of gem: '
|
117
120
|
menu.shell = true
|
118
121
|
menu.choice('library (library scripts only)') do
|
119
122
|
# no extras
|
@@ -123,12 +126,14 @@ if templates.empty?
|
|
123
126
|
end
|
124
127
|
end
|
125
128
|
else
|
126
|
-
templates.
|
129
|
+
templates.concat(Gemma::GemFromTemplate::BUILTIN_TEMPLATES)
|
130
|
+
end
|
131
|
+
templates.map! do |name|
|
132
|
+
File.join(Gemma::GemFromTemplate::TEMPLATE_ROOT, name)
|
127
133
|
end
|
128
|
-
templates.map!{|name| File.join(Gemma::GemFromTemplate::TEMPLATE_ROOT,name)}
|
129
134
|
end
|
130
135
|
|
131
136
|
puts "creating gem in #{gt.destination_path}"
|
132
137
|
gt.create_gem(templates)
|
133
|
-
puts
|
138
|
+
puts 'gem created; to get started, see the following TODO tags:'
|
134
139
|
Gemma::Utility.rgrep(/TODO/, gt.destination_path)
|
data/lib/gemma.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'English'
|
1
3
|
require 'shellwords'
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
require_relative 'gemma/version'
|
6
|
+
require_relative 'gemma/utility'
|
7
|
+
require_relative 'gemma/options'
|
8
|
+
require_relative 'gemma/rake_tasks'
|
7
9
|
|
8
10
|
# Load default Rakefile plugins:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
require 'gemma/conventions'
|
16
|
-
require 'gemma/gem_from_template'
|
11
|
+
require_relative 'gemma/rake_tasks/plugin'
|
12
|
+
require_relative 'gemma/rake_tasks/rdoc_tasks'
|
13
|
+
require_relative 'gemma/rake_tasks/yard_tasks'
|
14
|
+
require_relative 'gemma/rake_tasks/minitest_tasks'
|
15
|
+
require_relative 'gemma/rake_tasks/gem_tasks'
|
17
16
|
|
17
|
+
require_relative 'gemma/conventions'
|
18
|
+
require_relative 'gemma/gem_from_template'
|
data/lib/gemma/conventions.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Gemma
|
2
3
|
#
|
3
4
|
# Methods to check input against accepted conventions.
|
4
5
|
#
|
5
6
|
# For help on extensions:
|
6
7
|
# * http://nokogiri.org/tutorials/installing_nokogiri.html explains how to
|
7
|
-
# prepare several unices to build native extensions.
|
8
|
+
# prepare several unices to build native extensions.
|
8
9
|
#
|
9
10
|
# General objectives for gemma:
|
10
11
|
# * follow and promote accepted conventions where obvious
|
@@ -29,7 +30,7 @@ module Gemma
|
|
29
30
|
#
|
30
31
|
# @return [Boolean]
|
31
32
|
#
|
32
|
-
def self.good_gem_name?
|
33
|
+
def self.good_gem_name?(gem_name)
|
33
34
|
gem_name =~ /^[a-z0-9]+[a-z0-9_\-]*$/
|
34
35
|
end
|
35
36
|
|
@@ -39,9 +40,8 @@ module Gemma
|
|
39
40
|
#
|
40
41
|
# @return [String]
|
41
42
|
#
|
42
|
-
def self.gem_name_to_module_name
|
43
|
-
gem_name.gsub(/(?:^|_|-)([a-z0-9])/) {
|
43
|
+
def self.gem_name_to_module_name(gem_name)
|
44
|
+
gem_name.gsub(/(?:^|_|-)([a-z0-9])/) { Regexp.last_match(1).upcase }
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
47
|
-
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'erb'
|
2
3
|
require 'fileutils'
|
3
4
|
require 'yaml'
|
@@ -17,7 +18,7 @@ module Gemma
|
|
17
18
|
# there are files that occur in multiple templates (files in earlier
|
18
19
|
# templates are overwritten by those in later templates, at present).
|
19
20
|
#
|
20
|
-
BUILTIN_TEMPLATES = %w(base executable minitest)
|
21
|
+
BUILTIN_TEMPLATES = %w(base executable minitest).freeze
|
21
22
|
|
22
23
|
def initialize
|
23
24
|
@gem_name = nil
|
@@ -39,7 +40,7 @@ module Gemma
|
|
39
40
|
# @return [Boolean]
|
40
41
|
#
|
41
42
|
def good_gem_name?
|
42
|
-
Conventions.good_gem_name?
|
43
|
+
Conventions.good_gem_name? gem_name
|
43
44
|
end
|
44
45
|
|
45
46
|
#
|
@@ -49,7 +50,7 @@ module Gemma
|
|
49
50
|
# @return [String]
|
50
51
|
#
|
51
52
|
def module_name
|
52
|
-
@module_name || Conventions.gem_name_to_module_name(
|
53
|
+
@module_name || Conventions.gem_name_to_module_name(gem_name)
|
53
54
|
end
|
54
55
|
|
55
56
|
#
|
@@ -72,10 +73,10 @@ module Gemma
|
|
72
73
|
attr_writer :dir_name
|
73
74
|
|
74
75
|
#
|
75
|
-
# Full path of root of the gem to be created.
|
76
|
+
# Full path of root of the gem to be created.
|
76
77
|
#
|
77
78
|
def destination_path
|
78
|
-
File.expand_path(File.join('.',
|
79
|
+
File.expand_path(File.join('.', dir_name))
|
79
80
|
end
|
80
81
|
|
81
82
|
#
|
@@ -84,25 +85,26 @@ module Gemma
|
|
84
85
|
# @param [Array<String>] template_paths absolute paths of the template
|
85
86
|
# directories to copy
|
86
87
|
#
|
87
|
-
def create_gem
|
88
|
-
|
89
|
-
destination_path
|
88
|
+
def create_gem(template_paths, destination_path = self.destination_path)
|
89
|
+
if File.exist?(destination_path)
|
90
|
+
raise "destination #{destination_path} exists"
|
91
|
+
end
|
90
92
|
|
91
93
|
# Copy templates in.
|
92
94
|
FileUtils.mkdir_p destination_path
|
93
|
-
|
94
|
-
FileUtils.cp_r File.join(path,'.'), destination_path
|
95
|
+
template_paths.each do |path|
|
96
|
+
FileUtils.cp_r File.join(path, '.'), destination_path
|
95
97
|
end
|
96
98
|
|
97
99
|
Dir.chdir destination_path do
|
98
|
-
dirs = Dir[
|
100
|
+
dirs = Dir['**/*'].select { |f| File.directory? f }.sort
|
99
101
|
dirs.grep(/gem_name/).each do |file|
|
100
102
|
FileUtils.mv file, file.gsub(/gem_name/, gem_name)
|
101
103
|
end
|
102
104
|
|
103
|
-
files = (Dir[
|
104
|
-
FileUtils.chmod
|
105
|
-
FileUtils.chmod
|
105
|
+
files = (Dir['**/*'] + Dir['**/.*']).select { |f| File.file? f }.sort
|
106
|
+
FileUtils.chmod 0o644, files
|
107
|
+
FileUtils.chmod 0o755, files.select { |f| File.dirname(f) == 'bin' }
|
106
108
|
files.each do |file|
|
107
109
|
# Rename files with names that depend on the gem name.
|
108
110
|
if file =~ /gem_name/
|
@@ -112,15 +114,14 @@ module Gemma
|
|
112
114
|
end
|
113
115
|
|
114
116
|
# Run erb to customize each file.
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
end
|
122
|
-
FileUtils.mv file, file.sub(/\.erb$/, '')
|
117
|
+
next unless File.extname(file) == '.erb'
|
118
|
+
erb_file = File.read file
|
119
|
+
File.open file, 'w' do |f|
|
120
|
+
erb = ERB.new(erb_file)
|
121
|
+
erb.filename = file
|
122
|
+
f.puts erb.result(binding)
|
123
123
|
end
|
124
|
+
FileUtils.mv file, file.sub(/\.erb$/, '')
|
124
125
|
end
|
125
126
|
end
|
126
127
|
end
|
data/lib/gemma/options.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Gemma
|
2
3
|
#
|
3
4
|
# Helpers for processing command line arguments.
|
@@ -35,7 +36,7 @@ module Gemma
|
|
35
36
|
#
|
36
37
|
# The +options+ parameter takes an array of arguments; to split a string
|
37
38
|
# into the appropriate form, you can use the +Shellwords+ module in the ruby
|
38
|
-
# standard library.
|
39
|
+
# standard library.
|
39
40
|
#
|
40
41
|
# @example
|
41
42
|
# Gemma::Options.extract(%w(-a), %w(-a foo bar.txt))
|
@@ -52,42 +53,45 @@ module Gemma
|
|
52
53
|
# @return [ExtractResult] contains the argument for the given option and the
|
53
54
|
# rest of the options
|
54
55
|
#
|
55
|
-
def self.extract
|
56
|
+
def self.extract(names, options)
|
56
57
|
options = options.dup
|
57
58
|
result = nil
|
58
59
|
done = []
|
59
60
|
|
60
61
|
until options.empty?
|
61
62
|
x = options.shift
|
62
|
-
if x == '--'
|
63
|
+
if x == '--'
|
63
64
|
# Stop at the '--' terminator.
|
64
65
|
done << x
|
65
66
|
break
|
66
|
-
elsif x =~ /^(--[^=]+)/
|
67
|
-
if names.member?(
|
67
|
+
elsif x =~ /^(--[^=]+)/
|
68
|
+
if names.member?(Regexp.last_match(1))
|
68
69
|
# Found a long style option; look for its argument (if any).
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
result = \
|
71
|
+
if x =~ /=(.*)$/
|
72
|
+
Regexp.last_match(1)
|
73
|
+
elsif !options.empty? && options.first !~ /^-./
|
74
|
+
options.shift
|
75
|
+
else
|
76
|
+
''
|
77
|
+
end
|
76
78
|
else
|
77
79
|
done << x
|
78
80
|
end
|
79
|
-
elsif x =~ /^(-(.))(.*)/
|
81
|
+
elsif x =~ /^(-(.))(.*)/
|
80
82
|
# Found a short style option; this may actually represent several
|
81
83
|
# options; look for matching short options.
|
82
|
-
name
|
84
|
+
name = Regexp.last_match(1)
|
85
|
+
rest = Regexp.last_match(3)
|
83
86
|
if names.member?(name)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
result = \
|
88
|
+
if rest.length.positive?
|
89
|
+
rest
|
90
|
+
elsif !options.empty? && options.first !~ /^-./
|
91
|
+
options.shift
|
92
|
+
else
|
93
|
+
''
|
94
|
+
end
|
91
95
|
else
|
92
96
|
done << x
|
93
97
|
end
|
@@ -101,4 +105,3 @@ module Gemma
|
|
101
105
|
end
|
102
106
|
end
|
103
107
|
end
|
104
|
-
|
data/lib/gemma/rake_tasks.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rake/clean'
|
2
3
|
|
3
4
|
module Gemma
|
@@ -16,10 +17,9 @@ module Gemma
|
|
16
17
|
# # ... other tasks ...
|
17
18
|
#
|
18
19
|
class RakeTasks
|
19
|
-
|
20
20
|
# Alias for new.
|
21
21
|
class <<self
|
22
|
-
alias
|
22
|
+
alias with_gemspec_file new
|
23
23
|
end
|
24
24
|
|
25
25
|
#
|
@@ -35,11 +35,11 @@ module Gemma
|
|
35
35
|
#
|
36
36
|
# @private
|
37
37
|
#
|
38
|
-
def initialize
|
38
|
+
def initialize(gemspec)
|
39
39
|
# Load gemspec.
|
40
40
|
if gemspec.is_a?(String)
|
41
41
|
@gemspec_file_name = gemspec
|
42
|
-
@gemspec = Gem::Specification
|
42
|
+
@gemspec = Gem::Specification.load(gemspec_file_name)
|
43
43
|
elsif gemspec.is_a?(Gem::Specification)
|
44
44
|
@gemspec_file_name = nil
|
45
45
|
@gemspec = gemspec
|
@@ -51,13 +51,13 @@ module Gemma
|
|
51
51
|
create_default_plugins
|
52
52
|
|
53
53
|
# Let the user add more plugins and alter settings.
|
54
|
-
|
54
|
+
yield(self) if block_given?
|
55
55
|
|
56
56
|
@plugins.values.each do |plugin|
|
57
57
|
begin
|
58
58
|
plugin.create_rake_tasks
|
59
59
|
rescue
|
60
|
-
warn "plugin #{plugin.class} failed: #{
|
60
|
+
warn "plugin #{plugin.class} failed: #{$ERROR_INFO}"
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -86,22 +86,30 @@ module Gemma
|
|
86
86
|
#
|
87
87
|
# @return [RDocTasks]
|
88
88
|
#
|
89
|
-
def rdoc
|
89
|
+
def rdoc
|
90
|
+
@plugins[:rdoc]
|
91
|
+
end
|
90
92
|
|
91
93
|
#
|
92
94
|
# @return [MinitestTasks]
|
93
95
|
#
|
94
|
-
def test
|
96
|
+
def test
|
97
|
+
@plugins[:test]
|
98
|
+
end
|
95
99
|
|
96
100
|
#
|
97
101
|
# @return [YardTasks]
|
98
102
|
#
|
99
|
-
def yard
|
103
|
+
def yard
|
104
|
+
@plugins[:yard]
|
105
|
+
end
|
100
106
|
|
101
107
|
#
|
102
108
|
# @return [GemTasks]
|
103
109
|
#
|
104
|
-
def gem
|
110
|
+
def gem
|
111
|
+
@plugins[:gem]
|
112
|
+
end
|
105
113
|
|
106
114
|
protected
|
107
115
|
|
@@ -109,7 +117,8 @@ module Gemma
|
|
109
117
|
@plugins[:rdoc] = Gemma::RakeTasks::RDocTasks.new(gemspec)
|
110
118
|
@plugins[:test] = Gemma::RakeTasks::MinitestTasks.new(gemspec)
|
111
119
|
@plugins[:yard] = Gemma::RakeTasks::YardTasks.new(gemspec)
|
112
|
-
@plugins[:gem] =
|
120
|
+
@plugins[:gem] =
|
121
|
+
Gemma::RakeTasks::GemTasks.new(gemspec, gemspec_file_name)
|
113
122
|
end
|
114
123
|
end
|
115
124
|
end
|