ruby-cli-daemon 0.3.0 → 0.4.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/bin/{ruby-sli-daemon.sh → ruby-cli-daemon.sh} +4 -4
- data/lib/ruby_cli_daemon.rb +5 -3
- data/lib/ruby_cli_daemon/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdc9d0158a4c5bda15cffc7fd840f9fb19a78be1d808a7972f86526b99048ac6
|
4
|
+
data.tar.gz: 80fd1f70317d0f821cfd000debbd165c180b8308e8fb55c84bbc2eaeed0bb714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84e6f69005593546caee47feafb734c73781c74a690c233f3287b686f5adc1c29d10a517079cd735c00551351b4f8e4d42e54bb068eb3cb8501ca443f7044ff8
|
7
|
+
data.tar.gz: 814b27d01d61f5620846e7b52eb00f6d54bd1d9ce9a1d1cd66aa7e11eedb18e5c89543ca807f9a3def8a2f6ddb12b854a140a5cd2d72edace868a523ac175f8c
|
@@ -35,7 +35,7 @@ executable=$1
|
|
35
35
|
shift
|
36
36
|
|
37
37
|
# matching the `stop` pattern so everything can be killed quickly
|
38
|
-
socket=${TMPDIR}ruby_cli_daemon/$(
|
38
|
+
socket=${TMPDIR}ruby_cli_daemon/$(pwd | md5 | cut -c1-7)/${executable}
|
39
39
|
log=${TMPDIR}ruby_cli_daemon.log
|
40
40
|
|
41
41
|
# spawn new daemon if none exists
|
@@ -44,7 +44,7 @@ if [[ ! -e $socket ]]; then
|
|
44
44
|
nohup ruby -r$lib/ruby_cli_daemon.rb -e RubyCliDaemon.start\ \"$socket\",\ \"$executable\" 0<&- &>$log &
|
45
45
|
while [ ! -e $socket ]; do
|
46
46
|
sleep 0.1
|
47
|
-
kill -0 $(jobs -p) &>/dev/null || (cat $log && false) # fail fast when worker failed
|
47
|
+
kill -0 $(jobs -p) &>/dev/null || (cat $log && rm -f $log && false) # fail fast when worker failed
|
48
48
|
done
|
49
49
|
fi
|
50
50
|
|
@@ -55,8 +55,8 @@ stderr="${socket}.err"
|
|
55
55
|
rm -f $status $stdout $stderr # clear previous
|
56
56
|
touch $stdout $stderr
|
57
57
|
|
58
|
-
# send the command to the daemon
|
59
|
-
echo
|
58
|
+
# send the command and parsable env vars to the daemon
|
59
|
+
{ echo $@; awk 'BEGIN{for(v in ENVIRON) printf "--RCD-- %s %s", v, ENVIRON[v] }';} | nc -U $socket
|
60
60
|
|
61
61
|
# stream output
|
62
62
|
tail -f $stdout &
|
data/lib/ruby_cli_daemon.rb
CHANGED
@@ -9,7 +9,7 @@ module RubyCliDaemon
|
|
9
9
|
class << self
|
10
10
|
def install(path)
|
11
11
|
File.unlink(path) if File.exist?(path)
|
12
|
-
File.symlink(File.expand_path("../bin/ruby-
|
12
|
+
File.symlink(File.expand_path("../bin/ruby-cli-daemon.sh", __dir__), path)
|
13
13
|
end
|
14
14
|
|
15
15
|
def start(socket, executable)
|
@@ -18,11 +18,12 @@ module RubyCliDaemon
|
|
18
18
|
|
19
19
|
loop do
|
20
20
|
return unless (command = wait_for_command(server))
|
21
|
-
|
21
|
+
command, env = command
|
22
22
|
# execute the command in a fork
|
23
23
|
capture :STDOUT, "#{socket}.out" do
|
24
24
|
capture :STDERR, "#{socket}.err" do
|
25
25
|
_, status = Process.wait2(fork do
|
26
|
+
ENV.replace env
|
26
27
|
ARGV.replace(command) # uncovered
|
27
28
|
load path # uncovered
|
28
29
|
end)
|
@@ -83,8 +84,9 @@ module RubyCliDaemon
|
|
83
84
|
return unless IO.select([server], nil, nil, TIMEOUT)
|
84
85
|
connection = server.accept
|
85
86
|
command = connection.gets.shellsplit
|
87
|
+
env = Hash[connection.read.split("--RCD-- ")[1..-1].map { |s| s.split(/ /, 2) }]
|
86
88
|
connection.close
|
87
|
-
command
|
89
|
+
[command, env]
|
88
90
|
end
|
89
91
|
|
90
92
|
def create_socket(socket)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-cli-daemon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: michael@grosser.it
|
@@ -17,14 +17,16 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- MIT-LICENSE
|
20
|
-
- bin/ruby-
|
20
|
+
- bin/ruby-cli-daemon.sh
|
21
21
|
- lib/ruby_cli_daemon.rb
|
22
22
|
- lib/ruby_cli_daemon/version.rb
|
23
23
|
homepage: https://github.com/grosser/ruby-cli-daemon
|
24
24
|
licenses:
|
25
25
|
- MIT
|
26
26
|
metadata: {}
|
27
|
-
post_install_message:
|
27
|
+
post_install_message: |-
|
28
|
+
To finish the update, run:
|
29
|
+
ruby -rruby_cli_daemon -e "RubyCliDaemon.install '/usr/local/bin/ruby-cli-daemon'"
|
28
30
|
rdoc_options: []
|
29
31
|
require_paths:
|
30
32
|
- lib
|