monkey-reloader 0.0.3 → 0.0.4
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/monkey-reloader/version.rb +1 -1
- data/lib/monkey-reloader.rb +75 -8
- 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: 716dbb88b043f708ffe48d905278539914757e28
|
4
|
+
data.tar.gz: 82a60e131266fd7e18fe91c0fe457fc6a015c758
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53597bcdc89edf732809b4ec440958adcc31042afc1d1c9aff7c7c82538c41b9394d0c1e2daad8c8e068f97b422c79744e72a364ba8b69937799ca42b5eb9694
|
7
|
+
data.tar.gz: 532dbb52c91ba348339385a96449c930db2c50479e770ddca0247c26799f7afda6dcf0259f85df4d4bd8c87cb59cb246da366971129844ed702df8d492dc5a9f
|
data/lib/monkey-reloader.rb
CHANGED
@@ -1,46 +1,113 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
|
1
5
|
module MonkeyReloader
|
2
6
|
class << self
|
3
7
|
|
8
|
+
@@hash = 'HEAD'
|
9
|
+
@@whitelist = nil
|
10
|
+
@@blacklist = nil
|
11
|
+
|
12
|
+
|
13
|
+
def init(whitelist = [], blacklist = [])
|
14
|
+
@@whitelist = Set.new
|
15
|
+
self.whitelist whitelist
|
16
|
+
|
17
|
+
@@blacklist = Set.new
|
18
|
+
self.blacklist blacklist
|
4
19
|
|
5
|
-
def init(blacklist = [])
|
6
|
-
@@blacklist = Array(blacklist)
|
7
20
|
update_hash
|
8
21
|
|
9
|
-
|
22
|
+
self
|
10
23
|
end
|
11
24
|
|
12
25
|
def load
|
13
|
-
|
14
|
-
|
26
|
+
wlist = whitelist
|
27
|
+
blist = blacklist
|
28
|
+
|
29
|
+
files = changed_files.select do |file|
|
30
|
+
wlist.include? file
|
31
|
+
end.reject do |file|
|
32
|
+
blist.include? file
|
15
33
|
end
|
34
|
+
|
16
35
|
update_hash
|
36
|
+
pwd = Pathname.new Dir.pwd
|
17
37
|
|
18
38
|
files.each do |file|
|
19
39
|
Kernel.load file
|
40
|
+
end.map do |file|
|
41
|
+
# map back to relative pathnames for convenience
|
42
|
+
Pathname.new(file).relative_path_from(pwd).to_s
|
20
43
|
end
|
21
44
|
end
|
22
45
|
|
46
|
+
def whitelist(files = [])
|
47
|
+
@@whitelist ||= Set.new
|
48
|
+
|
49
|
+
expand_paths @@whitelist.merge parse_paths files
|
50
|
+
end
|
51
|
+
|
52
|
+
def blacklist(files = [])
|
53
|
+
@@blacklist ||= Set.new
|
54
|
+
|
55
|
+
expand_paths @@blacklist.merge parse_paths files
|
56
|
+
end
|
57
|
+
|
23
58
|
|
24
59
|
private
|
25
60
|
|
61
|
+
def parse_paths(paths = [])
|
62
|
+
Array(paths).map do |path|
|
63
|
+
path = File.expand_path path
|
64
|
+
|
65
|
+
if path.include? '*'
|
66
|
+
path
|
67
|
+
elsif Dir.exists? path
|
68
|
+
"#{path}/**/*.rb"
|
69
|
+
elsif File.exists? path
|
70
|
+
unless /\.rb$/.match path
|
71
|
+
raise ArgumentError.new ".rb files only: #{path}"
|
72
|
+
end
|
73
|
+
|
74
|
+
path
|
75
|
+
else
|
76
|
+
raise ArgumentError.new "path not found: #{path}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def expand_paths(paths = [])
|
82
|
+
# recalculate path expansions - caching will miss filesystem changes
|
83
|
+
Array(paths).map do |path|
|
84
|
+
Dir[path]
|
85
|
+
end.flatten
|
86
|
+
end
|
87
|
+
|
26
88
|
def update_hash
|
89
|
+
# get current git branch hash
|
27
90
|
@@hash = `git rev-parse HEAD`.strip
|
28
91
|
end
|
29
92
|
|
30
93
|
def changed_files
|
31
|
-
|
94
|
+
# return a list of changed files
|
95
|
+
|
96
|
+
files = Set.new
|
32
97
|
awk = "awk '{ print $2 }'"
|
33
98
|
|
34
99
|
# find recent changes
|
35
|
-
files
|
100
|
+
files.merge `git status -s | #{awk}`.split
|
36
101
|
|
37
102
|
# find committed changes if there was a branch change / rebase
|
38
|
-
files
|
103
|
+
files.merge `git diff --name-status HEAD..#{@@hash} | #{awk}`.split
|
39
104
|
|
40
105
|
# filter for ruby files and those that dissapeared during
|
41
106
|
# a branch change
|
42
107
|
files.select do |file|
|
43
108
|
/\.rb$/.match file and File.exists? file
|
109
|
+
end.map do |file|
|
110
|
+
File.expand_path file
|
44
111
|
end
|
45
112
|
end
|
46
113
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkey-reloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Pepper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
fast IRB reloading for non-conventional file naming, using git
|