everyday-plugins 1.0.0 → 1.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.
- checksums.yaml +4 -4
- data/README.md +23 -0
- data/Rakefile +8 -1
- data/everyday-plugins.gemspec +1 -0
- data/lib/everyday-plugins/plugin.rb +13 -0
- data/lib/everyday-plugins/version.rb +1 -1
- data/spec/loader_spec.rb +30 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5261638c746e3841cd0eb250b76fc6d00102ebd
|
4
|
+
data.tar.gz: 88f21dd9ddc7be4345739315ecfe0037763a126e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2c1926e386e1f9a6cc586ee145fa9ac6f2ce8c87182275d807a6004020dc9309b45ae79b4d54fba1da2185830c0b0ab43b4d66a839307e728be3d635560a999
|
7
|
+
data.tar.gz: 50a30e9063b3b723128f3651b298e2206290509cf0f45ad6a96692a06c8d6fb1fd1175109fa66639b4986ca2ca14a48de56570440d03fcd20a0163a4f55add5e
|
data/README.md
CHANGED
@@ -18,6 +18,29 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
+
###For conditionally running plugin setup code (or other code) based on installed gems
|
22
|
+
As of version 1.1.0, there is support for running a block of code based on whether or not certain gems are installed. This is via the `EverydayPlugins::Loader` module. You can either `extend` it and use the `depend` method like any other plugin setup method, or you can use the static `EverydayPlugins::Loader.depend` method. The method takes each dependency as a separate argument. If you want to specify more than just the name of the gem (for example, if you want to require a minimum version), you need to put the parameters for that argument into an array.
|
23
|
+
|
24
|
+
Here is an example:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
EverydayPlugins::Loader.depend(['bundler', '~> 1.5'], 'rake') {
|
28
|
+
#do stuff here
|
29
|
+
}
|
30
|
+
```
|
31
|
+
|
32
|
+
And here is an example using `extend`:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
class MyLoader
|
36
|
+
extend EverydayPlugins::Loader
|
37
|
+
|
38
|
+
depend(['bundler', '~> 1.5'], 'rake') {
|
39
|
+
#do stuff here
|
40
|
+
}
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
21
44
|
###For supporting plugins:
|
22
45
|
See below for info on defining and using plugin types. As for including plugins, use
|
23
46
|
|
data/Rakefile
CHANGED
data/everyday-plugins.gemspec
CHANGED
@@ -86,6 +86,19 @@ module EverydayPlugins
|
|
86
86
|
instance.set_vars(vars)
|
87
87
|
end
|
88
88
|
end
|
89
|
+
module Loader
|
90
|
+
def depend(*deps, &block)
|
91
|
+
EverydayPlugins::Loader.depend(*deps, &block)
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.depend(*deps, &block)
|
95
|
+
met = deps.all? { |dep|
|
96
|
+
matches = Gem::Specification.find_all_by_name(*dep)
|
97
|
+
!(matches.nil? || matches.empty?)
|
98
|
+
}
|
99
|
+
block.call if met
|
100
|
+
end
|
101
|
+
end
|
89
102
|
module Plugin
|
90
103
|
def register(type, options = {}, &block)
|
91
104
|
EverydayPlugins::Plugins.instance.register(type, options, &block)
|
data/spec/loader_spec.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative '../lib/everyday-plugins/plugin'
|
2
|
+
class Loader1
|
3
|
+
extend EverydayPlugins::Loader
|
4
|
+
end
|
5
|
+
|
6
|
+
describe EverydayPlugins::Loader do
|
7
|
+
it 'runs the block when the dependencies are met' do
|
8
|
+
rval = false
|
9
|
+
Loader1.depend(['bundler', '~> 1.5'], 'rake') { rval = true }
|
10
|
+
rval.should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'does not run the block when the dependencies are not met' do
|
14
|
+
rval = false
|
15
|
+
Loader1.depend(['bundler', '>= 10.5'], 'rake') { rval = true }
|
16
|
+
rval.should be_false
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'runs the block when the dependencies are met using a static method' do
|
20
|
+
rval = false
|
21
|
+
EverydayPlugins::Loader.depend(['bundler', '~> 1.5'], 'rake') { rval = true }
|
22
|
+
rval.should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'does not run the block when the dependencies are not met using a static method' do
|
26
|
+
rval = false
|
27
|
+
EverydayPlugins::Loader.depend(['bundler', '>= 10.5'], 'rake') { rval = true }
|
28
|
+
rval.should be_false
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: everyday-plugins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Henderson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
description: A simple gem plugin system. Extracted from the mvn2 gem.
|
42
56
|
email:
|
43
57
|
- henderea@gmail.com
|
@@ -54,6 +68,7 @@ files:
|
|
54
68
|
- lib/everyday-plugins.rb
|
55
69
|
- lib/everyday-plugins/plugin.rb
|
56
70
|
- lib/everyday-plugins/version.rb
|
71
|
+
- spec/loader_spec.rb
|
57
72
|
homepage: https://github.com/henderea/everyday-plugins
|
58
73
|
licenses:
|
59
74
|
- MIT
|
@@ -78,5 +93,6 @@ rubygems_version: 2.2.0
|
|
78
93
|
signing_key:
|
79
94
|
specification_version: 4
|
80
95
|
summary: A simple gem plugin system
|
81
|
-
test_files:
|
96
|
+
test_files:
|
97
|
+
- spec/loader_spec.rb
|
82
98
|
has_rdoc:
|