proclib 0.2.2 → 0.2.3
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/proclib.rb +2 -0
- data/lib/proclib/commands/base.rb +5 -2
- data/lib/proclib/commands/local.rb +10 -0
- data/lib/proclib/commands/ssh.rb +10 -2
- data/lib/proclib/invocation.rb +17 -0
- data/lib/proclib/ssh_session.rb +2 -0
- data/lib/proclib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee04281f5c38f3ceddc62dbe3b808ac54bd351bc
|
4
|
+
data.tar.gz: 3ac72aa351dca2b23e726c8fc632243b04691205
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc1ab51247d14584cca686d7695d09cb6c1942fb7bf134c10e909cc242936972b63291ae0d4789c33c28fa61860acabaab68963810ba6e1484ca47e9ed808fc0
|
7
|
+
data.tar.gz: 460f4341cdcddeaf9873b075725672ca764093f65ab1566fe17813a9cc57b8ffe917ebe08075015b8564ce936f994624190e1fa389dfce37dda32ceb15d28e9d
|
data/lib/proclib.rb
CHANGED
@@ -8,6 +8,7 @@ module Proclib
|
|
8
8
|
log_to_console: false,
|
9
9
|
capture_output: true,
|
10
10
|
env: {},
|
11
|
+
stdin: nil,
|
11
12
|
on_output: nil,
|
12
13
|
cwd: nil,
|
13
14
|
ssh: nil
|
@@ -16,6 +17,7 @@ module Proclib
|
|
16
17
|
tag: tag,
|
17
18
|
env: env,
|
18
19
|
cwd: cwd,
|
20
|
+
stdin: stdin,
|
19
21
|
ssh: ssh)
|
20
22
|
|
21
23
|
executor = Executor.new(inv.commands,
|
@@ -8,13 +8,16 @@ module Proclib
|
|
8
8
|
NotYetRunning = Class.new(Error)
|
9
9
|
NotYetTerminated = Class.new(Error)
|
10
10
|
|
11
|
-
|
11
|
+
STDIN_BUF_SIZE = 1024 * 1024
|
12
12
|
|
13
|
-
|
13
|
+
attr_reader :tag, :cmdline, :env, :run_dir, :stdin
|
14
|
+
|
15
|
+
def initialize(tag: nil, cmdline:, env: {}, run_dir: nil, stdin: nil)
|
14
16
|
@env = env.map {|k,v| [k.to_s, v.to_s]}.to_h
|
15
17
|
@cmdline = cmdline
|
16
18
|
@tag = tag || cmdline[0..20]
|
17
19
|
@run_dir = run_dir
|
20
|
+
@stdin = stdin
|
18
21
|
end
|
19
22
|
|
20
23
|
def pipes
|
data/lib/proclib/commands/ssh.rb
CHANGED
@@ -15,9 +15,16 @@ module Proclib
|
|
15
15
|
def spawn
|
16
16
|
write_pipes
|
17
17
|
|
18
|
-
open_channel do |
|
19
|
-
|
18
|
+
open_channel do |channel|
|
19
|
+
channel.exec(cmdline) do |_, success|
|
20
20
|
raise SSHError, "Command Failed" unless success
|
21
|
+
|
22
|
+
if !stdin.nil?
|
23
|
+
while msg = stdin.read(STDIN_BUF_SIZE)
|
24
|
+
channel.send_data(msg)
|
25
|
+
end
|
26
|
+
channel.eof!
|
27
|
+
end
|
21
28
|
end
|
22
29
|
end
|
23
30
|
end
|
@@ -53,6 +60,7 @@ module Proclib
|
|
53
60
|
@result = data.read_long
|
54
61
|
end
|
55
62
|
|
63
|
+
|
56
64
|
yield channel
|
57
65
|
end
|
58
66
|
end
|
data/lib/proclib/invocation.rb
CHANGED
@@ -15,6 +15,7 @@ module Proclib
|
|
15
15
|
tag: nil,
|
16
16
|
env: {},
|
17
17
|
cwd: nil,
|
18
|
+
stdin: nil,
|
18
19
|
ssh: nil
|
19
20
|
)
|
20
21
|
@cmd = cmd
|
@@ -22,6 +23,7 @@ module Proclib
|
|
22
23
|
@env = env
|
23
24
|
@cwd = cwd
|
24
25
|
@ssh = ssh
|
26
|
+
@stdin = stdin
|
25
27
|
end
|
26
28
|
|
27
29
|
def commands
|
@@ -45,6 +47,7 @@ module Proclib
|
|
45
47
|
tag: @tag,
|
46
48
|
env: validated_env,
|
47
49
|
run_dir: validated_cwd,
|
50
|
+
stdin: validated_stdin,
|
48
51
|
cmdline: validated_cmd
|
49
52
|
}.tap do |args|
|
50
53
|
args[:ssh_session] = validated_ssh if !validated_ssh.nil?
|
@@ -117,5 +120,19 @@ module Proclib
|
|
117
120
|
@cmd
|
118
121
|
end
|
119
122
|
end
|
123
|
+
|
124
|
+
def validated_stdin
|
125
|
+
@validated_stdin ||= begin
|
126
|
+
return nil if @stdin.nil?
|
127
|
+
|
128
|
+
if %i(eof? read close).none? {|m| @stdin.respond_to?(m) }
|
129
|
+
raise Invalid, "Expected stdin to to be IO."
|
130
|
+
elsif !@cmd.kind_of?(String)
|
131
|
+
raise Invalid, "Stdin can not be given when running simultaneous commands."
|
132
|
+
end
|
133
|
+
|
134
|
+
@stdin
|
135
|
+
end
|
136
|
+
end
|
120
137
|
end
|
121
138
|
end
|
data/lib/proclib/ssh_session.rb
CHANGED
@@ -13,6 +13,7 @@ module Proclib
|
|
13
13
|
env: {},
|
14
14
|
on_output: nil,
|
15
15
|
cwd: nil,
|
16
|
+
stdin: nil,
|
16
17
|
ssh: nil
|
17
18
|
)
|
18
19
|
|
@@ -20,6 +21,7 @@ module Proclib
|
|
20
21
|
tag: tag,
|
21
22
|
env: env,
|
22
23
|
ssh: session,
|
24
|
+
stdin: stdin,
|
23
25
|
cwd: cwd)
|
24
26
|
|
25
27
|
executor = Executor.new(inv.commands,
|
data/lib/proclib/version.rb
CHANGED