pluginator 0.10.0 → 0.10.1
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.
- checksums.yaml +4 -4
- data/README.md +12 -0
- data/demo/plugins/pluginator/stats/max.rb +5 -0
- data/lib/pluginator/autodetect.rb +3 -2
- data/lib/pluginator/name_converter.rb +2 -2
- data/lib/pluginator/version.rb +1 -1
- data/test/autodetect_test.rb +30 -10
- data/test/group_test.rb +1 -0
- data/test/name_converter_test.rb +9 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59d64edff8d110c4973f3904dc82b87169e5df85
|
4
|
+
data.tar.gz: bfcaaf2bd8c78b659be273bef544cfaa11d5b852
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7a922e4fc107b5ba0a0c13e5f07747bb586bf4c013e1c4d2c9bc8c7756ebab49697875a93c06e6e90e3b41174688754036811f918496f77bb5ebf492973a7f8
|
7
|
+
data.tar.gz: 7379ef2083b122ece8b36b9a38924438257246c16d3e8e3582252789e9c26d4555844bfcc8d4b2080b0a8add52a58349f5eb7aa9da3cfea8d4223d1cc7a228fc
|
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Pluginator
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/rvm/pluginator)
|
4
|
+
[](https://travis-ci.org/rvm/pluginator)
|
5
|
+
[](https://gemnasium.com/rvm/pluginator)
|
6
|
+
|
3
7
|
Gem plugin system management, detects plugins using `Gem.find_file`.
|
4
8
|
Is only supposed with ruby 1.9.3+
|
5
9
|
|
@@ -31,6 +35,14 @@ type_plugins = rvm2plugins["<type>"]
|
|
31
35
|
types = rvm2plugins.types
|
32
36
|
```
|
33
37
|
|
38
|
+
## Loading plugins of single type
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
rvm2plugins = Pluginator::Autodetect.new("<group>", "<type>")
|
42
|
+
type_plugins = rvm2plugins["<type>"]
|
43
|
+
types = rvm2plugins.types
|
44
|
+
```
|
45
|
+
|
34
46
|
## Examples
|
35
47
|
|
36
48
|
### Example 1 - task plugins
|
@@ -4,8 +4,9 @@ require_relative "name_converter"
|
|
4
4
|
module Pluginator
|
5
5
|
class Autodetect < Group
|
6
6
|
|
7
|
-
def initialize(group)
|
7
|
+
def initialize(group, type=nil)
|
8
8
|
super(group)
|
9
|
+
@force_type = type
|
9
10
|
load_files(find_files)
|
10
11
|
end
|
11
12
|
|
@@ -22,7 +23,7 @@ module Pluginator
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def find_files
|
25
|
-
Gem.find_files(file_name_pattern(@group))
|
26
|
+
Gem.find_files(file_name_pattern(@group, @force_type))
|
26
27
|
end
|
27
28
|
|
28
29
|
def load_plugin(path)
|
data/lib/pluginator/version.rb
CHANGED
data/test/autodetect_test.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
2
|
require 'pluginator/autodetect'
|
3
3
|
|
4
|
+
module Pluginator::Math; end
|
5
|
+
module Pluginator::Stats; end
|
6
|
+
|
4
7
|
def demo_file(path)
|
5
8
|
File.expand_path(File.join("..", "..", "demo", path), __FILE__)
|
6
9
|
end
|
@@ -9,11 +12,10 @@ def demo_files(*paths)
|
|
9
12
|
paths.flatten.map{|path| demo_file(path) }
|
10
13
|
end
|
11
14
|
|
12
|
-
module Pluginator::Math; end
|
13
|
-
|
14
15
|
describe Pluginator::Autodetect do
|
15
16
|
before do
|
16
|
-
@
|
17
|
+
@math_files = demo_files("plugins/pluginator/math/increase.rb", "plugins/pluginator/math/decrease.rb")
|
18
|
+
@all_files = demo_files("plugins/pluginator/math/increase.rb", "plugins/pluginator/math/decrease.rb", "plugins/pluginator/stats/max.rb")
|
17
19
|
end
|
18
20
|
|
19
21
|
describe "separate" do
|
@@ -30,16 +32,26 @@ describe Pluginator::Autodetect do
|
|
30
32
|
File.exists?(demo_file("plugins/pluginator/math/increase.rb")).must_equal(true)
|
31
33
|
end
|
32
34
|
|
33
|
-
it "loads
|
35
|
+
it "loads plugin" do
|
34
36
|
@pluginator.send(:load_plugin, "plugins/pluginator/math/increase.rb")
|
35
37
|
end
|
36
38
|
|
37
|
-
it "finds files" do
|
38
|
-
@pluginator.send(:find_files).sort.must_equal(@
|
39
|
+
it "finds files existing group" do
|
40
|
+
@pluginator.send(:find_files).sort.must_equal(@all_files.sort)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "finds files group and existing type" do
|
44
|
+
@pluginator.instance_variable_set(:@force_type, "math")
|
45
|
+
@pluginator.send(:find_files).sort.must_equal(@math_files.sort)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "finds files group and missing type" do
|
49
|
+
@pluginator.instance_variable_set(:@force_type, "none")
|
50
|
+
@pluginator.send(:find_files).must_equal([])
|
39
51
|
end
|
40
52
|
|
41
|
-
it "loads
|
42
|
-
@pluginator.send(:load_files, @
|
53
|
+
it "loads files" do
|
54
|
+
@pluginator.send(:load_files, @math_files)
|
43
55
|
@pluginator.types.must_include('math')
|
44
56
|
plugins = @pluginator["math"].map(&:to_s)
|
45
57
|
plugins.size.must_equal(2)
|
@@ -49,9 +61,11 @@ describe Pluginator::Autodetect do
|
|
49
61
|
end
|
50
62
|
end
|
51
63
|
|
52
|
-
it "loads plugins automatically" do
|
64
|
+
it "loads plugins automatically for group" do
|
53
65
|
pluginator = Pluginator::Autodetect.new("pluginator")
|
66
|
+
pluginator.types.must_include('stats')
|
54
67
|
pluginator.types.must_include('math')
|
68
|
+
pluginator.types.size.must_equal(2)
|
55
69
|
plugins = pluginator["math"].map(&:to_s)
|
56
70
|
plugins.size.must_equal(2)
|
57
71
|
plugins.must_include("Pluginator::Math::Increase")
|
@@ -59,7 +73,13 @@ describe Pluginator::Autodetect do
|
|
59
73
|
plugins.wont_include("Pluginator::Math::Add")
|
60
74
|
end
|
61
75
|
|
62
|
-
it "
|
76
|
+
it "loads plugins automatically for group/type" do
|
77
|
+
pluginator = Pluginator::Autodetect.new("pluginator", "stats")
|
78
|
+
pluginator.types.must_include('stats')
|
79
|
+
pluginator.types.size.must_equal(1)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "makes group plugins work" do
|
63
83
|
pluginator = Pluginator::Autodetect.new("pluginator")
|
64
84
|
pluginator["math"].detect{|plugin| plugin.type == "increase" }.action(2).must_equal(3)
|
65
85
|
pluginator["math"].detect{|plugin| plugin.type == "decrease" }.action(5).must_equal(4)
|
data/test/group_test.rb
CHANGED
data/test/name_converter_test.rb
CHANGED
@@ -11,9 +11,18 @@ describe Pluginator::NameConverter do
|
|
11
11
|
Converter.send(:split_file_name, "/path/to/plugins/group1/type1/name1.rb", "group1").
|
12
12
|
must_equal(["plugins/group1/type1/name1.rb", "group1/type1/name1", "type1"])
|
13
13
|
end
|
14
|
+
|
14
15
|
it "builds group pattern" do
|
15
16
|
Converter.send(:file_name_pattern, "group2").must_equal("plugins/group2/**/*.rb")
|
16
17
|
end
|
18
|
+
|
19
|
+
it "builds group/<nil> pattern" do
|
20
|
+
Converter.send(:file_name_pattern, "group2").must_equal("plugins/group2/**/*.rb")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "builds group/type pattern" do
|
24
|
+
Converter.send(:file_name_pattern, "group2", "type3").must_equal("plugins/group2/type3/*.rb")
|
25
|
+
end
|
17
26
|
end
|
18
27
|
|
19
28
|
describe "classes" do
|
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: 0.10.
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michal Papis
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- Rakefile
|
53
53
|
- demo/plugins/pluginator/math/decrease.rb
|
54
54
|
- demo/plugins/pluginator/math/increase.rb
|
55
|
+
- demo/plugins/pluginator/stats/max.rb
|
55
56
|
- lib/pluginator.rb
|
56
57
|
- lib/pluginator/autodetect.rb
|
57
58
|
- lib/pluginator/group.rb
|