rego 1.5.1 → 1.5.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.
- data/2013-06-22-your-filename.md +6 -0
- data/bin/rego +3 -0
- data/lib/rego.rb +1 -1
- data/rego.gemspec +3 -5
- metadata +3 -4
- data/d/a.rb +0 -1
- data/d/rego +0 -282
data/bin/rego
CHANGED
data/lib/rego.rb
CHANGED
data/rego.gemspec
CHANGED
@@ -3,19 +3,17 @@
|
|
3
3
|
|
4
4
|
Gem::Specification::new do |spec|
|
5
5
|
spec.name = "rego"
|
6
|
-
spec.version = "1.5.
|
6
|
+
spec.version = "1.5.2"
|
7
7
|
spec.platform = Gem::Platform::RUBY
|
8
8
|
spec.summary = "rego"
|
9
9
|
spec.description = "description: rego kicks the ass"
|
10
10
|
|
11
11
|
spec.files =
|
12
|
-
["
|
12
|
+
["2013-06-22-your-filename.md",
|
13
|
+
"README",
|
13
14
|
"Rakefile",
|
14
15
|
"bin",
|
15
16
|
"bin/rego",
|
16
|
-
"d",
|
17
|
-
"d/a.rb",
|
18
|
-
"d/rego",
|
19
17
|
"lib",
|
20
18
|
"lib/rego.rb",
|
21
19
|
"rego.gemspec"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rego
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: main
|
@@ -50,11 +50,10 @@ executables:
|
|
50
50
|
extensions: []
|
51
51
|
extra_rdoc_files: []
|
52
52
|
files:
|
53
|
+
- 2013-06-22-your-filename.md
|
53
54
|
- README
|
54
55
|
- Rakefile
|
55
56
|
- bin/rego
|
56
|
-
- d/a.rb
|
57
|
-
- d/rego
|
58
57
|
- lib/rego.rb
|
59
58
|
- rego.gemspec
|
60
59
|
homepage: https://github.com/ahoward/rego
|
data/d/a.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
42
|
data/d/rego
DELETED
@@ -1,282 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
|
3
|
-
Main {
|
4
|
-
|
5
|
-
name <<-__
|
6
|
-
|
7
|
-
rego
|
8
|
-
|
9
|
-
__
|
10
|
-
|
11
|
-
description <<-__
|
12
|
-
|
13
|
-
run arbitrary commands easily when files change
|
14
|
-
|
15
|
-
__
|
16
|
-
|
17
|
-
examples <<-__
|
18
|
-
|
19
|
-
### gem install rego
|
20
|
-
|
21
|
-
|
22
|
-
# say hai whenever the file foo.txt changes
|
23
|
-
#
|
24
|
-
~> rego foo.txt -- echo hai
|
25
|
-
|
26
|
-
# say hai whenever any file (recursively) in bar changes
|
27
|
-
#
|
28
|
-
~> rego ./bar/ -- echo hai
|
29
|
-
|
30
|
-
# echo *the file that changed* when any file (recursively) in bar changes
|
31
|
-
#
|
32
|
-
~> rego ./bar/ -- echo "@ was changed"
|
33
|
-
|
34
|
-
# run a specific test whenever anything in lib, test, app, or config changes
|
35
|
-
#
|
36
|
-
~> rego {lib,test,app,config} -- ruby -Itest ./test/units/foo_test.rb --name teh_test
|
37
|
-
|
38
|
-
# run a specific test whenever it, or your app, has changed
|
39
|
-
#
|
40
|
-
~> rego ./test -- ruby -Itest @
|
41
|
-
__
|
42
|
-
|
43
|
-
def run
|
44
|
-
parse_the_command_line
|
45
|
-
print_a_summary_of_watched_files
|
46
|
-
loop_watching_files_and_running_commands
|
47
|
-
end
|
48
|
-
|
49
|
-
def parse_the_command_line
|
50
|
-
argv = ARGV.map{|arg| "#{ arg }"}
|
51
|
-
|
52
|
-
@paths, @command = argv.join(' ').split('--', 2)
|
53
|
-
|
54
|
-
@paths = @paths.to_s.strip.scan(/[^\s]+/)
|
55
|
-
@command = @command.to_s.strip
|
56
|
-
|
57
|
-
if @paths.empty?
|
58
|
-
@paths.push('.')
|
59
|
-
end
|
60
|
-
|
61
|
-
if @command.empty?
|
62
|
-
@command = 'echo @'
|
63
|
-
end
|
64
|
-
|
65
|
-
@paths.map!{|path| test(?d, path) ? [path, Dir.glob(File.join(path, '**/**'))] : path}
|
66
|
-
@paths.flatten!
|
67
|
-
@paths.compact!
|
68
|
-
@paths.uniq!
|
69
|
-
@paths.map! do |path|
|
70
|
-
begin
|
71
|
-
Rego.realpath(path)
|
72
|
-
rescue Object
|
73
|
-
nil
|
74
|
-
end
|
75
|
-
end
|
76
|
-
@paths.compact!
|
77
|
-
end
|
78
|
-
|
79
|
-
def print_a_summary_of_watched_files
|
80
|
-
puts "## #{ @command }"
|
81
|
-
puts "#"
|
82
|
-
puts @paths.join("\n")
|
83
|
-
puts
|
84
|
-
end
|
85
|
-
|
86
|
-
def loop_watching_files_and_running_commands
|
87
|
-
@directories = []
|
88
|
-
@files = []
|
89
|
-
|
90
|
-
@paths.each do |path|
|
91
|
-
if test(?d, path)
|
92
|
-
@directories.push(Rego.realpath(path))
|
93
|
-
else
|
94
|
-
@files.push(Rego.realpath(path))
|
95
|
-
@directories.push(Rego.realpath(File.dirname(path)))
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
@directories.uniq!
|
100
|
-
@files.uniq!
|
101
|
-
|
102
|
-
stats = {}
|
103
|
-
|
104
|
-
@files.each do |file|
|
105
|
-
begin
|
106
|
-
stats[file] = File.stat(file)
|
107
|
-
rescue
|
108
|
-
nil
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
#
|
113
|
-
n = '0'
|
114
|
-
line = '#' * 42
|
115
|
-
$running = false
|
116
|
-
|
117
|
-
#
|
118
|
-
rego =
|
119
|
-
proc do |*args|
|
120
|
-
path = args.shift
|
121
|
-
cmd = path ? @command.gsub(/@/, path) : @command
|
122
|
-
|
123
|
-
puts line
|
124
|
-
|
125
|
-
Rego.say("# rego.#{ n } @ #{ Time.now.strftime('%H:%M:%S') } - #{ cmd }", :color => :magenta)
|
126
|
-
puts
|
127
|
-
|
128
|
-
system(cmd)
|
129
|
-
puts
|
130
|
-
|
131
|
-
Rego.say("# rego.#{ n } @ #{ Time.now.strftime('%H:%M:%S') } - #{ $?.exitstatus }", :color => :yellow)
|
132
|
-
puts
|
133
|
-
|
134
|
-
n.succ!
|
135
|
-
end
|
136
|
-
|
137
|
-
#
|
138
|
-
fsevent = FSEvent.new
|
139
|
-
|
140
|
-
options = {
|
141
|
-
:latency => 0.42,
|
142
|
-
:no_defer => true,
|
143
|
-
:file_events => true,
|
144
|
-
:since_when => 0
|
145
|
-
}
|
146
|
-
|
147
|
-
fsevent.watch(@directories, options) do |*args|
|
148
|
-
unless $running
|
149
|
-
$running = true
|
150
|
-
|
151
|
-
args.flatten.each do |dir|
|
152
|
-
glob = File.join(dir, '**/**')
|
153
|
-
entries = Dir.glob(glob)
|
154
|
-
|
155
|
-
entries.each do |entry|
|
156
|
-
entry = File.expand_path(entry)
|
157
|
-
next unless stats.has_key?(entry)
|
158
|
-
|
159
|
-
begin
|
160
|
-
stats[entry] ||= File.stat(entry)
|
161
|
-
before = stats[entry]
|
162
|
-
after = File.stat(entry)
|
163
|
-
rescue
|
164
|
-
next
|
165
|
-
end
|
166
|
-
|
167
|
-
unless before.mtime == after.mtime
|
168
|
-
stats[entry] = after
|
169
|
-
rego[ entry ]
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
$running = false
|
175
|
-
end
|
176
|
-
|
177
|
-
begin
|
178
|
-
fsevent.run
|
179
|
-
rescue SignalException
|
180
|
-
exit(0)
|
181
|
-
end
|
182
|
-
end
|
183
|
-
=begin
|
184
|
-
fsevent = FSEvent.new
|
185
|
-
|
186
|
-
fsevent.watch(
|
187
|
-
|
188
|
-
@directories,
|
189
|
-
:latency => 0.42,
|
190
|
-
:no_defer => true,
|
191
|
-
:file_events => true,
|
192
|
-
:watch_root => true,
|
193
|
-
:since_when => 0
|
194
|
-
|
195
|
-
) do |*args|
|
196
|
-
unless $running
|
197
|
-
$running = true
|
198
|
-
|
199
|
-
args.flatten.each do |dir|
|
200
|
-
glob = File.join(dir, '**/**')
|
201
|
-
entries = Dir.glob(glob)
|
202
|
-
|
203
|
-
entries.each do |entry|
|
204
|
-
entry = File.expand_path(entry)
|
205
|
-
next unless stats.has_key?(entry)
|
206
|
-
|
207
|
-
begin
|
208
|
-
stats[entry] ||= File.stat(entry)
|
209
|
-
before = stats[entry]
|
210
|
-
after = File.stat(entry)
|
211
|
-
rescue
|
212
|
-
next
|
213
|
-
end
|
214
|
-
|
215
|
-
unless before.mtime == after.mtime
|
216
|
-
stats[entry] = after
|
217
|
-
rego[ entry ]
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
$running = false
|
223
|
-
end
|
224
|
-
|
225
|
-
begin
|
226
|
-
fsevent.run
|
227
|
-
rescue SignalException
|
228
|
-
exit(0)
|
229
|
-
end
|
230
|
-
end
|
231
|
-
=end
|
232
|
-
}
|
233
|
-
|
234
|
-
|
235
|
-
BEGIN {
|
236
|
-
# setup a child process to catch signals and brutally shut down the parent as
|
237
|
-
# a monkey-patch to listen/rb-fsevent's busted ctrl-c handling...
|
238
|
-
#
|
239
|
-
if false
|
240
|
-
unless((pid = fork))
|
241
|
-
ppid = Process.ppid
|
242
|
-
|
243
|
-
begin
|
244
|
-
trap('SIGINT'){
|
245
|
-
%w(
|
246
|
-
SIGTERM SIGINT SIGQUIT SIGKILL
|
247
|
-
).each do |signal|
|
248
|
-
|
249
|
-
begin
|
250
|
-
Process.kill("-#{ signal }", ppid)
|
251
|
-
rescue Object
|
252
|
-
nil
|
253
|
-
end
|
254
|
-
|
255
|
-
sleep(rand)
|
256
|
-
end
|
257
|
-
}
|
258
|
-
|
259
|
-
loop do
|
260
|
-
Process.kill(0, ppid)
|
261
|
-
sleep(1)
|
262
|
-
end
|
263
|
-
rescue Object => e
|
264
|
-
exit!(0)
|
265
|
-
end
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
require 'pathname'
|
270
|
-
|
271
|
-
this = Pathname.new(__FILE__).realpath.to_s
|
272
|
-
bindir = File.dirname(this)
|
273
|
-
rootdir = File.dirname(bindir)
|
274
|
-
libdir = File.join(rootdir, 'lib')
|
275
|
-
rego = File.join(libdir, 'rego.rb')
|
276
|
-
|
277
|
-
require(rego)
|
278
|
-
|
279
|
-
STDOUT.sync = true
|
280
|
-
STDERR.sync = true
|
281
|
-
STDIN.sync = true
|
282
|
-
}
|