ecko-plugins 0.1.2 → 0.1.6
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/lib/ecko/plugins/version.rb +5 -0
- data/lib/ecko/plugins.rb +49 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dce97dbb50221ff2e328c927ef9f40ed6109d982b249e6d55f1001037eb8e1a7
|
4
|
+
data.tar.gz: '0191d7f6fb03a1d7dff1f354b05de53ed8092951c5735fe8c8c60d02360e312d'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88f0dcde5f58e3a160763d6f384476db9e99f598149f4cf5ecc4190b0fb726af66d6286bd4f424498dcc0564fc60f9038d66fcf6c939fe0d4de817fdd908f467
|
7
|
+
data.tar.gz: c1268a19a779fe9da8feeafcd5cb1d0c5b0f252c95e464b4bb0a72aa2859d34fc45c930cc8af963dc6694f8c11dc5634195b41d9da36f83aa9ba5bf8f8ab5099
|
data/lib/ecko/plugins.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require "ecko/plugins/version"
|
2
|
+
|
3
|
+
module Ecko
|
4
|
+
module Plugins
|
5
|
+
# Set a registry variable to help cache all the registries
|
6
|
+
@@registry = {}
|
7
|
+
|
8
|
+
class Error < StandardError; end
|
9
|
+
|
10
|
+
class PluginPresentError < StandardError; end
|
11
|
+
|
12
|
+
class Registry; end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
def registry
|
16
|
+
@@registry
|
17
|
+
end
|
18
|
+
|
19
|
+
# Registers a new plugin, A plugin with the same name cannot be registered twice
|
20
|
+
# That will raise Ecko::Plugins::PluginPresentError if a plugin is already registered.
|
21
|
+
# name: Name of the plugin in snail case
|
22
|
+
# schema: hash/object or any data structure which defines the plugin
|
23
|
+
# engine: It is a class which exposes a configure class definition(method)
|
24
|
+
def register(name:, schema:, engine:)
|
25
|
+
raise Ecko::Plugins::PluginPresentError unless Ecko::Plugins.registry[name].nil?
|
26
|
+
|
27
|
+
# This helps set a new reference class which will be used as a pristine class. It doesnt have a big
|
28
|
+
# role currently but will serve a great deal of purpose in the future.
|
29
|
+
registered_plugin = Ecko::Plugins::Registry.const_set(name.capitalize, Class.new(engine))
|
30
|
+
Ecko::Plugins.registry[name] = { schema: schema, engine: engine, engine_stub: registered_plugin }
|
31
|
+
register_method(name, registered_plugin)
|
32
|
+
execute_pipeline(registered_plugin, schema)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Pipeline just includes configuration currently, It will help us run a validation pipeline in the future.
|
36
|
+
# TODO: Update the comment on the method when upgraded.
|
37
|
+
def execute_pipeline(registered_plugin, schema)
|
38
|
+
registered_plugin.configure(schema)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Creates a singleton class to help devs use the plugin engine and run methods accordingly.
|
42
|
+
def register_method(name, engine)
|
43
|
+
define_singleton_method name do
|
44
|
+
engine
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecko-plugins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manish Sharma
|
@@ -44,10 +44,12 @@ email:
|
|
44
44
|
executables: []
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
|
-
files:
|
47
|
+
files:
|
48
|
+
- lib/ecko/plugins.rb
|
49
|
+
- lib/ecko/plugins/version.rb
|
48
50
|
homepage: https://github.com/magicstone-dev/ecko-plugins/tree/main/ecko-plugins
|
49
51
|
licenses:
|
50
|
-
- GPL
|
52
|
+
- GPL-3.0+
|
51
53
|
metadata:
|
52
54
|
allowed_push_host: https://rubygems.org
|
53
55
|
homepage_uri: https://github.com/magicstone-dev/ecko-plugins/tree/main/ecko-plugins
|