esse-hooks 0.0.1 → 0.0.2
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/Gemfile.lock +1 -1
- data/lib/esse/hooks/mixin.rb +35 -10
- data/lib/esse/hooks/{primitives → primitive}/string.rb +1 -1
- data/lib/esse/hooks/version.rb +1 -1
- data/lib/esse/hooks.rb +1 -1
- data/mise.toml +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a624309b6a101c9851b395b04d27dd3a473798daf816e32d9f62e818903de20
|
|
4
|
+
data.tar.gz: d240584283579d9368fede1891c6185d07da9c67fd58abcf414125ef27b81ee4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f75b1bf6b5ab19272f7e01ffbd71363f7ff80c48a7ca9f481837dc3b8645f9f3203cbbb7fd0527ded597cb69bae32d079b69461b91b0976fbd57020873988af7
|
|
7
|
+
data.tar.gz: 01ab42d51c7e6a31862295acccfba1555c90e9113f45f5177457eba6bb864b2b32d6847abecf833cde154ff9ab36b4ecddc871451269f4febd8c83e9a57a221c
|
data/Gemfile.lock
CHANGED
data/lib/esse/hooks/mixin.rb
CHANGED
|
@@ -36,7 +36,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
36
36
|
# @return [void]
|
|
37
37
|
def enable!(*repos)
|
|
38
38
|
filter_repositories(*repos).each do |repo|
|
|
39
|
-
state[:repos][repo] = true
|
|
39
|
+
state[:repos][repo_state_key(repo)] = true
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
@@ -45,7 +45,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
45
45
|
# @return [void]
|
|
46
46
|
def disable!(*repos)
|
|
47
47
|
filter_repositories(*repos).each do |repo|
|
|
48
|
-
state[:repos][repo] = false
|
|
48
|
+
state[:repos][repo_state_key(repo)] = false
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -54,7 +54,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
54
54
|
# @param repos [Array<String, Esse::Index, Esse::Repo>]
|
|
55
55
|
# @return [Boolean]
|
|
56
56
|
def disabled?(*repos)
|
|
57
|
-
filter_repositories(*repos).all? { |repo| !state[:repos][repo] }
|
|
57
|
+
filter_repositories(*repos).all? { |repo| !state[:repos][repo_state_key(repo)] }
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
# Check if the given repository is enabled for indexing. If no repository is specified, all repositories will be checked.
|
|
@@ -62,7 +62,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
62
62
|
# @param repos [Array<String, Esse::Index, Esse::Repo>]
|
|
63
63
|
# @return [Boolean]
|
|
64
64
|
def enabled?(*repos)
|
|
65
|
-
filter_repositories(*repos).all? { |repo| state[:repos][repo] }
|
|
65
|
+
filter_repositories(*repos).all? { |repo| state[:repos][repo_state_key(repo)] }
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
# Enable model indexing callbacks for the given model. If no repository is specified, all repositories will be enabled.
|
|
@@ -74,7 +74,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
74
74
|
def enable_model!(model_class, *repos)
|
|
75
75
|
ensure_registered_model_class!(model_class)
|
|
76
76
|
filter_model_repositories(model_class, *repos).each do |repo|
|
|
77
|
-
state[:models][model_class][repo] = true
|
|
77
|
+
state[:models][model_class][repo_state_key(repo)] = true
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
@@ -87,7 +87,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
87
87
|
def disable_model!(model_class, *repos)
|
|
88
88
|
ensure_registered_model_class!(model_class)
|
|
89
89
|
filter_model_repositories(model_class, *repos).each do |repo|
|
|
90
|
-
state[:models][model_class][repo] = false
|
|
90
|
+
state[:models][model_class][repo_state_key(repo)] = false
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
|
|
@@ -106,7 +106,7 @@ class Esse::Hooks::Mixin < Module
|
|
|
106
106
|
return false unless registered_model_class?(model_class)
|
|
107
107
|
|
|
108
108
|
filter_model_repositories(model_class, *repos).all? do |repo|
|
|
109
|
-
state.dig(:models, model_class, repo) != false
|
|
109
|
+
state.dig(:models, model_class, repo_state_key(repo)) != false
|
|
110
110
|
end
|
|
111
111
|
end
|
|
112
112
|
|
|
@@ -169,11 +169,11 @@ class Esse::Hooks::Mixin < Module
|
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
def resolve_index_repository(name)
|
|
172
|
-
index_name, repo_name = Esse::Hooks::
|
|
172
|
+
index_name, repo_name = Esse::Hooks::Primitive::String.new(name).underscore.split("::").join("/").split(":", 2)
|
|
173
173
|
if index_name !~ /(I|_i)ndex$/ && index_name !~ /_index\/([\w_]+)$/
|
|
174
174
|
index_name = format("%<index_name>s_index", index_name: index_name)
|
|
175
175
|
end
|
|
176
|
-
klass = Esse::Hooks::
|
|
176
|
+
klass = Esse::Hooks::Primitive::String.new(index_name).classify.constantize
|
|
177
177
|
return klass if klass <= Esse::Repository
|
|
178
178
|
|
|
179
179
|
repo_name ? klass.repo(repo_name) : klass.repo
|
|
@@ -239,15 +239,40 @@ class Esse::Hooks::Mixin < Module
|
|
|
239
239
|
# }
|
|
240
240
|
def state
|
|
241
241
|
global_store[store_key] ||= {
|
|
242
|
-
repos: all_repos.map { |k| [k, true] }.to_h, # Control global state of the index repository level
|
|
242
|
+
repos: all_repos.map { |k| [repo_state_key(k), true] }.to_h, # Control global state of the index repository level
|
|
243
243
|
models: Hash.new { |h, k| h[k] = {} } # Control the state of the model & index repository level
|
|
244
244
|
}
|
|
245
|
+
normalize_state!(global_store[store_key])
|
|
245
246
|
end
|
|
246
247
|
|
|
247
248
|
def global_store
|
|
248
249
|
Thread.current
|
|
249
250
|
end
|
|
250
251
|
|
|
252
|
+
def repo_state_key(repo)
|
|
253
|
+
repo.to_s
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
def normalize_state!(raw_state)
|
|
257
|
+
repos = raw_state[:repos]
|
|
258
|
+
unless repos.empty? || repos.keys.all?(String)
|
|
259
|
+
raw_state[:repos] = repos.each_with_object({}) do |(k, v), h|
|
|
260
|
+
h[repo_state_key(k)] = v
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
models_state = raw_state[:models]
|
|
265
|
+
models_state.each_value do |per_model|
|
|
266
|
+
next if per_model.empty? || per_model.keys.all?(String)
|
|
267
|
+
|
|
268
|
+
per_model.replace(per_model.each_with_object({}) do |(k, v), h|
|
|
269
|
+
h[repo_state_key(k)] = v
|
|
270
|
+
end)
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
raw_state
|
|
274
|
+
end
|
|
275
|
+
|
|
251
276
|
private
|
|
252
277
|
|
|
253
278
|
def store_key
|
data/lib/esse/hooks/version.rb
CHANGED
data/lib/esse/hooks.rb
CHANGED
data/mise.toml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
[tools]
|
|
2
|
-
ruby = "2
|
|
2
|
+
ruby = "3.2"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: esse-hooks
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marcos G. Zimmermann
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-03-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: esse
|
|
@@ -42,7 +42,7 @@ files:
|
|
|
42
42
|
- lib/esse-hooks.rb
|
|
43
43
|
- lib/esse/hooks.rb
|
|
44
44
|
- lib/esse/hooks/mixin.rb
|
|
45
|
-
- lib/esse/hooks/
|
|
45
|
+
- lib/esse/hooks/primitive/string.rb
|
|
46
46
|
- lib/esse/hooks/version.rb
|
|
47
47
|
- mise.toml
|
|
48
48
|
homepage: https://github.com/marcosgz/esse-hooks
|
|
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
requirements: []
|
|
70
|
-
rubygems_version: 3.
|
|
70
|
+
rubygems_version: 3.4.10
|
|
71
71
|
signing_key:
|
|
72
72
|
specification_version: 4
|
|
73
73
|
summary: Hooks extensions for Esse
|