rego 3.2.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rego +56 -8
  3. data/lib/rego/_lib.rb +2 -2
  4. data/rego.gemspec +2 -2
  5. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 425e9aeff5786a7815c4647b7e3370d392b6d298a2b0ed210366b80bff7b5a8f
4
- data.tar.gz: 3b43f2b8b22ad22dd1ae9df75992af8104cfde581e3ccae148f164eb50f62bd5
3
+ metadata.gz: e704eca7b7db48e6d200a33befa0da637e5942cb1d1d3765130e1ec5f57be8d5
4
+ data.tar.gz: 720ab9f7447d22e03099694269c6ae807e25132ee332b7ef6771cb2c8fa7ba80
5
5
  SHA512:
6
- metadata.gz: 1bc5fdb63f78606d066b65644564b02dd760c9bfba83a79e21d272b656bdacc78e53fa306c75b577d0d21c229afaa8a96a737b407b32b233fc02a2d118f5ef70
7
- data.tar.gz: fadcef5875b4a2ca0fae127458f4df2090ab029afad31d06e32cc73d039b4cf1e32931dc71fd0a2df2606c2d1e4c405c252fe19e2565f5d8c1ecf342b1b1acf2
6
+ metadata.gz: 8db96fac13956e14aadffc198c760d7767b6eae548c15eea15be554589709a4ea8f6a8b9953f778695319cb96b94a960becd2503d3d45be65552cc6a2eef7e0b
7
+ data.tar.gz: 507f3755d8235fc4107380461a106bc44bb5d9be7d7062137486298fb4db74b9ffade5719bf44359e5945a72935766cf4572d04133312182249195e603606775
data/bin/rego CHANGED
@@ -29,12 +29,17 @@ Main do
29
29
  # run a specific test whenever it, or your app, has changed
30
30
  #
31
31
  ~> rego ./test -- ruby -Itest @
32
+
33
+ # run a server, killing it gracefully whenever files change
34
+ #
35
+ ~> rego --killer -- ./dev/server
32
36
  __
33
37
 
34
38
  option('--path=path', '-p')
35
39
  option('--paths=paths')
36
40
  option('--command=command', '-c')
37
41
  option('--version', '-v')
42
+ option('--killer', '-k')
38
43
 
39
44
  def run
40
45
  if params[:version].given?
@@ -86,35 +91,78 @@ Main do
86
91
  end
87
92
 
88
93
  def loop_watching_files_and_running_commands!
89
- cmdno = '0'
94
+ @cmdno = '0'
95
+ @killer = params[:killer].given?
96
+ @pid = nil
90
97
 
91
98
  rego =
92
99
  proc do
93
100
  puts
94
- Rego.say("#=> rego.#{cmdno} @ #{Time.now.strftime('%H:%M:%S')} -> #{@pretty[:command]}", color: :yellow)
101
+ Rego.say("#=> rego.#{@cmdno} @ #{Time.now.strftime('%H:%M:%S')} -> #{@pretty[:command]}", color: :yellow)
95
102
 
96
- success = system(*@command)
97
- puts
103
+ @pid = Process.spawn(*@command)
104
+ Rego.say("#=> rego.#{@cmdno} @ #{Time.now.strftime('%H:%M:%S')} -> pid=#{@pid}", color: :cyan)
105
+ status = Process.wait(@pid)
106
+ @pid = nil
107
+
108
+ success = (@killer || (status==0))
98
109
 
99
- Rego.say("#=> rego.#{cmdno} @ #{Time.now.strftime('%H:%M:%S')} -> #{$?.exitstatus}",
100
- color: (success ? :green : :red))
101
110
  puts
111
+ Rego.say("#=> rego.#{@cmdno} @ #{Time.now.strftime('%H:%M:%S')} -> #{status}", color: (success ? :green : :red))
102
112
 
103
- cmdno.succ!
113
+ @cmdno.succ!
114
+ puts
104
115
  end
105
116
 
106
117
  listener = Listen.to(*@paths) do |_modified, _added, _removed|
118
+ if @killer && @pid
119
+ kill!(@pid)
120
+ end
121
+
107
122
  rego.call
108
123
  end
109
124
 
110
125
  begin
111
- rego.call
112
126
  listener.start
127
+ rego.call
113
128
  sleep
114
129
  rescue SignalException
115
130
  exit(0)
116
131
  end
117
132
  end
133
+
134
+ def kill!(pid)
135
+ Rego.say("#=> rego.#{@cmdno} @ #{Time.now.strftime('%H:%M:%S')} -> kill=#{@pid}", color: :magenta)
136
+
137
+ 3.times do
138
+ %w[
139
+ SIGTERM SIGINT SIGQUIT SIGKILL
140
+ ].each do |signal|
141
+ begin
142
+ Process.kill("-#{signal}", pid)
143
+ rescue Object
144
+ nil
145
+ end
146
+
147
+ sleep(0.1)
148
+
149
+ return pid if alive?(pid)
150
+
151
+ sleep(rand)
152
+ end
153
+ end
154
+
155
+ abort("failed to kill pid=#{ pid }!") if alive?(pid)
156
+ end
157
+
158
+ def alive?(pid)
159
+ begin
160
+ Process.kill(0, pid)
161
+ true
162
+ rescue Errno::ESRCH
163
+ false
164
+ end
165
+ end
118
166
  end
119
167
 
120
168
  BEGIN {
data/lib/rego/_lib.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Rego
2
- Version = '3.2.1' unless defined?(Version)
2
+ Version = '4.2.0' unless defined?(Version)
3
3
 
4
4
  def self.version
5
5
  Rego::Version
@@ -9,7 +9,7 @@ module Rego
9
9
  {
10
10
  'main' => ['main', ' ~> 6.3.0'],
11
11
  'map' => ['map', ' ~> 6.6.0'],
12
- 'listen' => ['listen', ' ~> 3.8.0']
12
+ 'listen' => ['listen', ' ~> 3.9.0']
13
13
  }
14
14
  end
15
15
 
data/rego.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "rego"
6
- spec.version = "3.2.1"
6
+ spec.version = "4.2.0"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "rego"
9
9
  spec.description = "description: rego kicks the ass"
@@ -22,7 +22,7 @@ Gem::Specification::new do |spec|
22
22
 
23
23
  spec.add_dependency(*["map", " ~> 6.6.0"])
24
24
 
25
- spec.add_dependency(*["listen", " ~> 3.8.0"])
25
+ spec.add_dependency(*["listen", " ~> 3.9.0"])
26
26
 
27
27
 
28
28
  spec.extensions.push(*[])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rego
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-09 00:00:00.000000000 Z
11
+ date: 2025-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: main
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.8.0
47
+ version: 3.9.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.8.0
54
+ version: 3.9.0
55
55
  description: 'description: rego kicks the ass'
56
56
  email: ara.t.howard@gmail.com
57
57
  executables:
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubygems_version: 3.4.1
88
+ rubygems_version: 3.5.16
89
89
  signing_key:
90
90
  specification_version: 4
91
91
  summary: rego