rego 3.2.1 → 4.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.
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