pluginator 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +2 -2
  3. data/README.md +20 -18
  4. data/lib/pluginator.rb +5 -4
  5. data/lib/pluginator/autodetect.rb +28 -24
  6. data/lib/pluginator/errors.rb +5 -3
  7. data/lib/pluginator/extendable_autodetect.rb +5 -4
  8. data/lib/pluginator/group.rb +1 -0
  9. data/lib/pluginator/version.rb +1 -1
  10. data/lib/plugins/pluginator/extensions/conversions.rb +7 -1
  11. data/lib/plugins/pluginator/extensions/first_ask.rb +6 -1
  12. data/lib/plugins/pluginator/extensions/first_class.rb +7 -3
  13. data/lib/plugins/pluginator/extensions/matching.rb +6 -2
  14. data/pluginator.gemspec +1 -1
  15. data/test/gems/gems/fake-gem-name-activated-1.0.0/lib/fake-gem-name-activated.rb +1 -0
  16. data/test/gems/gems/fake-gem-name-activated-1.0.0/lib/plugins/activated/version1/max.rb +29 -0
  17. data/test/gems/gems/fake-gem-name-activated-2.0.0/lib/fake-gem-name-activated.rb +1 -0
  18. data/test/gems/gems/fake-gem-name-activated-2.0.0/lib/plugins/activated/version1/max.rb +29 -0
  19. data/test/gems/specifications/fake-gem-name-activated-1.0.0.gemspec +21 -0
  20. data/test/gems/specifications/fake-gem-name-activated-2.0.0.gemspec +21 -0
  21. data/test/pluginator/autodetect_test.rb +29 -10
  22. data/test/pluginator/extendable_autodetect_test.rb +2 -2
  23. data/test/pluginator/group_test.rb +2 -2
  24. data/test/pluginator/name_converter_test.rb +2 -2
  25. data/test/pluginator_test.rb +30 -11
  26. data/test/plugins_test/extensions/class_exist_test.rb +3 -3
  27. data/test/plugins_test/extensions/conversions_test.rb +4 -4
  28. data/test/plugins_test/extensions/first_ask_test.rb +3 -3
  29. data/test/plugins_test/extensions/first_class_test.rb +3 -3
  30. data/test/plugins_test/extensions/matching_test.rb +2 -2
  31. data/test/plugins_test/extensions/plugins_map_test.rb +2 -2
  32. data/test/test_helper.rb +10 -7
  33. metadata +14 -4
  34. data/test/gems/specifications/pluginator-1.1.0.gemspec +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5f89e736b2a03c5c15a34e795805bf9b7bb65de
4
- data.tar.gz: 8bffb346e9161538eaddc7387ab0899e485fc927
3
+ metadata.gz: b6ff46b640ad85f210acebe6882c7ea4cbdf1c0c
4
+ data.tar.gz: 447d3308d735dd4383a3300294c67ba065d7b986
5
5
  SHA512:
6
- metadata.gz: 8f3878958c681e05d883c2ee0aace907b31d9500be9ca2fa2f1596bf3bcb2cc582818aae0bc860dd9fd96228fd808050be8357d485aefea81c751439f8d2c0b3
7
- data.tar.gz: f112ef035f0632413082f639c29ad89b3e2e1e2324c7ae8cbcfcb718f6faafb198c255d7654b78828c81ea7465c2e19c7cfaf1f73c118527b19074dd054d01a9
6
+ metadata.gz: 40ea8041c8c585023ef5bc68c623765ca25dc4f002f851bd7a4308f78fd9f6e8865f57f0c6d934720009594e5c6bb05bb2fc4f5539c1f274961212e41e13ce66
7
+ data.tar.gz: 83d9f189e3b9ab2beb65d87b6da06198a191bdf6e3e5841260295273c08180aaa1e783a4c241ba69810de86989e687d820bb05cd6868cecb8c0cd3d122c0fff7
data/Guardfile CHANGED
@@ -9,9 +9,9 @@ guard :minitest, :include => %w[lib test], :bundler => false do
9
9
  "test/#{m[1]}#{m[2]}_test.rb"
10
10
  }
11
11
  watch(%r{^test/(.*)\/?(.*)_test\.rb$})
12
- watch(%r{^test/test_helper\.rb$}) { 'test' }
12
+ watch(%r{^test/test_helper\.rb$}) { "test" }
13
13
  end
14
14
 
15
- guard 'yard' do
15
+ guard "yard" do
16
16
  watch(%r{^lib/.+\.rb})
17
17
  end
data/README.md CHANGED
@@ -2,13 +2,15 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/pluginator.png)](http://rubygems.org/gems/pluginator)
4
4
  [![Code Climate](https://codeclimate.com/github/rvm/pluginator.png)](https://codeclimate.com/github/rvm/pluginator)
5
- [![Coverage Status](https://coveralls.io/repos/rvm/pluginator/badge.png?branch=master)](https://coveralls.io/r/rvm/pluginator?branch=master)
6
- [![Build Status](https://travis-ci.org/rvm/pluginator.png?branch=master)](https://travis-ci.org/rvm/pluginator)
5
+ [![Coverage Status](https://coveralls.io/repos/rvm/pluginator/badge.png)](https://coveralls.io/r/rvm/pluginator)
6
+ [![Build Status](https://travis-ci.org/rvm/pluginator.png)](https://travis-ci.org/rvm/pluginator)
7
7
  [![Dependency Status](https://gemnasium.com/rvm/pluginator.png)](https://gemnasium.com/rvm/pluginator)
8
- [![Documentation](http://b.repl.ca/v1/yard-docs-blue.png)](http://rubydoc.info/gems/pluginator/frames)
8
+ [![Inline docs](http://inch-ci.org/github/rvm/pluginator.png)](http://inch-ci.org/github/rvm/pluginator)
9
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/rvm/pluginator/master/frames)
10
+ [![Github Code](http://img.shields.io/badge/github-code-blue.svg)](https://github.com/rvm/pluginator)
9
11
 
10
12
  Gem plugin system management, detects plugins using `Gem.find_file`.
11
- Is only supposed with ruby 1.9.3+ (some tests fail on 1.9.2)
13
+ Is only supposed to work with ruby 1.9.3+ (some tests fail on 1.9.2)
12
14
 
13
15
  Pluginator tries to stay out of your way, you do not have to include or inherit anything.
14
16
  Pluginator only finds and groups plugins, rest is up to you,
@@ -42,7 +44,7 @@ types = rvm2plugins.types
42
44
 
43
45
  ```ruby
44
46
  Pluginator.find("<group>") => Pluginator object
45
- plugins = Pluginator.find("<group>", type: "<type>", extends: %i{<extensions>})
47
+ plugins = Pluginator.find("<group>", type: "<type>", extends: %i[<extensions>])
46
48
  plugins["<type>"] => Array of plugins
47
49
  plugins.type => Array of plugins for type defined with `type: "<type>"`
48
50
  plugins.types => Array of types
@@ -50,7 +52,7 @@ plugins.types => Array of types
50
52
 
51
53
  - `"<group>"` - Load plugins for given group.
52
54
  - `type: "<type>"` - Load plugins only of given type, makes `type` method accessible.
53
- - `extends: %i{<extensions>}` - Extend pluginator with given extensions.
55
+ - `extends: %i[<extensions>]` - Extend pluginator with given extensions.
54
56
 
55
57
  ## Extensions
56
58
 
@@ -61,8 +63,8 @@ Pluginator comes with few handful extensions.
61
63
  Check if plugin with given class name exists.
62
64
 
63
65
  ```ruby
64
- plugins = Pluginator.find("<group>", extends: %i{class_exist})
65
- plugins.class_exist?( "<type>", "<name>") => true or false
66
+ plugins = Pluginator.find("<group>", extends: %i[class_exist]})
67
+ plugins.class_exist?("<type>", "<name>") => true or false
66
68
  ```
67
69
 
68
70
  ### First ask
@@ -70,7 +72,7 @@ plugins.class_exist?( "<type>", "<name>") => true or false
70
72
  Call a method on plugin and return first one that returns `true`.
71
73
 
72
74
  ```ruby
73
- plugins = Pluginator.find("<group>", extends: %i{first_ask})
75
+ plugins = Pluginator.find("<group>", extends: %i[first_ask])
74
76
  plugins.first_ask( "<type>", "method_to_call", *params) => plugin or nil
75
77
  plugins.first_ask!("<type>", "method_to_call", *params) => plugin or exception PluginatorError
76
78
  ```
@@ -80,7 +82,7 @@ plugins.first_ask!("<type>", "method_to_call", *params) => plugin or exception P
80
82
  Find first plugin that class matches the given name.
81
83
 
82
84
  ```ruby
83
- plugins = Pluginator.find("<group>", extends: %i{first_class})
85
+ plugins = Pluginator.find("<group>", extends: %i[first_class])
84
86
  plugins.first_class( "<type>", "<name>") => plugin or nil
85
87
  plugins.first_class!("<type>", "<name>") => plugin or exception PluginatorError
86
88
  ```
@@ -90,7 +92,7 @@ plugins.first_class!("<type>", "<name>") => plugin or exception PluginatorError
90
92
  Map array of names to available plugins.
91
93
 
92
94
  ```ruby
93
- plugins = Pluginator.find("<group>", extends: %i{matching})
95
+ plugins = Pluginator.find("<group>", extends: %i[matching])
94
96
  plugins.matching( "<type>", [<array_of_names>]) => [plugins] # nil for missing ones
95
97
  plugins.matching!("<type>", [<array_of_names>]) => [plugins] or exception PluginatorError
96
98
  ```
@@ -118,7 +120,7 @@ end
118
120
  And now you can use it:
119
121
 
120
122
  ```ruby
121
- plugins = Pluginator.find("<group>", extends: %i{first_one})
123
+ plugins = Pluginator.find("<group>", extends: %i[first_one])
122
124
  plugins.first_one("<type>") => first_plugin # nil when none
123
125
  ```
124
126
 
@@ -163,11 +165,11 @@ where `question?` and `answer` are user defined methods
163
165
  Now the plugin can be used:
164
166
 
165
167
  ```ruby
166
- require 'pluginator'
168
+ require "pluginator"
167
169
 
168
170
  rvm2plugins = Pluginator.find("rvm2")
169
171
  plugin = rvm2plugins["cli"].first{ |plugin|
170
- plugin.question?('echo')
172
+ plugin.question?("echo")
171
173
  }
172
174
  plugin.new.answer("Hello world")
173
175
  ```
@@ -175,9 +177,9 @@ plugin.new.answer("Hello world")
175
177
  Or using extensions:
176
178
 
177
179
  ```ruby
178
- require 'pluginator'
180
+ require "pluginator"
179
181
 
180
- plugin = Pluginator.find("rvm2", extends: %i{first_ask}).first_ask("cli", &:question?, 'echo')
182
+ plugin = Pluginator.find("rvm2", extends: %i[first_ask]).first_ask("cli", &:question?, "echo")
181
183
  plugin.new.answer("Hello world")
182
184
  ```
183
185
 
@@ -188,7 +190,7 @@ plugin.new.answer("Hello world")
188
190
  ```ruby
189
191
  class Rvm2::Hooks::AfterInstall::Show
190
192
  def self.execute name, path
191
- puts "Ruby '#{name}' was installed in '#{path}'."
193
+ puts "Ruby #{name.inspect} was installed in #{path.inspect}."
192
194
  end
193
195
  end
194
196
  ```
@@ -196,7 +198,7 @@ end
196
198
  and using hooks:
197
199
 
198
200
  ```ruby
199
- require 'pluginator'
201
+ require "pluginator"
200
202
 
201
203
  Pluginator.find("rvm2", type: "hooks/after_install").type.each{ |plugin|
202
204
  plugin.execute(name, path)
data/lib/pluginator.rb CHANGED
@@ -24,10 +24,11 @@ require "pluginator/version"
24
24
  module Pluginator
25
25
  # Find plugins for the given group
26
26
  #
27
- # @param group [String] name of plugins group
28
- # @option type [String] name of type to load
29
- # @option extend [Array of/or Symbol] list of extension to extend into pluginator instance
30
- # @return instance of Pluginator
27
+ # @param group [String] name of plugins group
28
+ # @param options [Hash] options to pass to creating Pluginator instance
29
+ # @option type [String] name of type to load
30
+ # @option extend [Array<Symbol>|Symbol] list of extension to extend into pluginator instance
31
+ # @return [Pluginator::ExtendableAutodetect] instance of Pluginator
31
32
  def self.find(group, options = {})
32
33
  Pluginator::ExtendableAutodetect.new(group, options)
33
34
  end
@@ -28,8 +28,9 @@ module Pluginator
28
28
 
29
29
  # Automatically load plugins for given group (and type)
30
30
  #
31
- # @param group [String] name of the plugins group
32
- # @option type [String] name of the plugin type
31
+ # @param group [String] name of the plugins group
32
+ # @param options [Hash] options to pass to creating Pluginator instance
33
+ # @option type [String] name of the plugin type
33
34
  def initialize(group, options = {})
34
35
  super(group)
35
36
  setup_autodetect(options[:type])
@@ -67,16 +68,22 @@ module Pluginator
67
68
 
68
69
  def unique_gemspec_paths(file_names)
69
70
  all = gemspec_and_paths(file_names)
70
- gemspecs = all.map(&:first)
71
- selected =
72
- gemspecs.group_by{|spec| spec.name}.map(&:last).map do |specs|
73
- activated = specs.find(&:activated?)
74
- activated || specs.sort.last
71
+ selected = active_or_latest_gems_matching(all.map(&:first))
72
+ all.select do |gemspec, path, name, type|
73
+ selected.include?(gemspec)
75
74
  end
76
- all.map do |gemspec, path, name, type|
77
- found = selected.find{|spec| spec == gemspec}
78
- [found, path, name, type] if found
79
- end.compact
75
+ end
76
+
77
+ # filter active / latest gem versions
78
+ def active_or_latest_gems_matching(specifications)
79
+ specifications.group_by(&:name).map do |name, specifications|
80
+ active_or_latest_gemspec(specifications.sort)
81
+ end
82
+ end
83
+
84
+ # find active or latest gem in given set
85
+ def active_or_latest_gemspec(specifications)
86
+ specifications.find(&:activated) || specifications.last
80
87
  end
81
88
 
82
89
  def gemspec_and_paths(file_names)
@@ -107,22 +114,19 @@ module Pluginator
107
114
  end
108
115
 
109
116
  def find_latest_plugin_version(gemspecs, path)
110
- gemspecs = gemspecs.sort_by{|spec| [((spec.metadata||{})[path]||"0").to_i, spec.name, spec.version]}
111
- last = gemspecs.last
112
- return last if gemspecs.size == 1
113
-
114
- activated = gemspecs.find(&:activated?)
115
- best = Gem::Specification.find_by_path(path)
116
- if
117
- (activated.nil? || last == activated) &&
118
- !best.activated?
119
- then
120
- last
121
- else
122
- best
117
+ active_or_latest_gemspec(gemspecs_sorted_by_metadata_and_version(gemspecs, path))
118
+ end
119
+
120
+ def gemspecs_sorted_by_metadata_and_version(gemspecs, path)
121
+ gemspecs.sort_by do |spec|
122
+ [calculate_plugin_version(spec.metadata, path), spec.name, spec.version]
123
123
  end
124
124
  end
125
125
 
126
+ def calculate_plugin_version(metadata, path)
127
+ ((metadata||{})[path]||"0").to_i
128
+ end
129
+
126
130
  def load_plugin(path)
127
131
  require path
128
132
  true
@@ -23,26 +23,28 @@ module Pluginator
23
23
  class PluginatorError < RuntimeError
24
24
  private
25
25
  def list_to_s(list)
26
- list.map{|e| "'#{e}'" }.join(", ")
26
+ list.map{|e| e.to_s.inspect }.join(", ")
27
27
  end
28
28
  end
29
29
 
30
30
  # raised when plugin can not be found, generated by `*!` methods
31
31
  class MissingPlugin < PluginatorError
32
+ # initialize new error
32
33
  # @param type [String] type of the loaded plugin
33
34
  # @param name [String] name of the loaded plugin
34
35
  # @param list [Array] list of available plugins
35
36
  def initialize(type, name, list)
36
- super("Can not find plugin '#{name}' in #{list_to_s(list)} for type '#{type}'.")
37
+ super("Can not find plugin #{name.inspect} in #{list_to_s(list)} for type #{type.inspect}.")
37
38
  end
38
39
  end
39
40
 
40
41
  # raised when type can not be found, generated by `*!` methods
41
42
  class MissingType < PluginatorError
43
+ # initialize new error
42
44
  # @param type [String] type of the loaded plugin
43
45
  # @param list [Array] list of available types
44
46
  def initialize(type, list)
45
- super("Can not find type '#{type}' in #{list_to_s(list)}.")
47
+ super("Can not find type #{type.inspect} in #{list_to_s(list)}.")
46
48
  end
47
49
  end
48
50
  end
@@ -34,9 +34,10 @@ module Pluginator
34
34
  # Automatically load plugins for given group (and type)
35
35
  # Extend instance with extensions if given.
36
36
  #
37
- # @param group [String] name of the plugins group
38
- # @option type [String] name of type to load
39
- # @option extends [Array of/or Symbol] list of extension to extend into pluginator instance
37
+ # @param group [String] name of the plugins group
38
+ # @param options [Hash] options to pass to creating Pluginator instance
39
+ # @option type [String] name of type to load
40
+ # @option extends [Array<Symbol>|Symbol] list of extension to extend into pluginator instance
40
41
  def initialize(group, options = {})
41
42
  super(group, options)
42
43
  extend_plugins(options[:extends]||[])
@@ -44,7 +45,7 @@ module Pluginator
44
45
 
45
46
  # Extend pluginator instance with given extensions
46
47
  #
47
- # @param extends list of extension to extend into pluginator instance
48
+ # @param extends [Array<Symbol>|Symbol] list of extension to extend into pluginator instance
48
49
  def extend_plugins(extends)
49
50
  extensions_matching(extends).each do |plugin|
50
51
  extend plugin
@@ -23,6 +23,7 @@ module Pluginator
23
23
  # Group name used for plugins
24
24
  attr_reader :group
25
25
 
26
+ # sets up new instance and initial configuration
26
27
  # @param group [String] name of the plugins group
27
28
  def initialize(group)
28
29
  setup_group(group)
@@ -19,5 +19,5 @@ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  module Pluginator
21
21
  # Version of Pluginator
22
- VERSION = "1.2.0"
22
+ VERSION = "1.3.0"
23
23
  end
@@ -22,18 +22,24 @@ module Pluginator::Extensions
22
22
  module Conversions
23
23
 
24
24
  # converts class name to a file name
25
+ # @param klass [String] class like string
26
+ # @return [String] file like string
25
27
  def class2string( klass )
26
28
  klass.to_s.gsub(/([A-Z])/m){|match| "_#{$1.downcase}" }[1..-1]
27
29
  end
28
30
 
29
31
  # converts file name to a class name
32
+ # @param str [String] file like string
33
+ # @return [String] class like string
30
34
  def string2class( str )
31
35
  str.to_s.capitalize.gsub(/_(.)/){ $1.upcase }
32
36
  end
33
37
 
34
38
  # gets class name last part
39
+ # @param klass [Class] class to read
40
+ # @return [String] the class name only without nesting
35
41
  def class2name(klass)
36
- klass.name.split('::').last
42
+ klass.name.split("::").last
37
43
  end
38
44
 
39
45
  end
@@ -30,7 +30,7 @@ module Pluginator::Extensions
30
30
  # @param type [String] name of type to search for plugins
31
31
  # @param method_name [Symbol] name of the method to execute
32
32
  # @param params [Array] params to pass to the called method
33
- # @return The first plugin that method call returns true
33
+ # @return [Class] The first plugin that method call returns true
34
34
  def first_ask(type, method_name, *params)
35
35
  @plugins[type] or return nil
36
36
  try_to_find(type, method_name, params)
@@ -38,6 +38,11 @@ module Pluginator::Extensions
38
38
 
39
39
  # Call a method on plugin and return first one that returns `true`.
40
40
  # Behaves like `first_ask` but throws exceptions if can not find anything.
41
+ # @param type [String] name of type to search for plugins
42
+ # @param method_name [Symbol] name of the method to execute
43
+ # @param params [Array] params to pass to the called method
44
+ # @return [Class] The first plugin that method call returns true
45
+ # @raise [Pluginator::MissingPlugin] when can not find plugin
41
46
  def first_ask!(type, method_name, *params)
42
47
  @plugins[type] or raise Pluginator::MissingType.new(type, @plugins.keys)
43
48
  try_to_find(type, method_name, params) or
@@ -29,15 +29,19 @@ module Pluginator::Extensions
29
29
 
30
30
  # Find first plugin that clas matches the given name.
31
31
  #
32
- # @param type [String] name of type to search for plugins
33
- # @param klass [Symbol or String] name of the searched class
34
- # @return The first plugin that matches the klass
32
+ # @param type [String] name of type to search for plugins
33
+ # @param klass [Symbol|String] name of the searched class
34
+ # @return [Class] The first plugin that matches the klass
35
35
  def first_class(type, klass)
36
36
  (plugins_map(type) || {})[string2class(klass)]
37
37
  end
38
38
 
39
39
  # Find first plugin that clas matches the given name.
40
40
  # Behaves like `first_class` but throws exceptions if can not find anything.
41
+ # @param type [String] name of type to search for plugins
42
+ # @param klass [Symbol|String] name of the searched class
43
+ # @return [Class] The first plugin that matches the klass
44
+ # @raise [Pluginator::MissingPlugin] when can not find plugin
41
45
  def first_class!(type, klass)
42
46
  @plugins[type] or raise Pluginator::MissingType.new(type, @plugins.keys)
43
47
  klass = string2class(klass)
@@ -29,8 +29,8 @@ module Pluginator::Extensions
29
29
  # Map array of names to available plugins.
30
30
  #
31
31
  # @param type [String] name of type to search for plugins
32
- # @param list [Array] list of plugin names to load
33
- # @return [Array] list of loaded plugins
32
+ # @param list [Array] list of plugin names to load
33
+ # @return [Array] list of loaded plugins
34
34
  def matching(type, list)
35
35
  list.map do |plugin|
36
36
  (plugins_map(type) || {})[string2class(plugin)]
@@ -39,6 +39,10 @@ module Pluginator::Extensions
39
39
 
40
40
  # Map array of names to available plugins.
41
41
  # Behaves like `matching` but throws exceptions if can not find anything.
42
+ # @param type [String] name of type to search for plugins
43
+ # @param list [Array] list of plugin names to load
44
+ # @return [Array] list of loaded plugins
45
+ # @raise [Pluginator::MissingPlugin] when can not find plugin
42
46
  def matching!(type, list)
43
47
  @plugins[type] or raise Pluginator::MissingType.new(type, @plugins.keys)
44
48
  list.map do |plugin|
data/pluginator.gemspec CHANGED
@@ -23,7 +23,7 @@ You should have received a copy of the GNU Lesser General Public License
23
23
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
24
24
  =end
25
25
 
26
- lib = File.expand_path('../lib', __FILE__)
26
+ lib = File.expand_path("../lib", __FILE__)
27
27
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
28
28
  require "pluginator/version"
29
29
 
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class Activated::Version1::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 41
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class Activated::Version1::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 42
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-activated 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-activated"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+
20
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
21
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-activated 2.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-activated"
6
+ s.version = "2.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+
20
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
21
+ end
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'pluginator/autodetect'
20
+ require "test_helper"
21
+ require "pluginator/autodetect"
22
22
 
23
23
  def gem_file(path, options = {})
24
24
  options.merge!({
@@ -87,19 +87,38 @@ describe Pluginator::Autodetect do
87
87
 
88
88
  it "loads files" do
89
89
  @pluginator.send(:load_files, @math_files)
90
- @pluginator.types.must_include('math')
90
+ @pluginator.types.must_include("math")
91
91
  plugins = @pluginator["math"].map(&:to_s)
92
92
  plugins.size.must_equal(2)
93
93
  plugins.must_include("Something::Math::Increase")
94
94
  plugins.must_include("Something::Math::Decrease")
95
95
  plugins.wont_include("Something::Math::Substract")
96
96
  end
97
+
98
+ it "finds unique gems for paths" do
99
+ @pluginator.send(:gemspec_and_paths, @math_files).map{ |gemspec, path, name, type|
100
+ [gemspec.name, gemspec.version.to_s, path, name, type]
101
+ }.must_equal([
102
+ ["fake-gem-name-a", "1.0.0", "plugins/something/math/decrease.rb", "something/math/decrease", "math"],
103
+ ["fake-gem-name-a", "1.0.0", "plugins/something/math/increase.rb", "something/math/increase", "math"],
104
+ ])
105
+ end
106
+
107
+ it "finds unique gems for paths" do
108
+ @pluginator.send(:unique_gemspec_paths, @math_files).map{ |gemspec, path, name, type|
109
+ [gemspec.name, gemspec.version.to_s, path, name, type]
110
+ }.must_equal([
111
+ ["fake-gem-name-a", "1.0.0", "plugins/something/math/decrease.rb", "something/math/decrease", "math"],
112
+ ["fake-gem-name-a", "1.0.0", "plugins/something/math/increase.rb", "something/math/increase", "math"],
113
+ ])
114
+ end
115
+
97
116
  end
98
117
 
99
118
  it "loads plugins automatically for group" do
100
119
  pluginator = Pluginator::Autodetect.new("something")
101
- pluginator.types.must_include('stats')
102
- pluginator.types.must_include('math')
120
+ pluginator.types.must_include("stats")
121
+ pluginator.types.must_include("math")
103
122
  pluginator.types.size.must_equal(3)
104
123
  plugins = pluginator["math"].map(&:to_s)
105
124
  plugins.size.must_equal(2)
@@ -110,13 +129,13 @@ describe Pluginator::Autodetect do
110
129
 
111
130
  it "loads plugins automatically for group/type" do
112
131
  pluginator = Pluginator::Autodetect.new("something", :type => "stats")
113
- pluginator.types.must_include('stats')
132
+ pluginator.types.must_include("stats")
114
133
  pluginator.types.size.must_equal(1)
115
134
  end
116
135
 
117
136
  it "makes group plugins work" do
118
137
  pluginator = Pluginator::Autodetect.new("something")
119
- pluginator.types.must_include('math')
138
+ pluginator.types.must_include("math")
120
139
  pluginator["math"].detect{|plugin| plugin.type == "increase" }.action(2).must_equal(3)
121
140
  pluginator["math"].detect{|plugin| plugin.type == "decrease" }.action(5).must_equal(4)
122
141
  end
@@ -130,13 +149,13 @@ describe Pluginator::Autodetect do
130
149
  end
131
150
 
132
151
  it "defines type method dynamically" do
133
- pluginator = Pluginator::Autodetect.new("something", :type => 'math')
134
- pluginator.type.must_equal(pluginator['math'])
152
+ pluginator = Pluginator::Autodetect.new("something", :type => "math")
153
+ pluginator.type.must_equal(pluginator["math"])
135
154
  end
136
155
 
137
156
  it "loads self" do
138
157
  pluginator = Pluginator::Autodetect.new("pluginator")
139
- pluginator.types.must_include('extensions')
158
+ pluginator.types.must_include("extensions")
140
159
  pluginator.types.size.must_equal(1)
141
160
  pluginator["extensions"].map(&:to_s).sort.must_equal([
142
161
  "Pluginator::Extensions::ClassExist",
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'pluginator/extendable_autodetect'
20
+ require "test_helper"
21
+ require "pluginator/extendable_autodetect"
22
22
 
23
23
  describe Pluginator::ExtendableAutodetect do
24
24
  it "loads existing extensions - array" do
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'pluginator/group'
20
+ require "test_helper"
21
+ require "pluginator/group"
22
22
 
23
23
  describe Pluginator::Group do
24
24
  it "has name" do
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'pluginator/name_converter'
20
+ require "test_helper"
21
+ require "pluginator/name_converter"
22
22
 
23
23
  class Converter
24
24
  extend Pluginator::NameConverter
@@ -17,15 +17,15 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'pluginator'
20
+ require "test_helper"
21
+ require "pluginator"
22
22
 
23
23
  describe Pluginator do
24
24
  it "loads_plugins_automatically_for_group" do
25
25
  pluginator = Pluginator.find("something")
26
- pluginator.types.must_include('stats')
27
- pluginator.types.must_include('math')
28
- pluginator.types.must_include('nested/structure')
26
+ pluginator.types.must_include("stats")
27
+ pluginator.types.must_include("math")
28
+ pluginator.types.must_include("nested/structure")
29
29
  pluginator.types.size.must_equal(3)
30
30
  plugins = pluginator["math"].map(&:to_s)
31
31
  plugins.size.must_equal(2)
@@ -36,7 +36,7 @@ describe Pluginator do
36
36
 
37
37
  it "loads_plugins_automatically_for_group_type" do
38
38
  pluginator = Pluginator.find("something", :type => "stats")
39
- pluginator.types.must_include('stats')
39
+ pluginator.types.must_include("stats")
40
40
  pluginator.types.size.must_equal(1)
41
41
  end
42
42
 
@@ -49,7 +49,7 @@ describe Pluginator do
49
49
 
50
50
  it "loads_nested_plugins" do
51
51
  pluginator = Pluginator.find("something")
52
- pluginator.types.must_include('nested/structure')
52
+ pluginator.types.must_include("nested/structure")
53
53
  pluginator["nested/structure"].map(&:to_s).must_equal(["Something::Nested::Structure::Test"])
54
54
  end
55
55
 
@@ -67,12 +67,31 @@ describe Pluginator do
67
67
  active_gems.wont_include("fake-gem-name-latest-1.0.0")
68
68
  active_gems.must_include("fake-gem-name-latest-2.0.0")
69
69
 
70
- pluginator.types.must_include('version2')
71
- pluginator.types.wont_include('version1')
70
+ pluginator.types.must_include("version2")
71
+ pluginator.types.wont_include("version1")
72
72
  pluginator.types.size.must_equal(1)
73
73
  pluginator["version2"].map(&:to_s).must_equal(["Latest::Version2::Max"])
74
74
  end
75
75
 
76
+ it "loads_only_plugins_from_activated_version_of_gem" do
77
+ all_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" }
78
+ all_gems.must_include("fake-gem-name-activated-1.0.0")
79
+ all_gems.must_include("fake-gem-name-activated-2.0.0")
80
+ Gem::Specification._all.find{|s| [s.name, s.version.to_s] == ["fake-gem-name-activated", "1.0.0"] }.activate
81
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
82
+ active_gems.must_include("fake-gem-name-activated-1.0.0")
83
+ active_gems.wont_include("fake-gem-name-activated-2.0.0")
84
+
85
+ pluginator = Pluginator.find("activated")
86
+
87
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
88
+ active_gems.must_include("fake-gem-name-activated-1.0.0")
89
+
90
+ pluginator.types.must_include("version1")
91
+ pluginator.types.size.must_equal(1)
92
+ pluginator["version1"].map(&:to_s).must_equal(["Activated::Version1::Max"])
93
+ end
94
+
76
95
  it "loads_latest_version_of_plugin_from_two_gems_v1" do
77
96
  all_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" }
78
97
  all_gems.must_include("fake-gem-name-v1a-1.0.0")
@@ -86,7 +105,7 @@ describe Pluginator do
86
105
  active_gems.wont_include("fake-gem-name-v1a-1.0.0")
87
106
  active_gems.must_include("fake-gem-name-v1b-1.0.0")
88
107
 
89
- pluginator.types.must_include('stats')
108
+ pluginator.types.must_include("stats")
90
109
  pluginator.types.size.must_equal(1)
91
110
  pluginator["stats"].map(&:to_s).must_equal(["V1test::Stats::Max"])
92
111
  pluginator["stats"].first.action.must_equal(42)
@@ -105,7 +124,7 @@ describe Pluginator do
105
124
  active_gems.must_include("fake-gem-name-v2a-1.0.0")
106
125
  active_gems.wont_include("fake-gem-name-v2b-1.0.0")
107
126
 
108
- pluginator.types.must_include('stats')
127
+ pluginator.types.must_include("stats")
109
128
  pluginator.types.size.must_equal(1)
110
129
  pluginator["stats"].map(&:to_s).must_equal(["V2test::Stats::Max"])
111
130
  pluginator["stats"].first.action.must_equal(41)
@@ -17,9 +17,9 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'plugins/pluginator/extensions/class_exist'
22
- require 'plugins/something/stats/max'
20
+ require "test_helper"
21
+ require "plugins/pluginator/extensions/class_exist"
22
+ require "plugins/something/stats/max"
23
23
 
24
24
  class ClassExistTester
25
25
  attr_accessor :plugins
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'plugins/pluginator/extensions/conversions'
20
+ require "test_helper"
21
+ require "plugins/pluginator/extensions/conversions"
22
22
 
23
23
  class ConversionsTester
24
24
  extend Pluginator::Extensions::Conversions
@@ -26,9 +26,9 @@ end
26
26
 
27
27
  describe Pluginator::Extensions::Conversions do
28
28
  it "class2string" do
29
- ConversionsTester.class2string('SomethingLong').must_match('something_long')
29
+ ConversionsTester.class2string("SomethingLong").must_match("something_long")
30
30
  end
31
31
  it "string2class" do
32
- ConversionsTester.string2class('something_long').must_match('SomethingLong')
32
+ ConversionsTester.string2class("something_long").must_match("SomethingLong")
33
33
  end
34
34
  end
@@ -17,9 +17,9 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'plugins/pluginator/extensions/first_ask'
22
- require 'plugins/something/stats/max'
20
+ require "test_helper"
21
+ require "plugins/pluginator/extensions/first_ask"
22
+ require "plugins/something/stats/max"
23
23
 
24
24
  class FirstAskTester
25
25
  attr_accessor :plugins
@@ -17,9 +17,9 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'plugins/pluginator/extensions/first_class'
22
- require 'plugins/something/stats/max'
20
+ require "test_helper"
21
+ require "plugins/pluginator/extensions/first_class"
22
+ require "plugins/something/stats/max"
23
23
 
24
24
  class FirstClassTester
25
25
  attr_accessor :plugins
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'plugins/pluginator/extensions/matching'
20
+ require "test_helper"
21
+ require "plugins/pluginator/extensions/matching"
22
22
 
23
23
  class MatchingTester
24
24
  attr_accessor :plugins
@@ -17,8 +17,8 @@ You should have received a copy of the GNU Lesser General Public License
17
17
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
18
  =end
19
19
 
20
- require 'test_helper'
21
- require 'plugins/pluginator/extensions/plugins_map'
20
+ require "test_helper"
21
+ require "plugins/pluginator/extensions/plugins_map"
22
22
 
23
23
  class PluginsMapTester
24
24
  attr_accessor :plugins
data/test/test_helper.rb CHANGED
@@ -19,11 +19,11 @@ You should have received a copy of the GNU Lesser General Public License
19
19
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
20
20
  =end
21
21
 
22
- require 'rubygems'
23
- require 'minitest'
22
+ require "rubygems"
23
+ require "minitest"
24
24
 
25
25
  # fix lib in LOAD_PATH and load version for gems manipulation
26
- lib = File.expand_path('../lib', __FILE__)
26
+ lib = File.expand_path("../lib", __FILE__)
27
27
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
28
28
  require "pluginator/version"
29
29
 
@@ -42,7 +42,7 @@ Gem.refresh
42
42
 
43
43
  # make sure pluginator is available as gem for tests of pluginator plugins
44
44
  #Gem::Specification.add_spec(Gem::Specification.load(File.expand_path("../gems/specifications/pluginator-#{Pluginator::VERSION}.gemspec", __FILE__)))
45
- gem 'pluginator'
45
+ gem "pluginator"
46
46
 
47
47
  if
48
48
  RUBY_VERSION == "2.0.0" && # check Gemfile
@@ -60,7 +60,7 @@ then
60
60
  add_filter "/test/"
61
61
  end
62
62
 
63
- Coveralls.noisy = true unless ENV['CI']
63
+ Coveralls.noisy = true unless ENV["CI"]
64
64
  end
65
65
 
66
66
  module Something
@@ -70,6 +70,9 @@ module Something
70
70
  module Structure; end
71
71
  end
72
72
  end
73
+ module Activated
74
+ module Version1; end
75
+ end
73
76
  module Latest
74
77
  module Version1; end
75
78
  module Version2; end
@@ -81,5 +84,5 @@ module V2test
81
84
  module Stats; end
82
85
  end
83
86
 
84
- require 'minitest/autorun' unless $0=="-e" # skip in guard
85
- require 'minitest/unit'
87
+ require "minitest/autorun" unless $0=="-e" # skip in guard
88
+ require "minitest/unit"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pluginator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Papis
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-09-24 00:00:00.000000000 Z
13
+ date: 2014-10-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -78,6 +78,10 @@ files:
78
78
  - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/math/increase.rb
79
79
  - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/nested/structure/test.rb
80
80
  - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/stats/max.rb
81
+ - test/gems/gems/fake-gem-name-activated-1.0.0/lib/fake-gem-name-activated.rb
82
+ - test/gems/gems/fake-gem-name-activated-1.0.0/lib/plugins/activated/version1/max.rb
83
+ - test/gems/gems/fake-gem-name-activated-2.0.0/lib/fake-gem-name-activated.rb
84
+ - test/gems/gems/fake-gem-name-activated-2.0.0/lib/plugins/activated/version1/max.rb
81
85
  - test/gems/gems/fake-gem-name-latest-1.0.0/lib/fake-gem-name-latest.rb
82
86
  - test/gems/gems/fake-gem-name-latest-1.0.0/lib/plugins/latest/version1/max.rb
83
87
  - test/gems/gems/fake-gem-name-latest-2.0.0/lib/fake-gem-name-latest.rb
@@ -91,13 +95,14 @@ files:
91
95
  - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/fake-gem-name-v2b.rb
92
96
  - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/plugins/v2test/stats/max.rb
93
97
  - test/gems/specifications/fake-gem-name-a-1.0.0.gemspec
98
+ - test/gems/specifications/fake-gem-name-activated-1.0.0.gemspec
99
+ - test/gems/specifications/fake-gem-name-activated-2.0.0.gemspec
94
100
  - test/gems/specifications/fake-gem-name-latest-1.0.0.gemspec
95
101
  - test/gems/specifications/fake-gem-name-latest-2.0.0.gemspec
96
102
  - test/gems/specifications/fake-gem-name-v1a-1.0.0.gemspec
97
103
  - test/gems/specifications/fake-gem-name-v1b-1.0.0.gemspec
98
104
  - test/gems/specifications/fake-gem-name-v2a-1.0.0.gemspec
99
105
  - test/gems/specifications/fake-gem-name-v2b-1.0.0.gemspec
100
- - test/gems/specifications/pluginator-1.1.0.gemspec
101
106
  - test/pluginator/autodetect_test.rb
102
107
  - test/pluginator/extendable_autodetect_test.rb
103
108
  - test/pluginator/group_test.rb
@@ -140,6 +145,10 @@ test_files:
140
145
  - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/math/increase.rb
141
146
  - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/nested/structure/test.rb
142
147
  - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/stats/max.rb
148
+ - test/gems/gems/fake-gem-name-activated-1.0.0/lib/fake-gem-name-activated.rb
149
+ - test/gems/gems/fake-gem-name-activated-1.0.0/lib/plugins/activated/version1/max.rb
150
+ - test/gems/gems/fake-gem-name-activated-2.0.0/lib/fake-gem-name-activated.rb
151
+ - test/gems/gems/fake-gem-name-activated-2.0.0/lib/plugins/activated/version1/max.rb
143
152
  - test/gems/gems/fake-gem-name-latest-1.0.0/lib/fake-gem-name-latest.rb
144
153
  - test/gems/gems/fake-gem-name-latest-1.0.0/lib/plugins/latest/version1/max.rb
145
154
  - test/gems/gems/fake-gem-name-latest-2.0.0/lib/fake-gem-name-latest.rb
@@ -153,13 +162,14 @@ test_files:
153
162
  - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/fake-gem-name-v2b.rb
154
163
  - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/plugins/v2test/stats/max.rb
155
164
  - test/gems/specifications/fake-gem-name-a-1.0.0.gemspec
165
+ - test/gems/specifications/fake-gem-name-activated-1.0.0.gemspec
166
+ - test/gems/specifications/fake-gem-name-activated-2.0.0.gemspec
156
167
  - test/gems/specifications/fake-gem-name-latest-1.0.0.gemspec
157
168
  - test/gems/specifications/fake-gem-name-latest-2.0.0.gemspec
158
169
  - test/gems/specifications/fake-gem-name-v1a-1.0.0.gemspec
159
170
  - test/gems/specifications/fake-gem-name-v1b-1.0.0.gemspec
160
171
  - test/gems/specifications/fake-gem-name-v2a-1.0.0.gemspec
161
172
  - test/gems/specifications/fake-gem-name-v2b-1.0.0.gemspec
162
- - test/gems/specifications/pluginator-1.1.0.gemspec
163
173
  - test/pluginator/autodetect_test.rb
164
174
  - test/pluginator/extendable_autodetect_test.rb
165
175
  - test/pluginator/group_test.rb
@@ -1,44 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- encoding: utf-8 -*-
3
- # stub: PLUGINATOR ruby lib
4
-
5
- =begin
6
- Copyright 2013
7
- - Michal Papis <mpapis@gmail.com>
8
- - Jordon Bedwell <envygeeks@gmail.com>
9
-
10
- This file is part of pluginator.
11
-
12
- pluginator is free software: you can redistribute it and/or modify
13
- it under the terms of the GNU Lesser General Public License as published
14
- by the Free Software Foundation, either version 3 of the License, or
15
- (at your option) any later version.
16
-
17
- pluginator is distributed in the hope that it will be useful,
18
- but WITHOUT ANY WARRANTY; without even the implied warranty of
19
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
- GNU Lesser General Public License for more details.
21
-
22
- You should have received a copy of the GNU Lesser General Public License
23
- along with pluginator. If not, see <http://www.gnu.org/licenses/>.
24
- =end
25
-
26
- lib = File.expand_path('../lib', __FILE__)
27
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
28
- require "pluginator/version"
29
-
30
- Gem::Specification.new do |s|
31
- s.email = ["mpapis@gmail.com", "envygeeks@gmail.com", "mose@mose.com"]
32
- s.authors = ["Michal Papis", "Jordon Bedwell", "Mose"]
33
- s.name = "pluginator"
34
- s.version = Pluginator::VERSION
35
- s.license = "LGPL v3"
36
- s.files = `git ls-files`.split("\n")
37
- s.required_ruby_version = ">= 1.8.7"
38
- s.add_development_dependency("rake")
39
- s.add_development_dependency("minitest")
40
- # s.add_development_dependency("smf-gem")
41
- s.homepage = "https://github.com/rvm/pluginator"
42
- s.summary = "Rubygems plugin system using Gem.find_files."
43
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
44
- end