alki-loader 0.1.0 → 0.2.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/lib/alki/loader/registry.rb +24 -23
- data/lib/alki/loader/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0d95a7f58e0d36040bbbdaba1c6cd4f141ae94b1
|
|
4
|
+
data.tar.gz: 4020be8a5dabf74746f7bcece2524c08c6cb8941
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b7b04006b3eb1a8c350ca91f07e4ae53b0e9d8a1d77b842da8f50837d20e07827e76b4542ecd2a9491b3adb2307b46963ac1f12366d58c5e18be44d135388fe8
|
|
7
|
+
data.tar.gz: 69a63aac6a6047381fa7d8c3b8720accd8051d2eacd99d8060d3b6b8197402f693a8906d74a9576901fe5ea183c8c57fe79d36c4453ea403acb05b26c36bba91
|
data/lib/alki/loader/registry.rb
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
require 'thread'
|
|
2
|
+
|
|
1
3
|
module Alki
|
|
2
4
|
module Loader
|
|
3
5
|
class Registry
|
|
4
6
|
def initialize
|
|
7
|
+
@lock = Monitor.new
|
|
5
8
|
clear
|
|
6
9
|
end
|
|
7
10
|
|
|
8
11
|
def clear
|
|
9
|
-
@
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
@lock.synchronize do
|
|
13
|
+
@paths = []
|
|
14
|
+
@names = []
|
|
15
|
+
@configs_loaded = false
|
|
16
|
+
end
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
def paths
|
|
@@ -19,20 +22,20 @@ module Alki
|
|
|
19
22
|
end
|
|
20
23
|
|
|
21
24
|
def add(entry)
|
|
22
|
-
@
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@names.
|
|
26
|
-
|
|
25
|
+
@lock.synchronize do
|
|
26
|
+
@paths.delete_if{|e| e.path == entry.path }
|
|
27
|
+
@paths << entry
|
|
28
|
+
@names.sort!{|a,b| b.path <=> a.path}
|
|
29
|
+
if entry.name
|
|
30
|
+
@names.delete_if{|e| e.path == entry.path }
|
|
31
|
+
@names << entry
|
|
32
|
+
@names.sort!{|a,b| b.name <=> a.name}
|
|
33
|
+
end
|
|
27
34
|
end
|
|
28
35
|
end
|
|
29
36
|
|
|
30
37
|
def lookup_name(name)
|
|
31
38
|
load_configs!
|
|
32
|
-
unless @names_sorted
|
|
33
|
-
@names.sort! {|a,b| b.name <=> a.name }
|
|
34
|
-
@names_sorted = true
|
|
35
|
-
end
|
|
36
39
|
@names.find do |e|
|
|
37
40
|
name.start_with?(e.name) &&
|
|
38
41
|
(name.size == e.name.size || name[e.name.size] == '/')
|
|
@@ -41,10 +44,6 @@ module Alki
|
|
|
41
44
|
|
|
42
45
|
def lookup_path(path)
|
|
43
46
|
load_configs!
|
|
44
|
-
unless @paths_sorted
|
|
45
|
-
@paths.sort! {|a,b| b.path <=> a.path }
|
|
46
|
-
@paths_sorted = true
|
|
47
|
-
end
|
|
48
47
|
@paths.find do |e|
|
|
49
48
|
path.start_with?(e.path) &&
|
|
50
49
|
(path.size == e.path.size || path[e.path.size] == '/')
|
|
@@ -52,11 +51,13 @@ module Alki
|
|
|
52
51
|
end
|
|
53
52
|
|
|
54
53
|
def load_configs!
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
@lock.synchronize do
|
|
55
|
+
path_hash = $LOAD_PATH.hash
|
|
56
|
+
return if @configs_loaded == path_hash
|
|
57
|
+
@configs_loaded = path_hash
|
|
58
|
+
Gem.find_files_from_load_path('alki_loader.rb').each do |config_path|
|
|
59
|
+
require config_path
|
|
60
|
+
end
|
|
60
61
|
end
|
|
61
62
|
end
|
|
62
63
|
end
|
data/lib/alki/loader/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: alki-loader
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Edlefsen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-03-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|