xlogin 0.15.5 → 0.16.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/lib/xlogin.rb +4 -4
- data/lib/xlogin/factory.rb +2 -2
- data/lib/xlogin/rake_task.rb +15 -20
- data/lib/xlogin/session.rb +7 -4
- data/lib/xlogin/session_pool.rb +3 -2
- data/lib/xlogin/telnet.rb +1 -1
- data/lib/xlogin/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aae85b41321af336f469aa967987f88912d22087748c6b646adb699688c0b17f
|
4
|
+
data.tar.gz: 26dcf9ed1c173bc43d247ab1a1339c8df0586c9734ea0679f5dd5e7fd70bd83a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7eeeecc2b10c5bb0a6bbca0ba80a7b71611cb04733d59271370641930c391aa604bdd06ca96cfbbfad05b32a745d62869688a3e703330a1742f7bab5df5c59c
|
7
|
+
data.tar.gz: a27419c164f9387f8633fa7610c7507d5febd8f9ae1d1d3eb77bf2ab6b04a96133c83e40265192927432b92994c02c3c8386b1088882fc5679041aea9d6f9134
|
data/lib/xlogin.rb
CHANGED
@@ -21,14 +21,14 @@ module Xlogin
|
|
21
21
|
end
|
22
22
|
|
23
23
|
class << self
|
24
|
-
def list(*patterns)
|
25
|
-
factory.list_hostinfo(*patterns)
|
26
|
-
end
|
27
|
-
|
28
24
|
def find(*patterns)
|
29
25
|
list(*patterns).first
|
30
26
|
end
|
31
27
|
|
28
|
+
def list(*patterns)
|
29
|
+
factory.list_hostinfo(*patterns)
|
30
|
+
end
|
31
|
+
|
32
32
|
def get(args, **opts, &block)
|
33
33
|
session = case args
|
34
34
|
when Hash then factory.build(**args.merge(**opts))
|
data/lib/xlogin/factory.rb
CHANGED
@@ -26,14 +26,14 @@ module Xlogin
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def list_hostinfo(*patterns)
|
29
|
-
patterns = patterns.flat_map{ |e| e.split(/\s+/) }
|
29
|
+
patterns = patterns.compact.flat_map{ |e| e.split(/\s+/) }
|
30
30
|
return @inventory.values if patterns.empty?
|
31
31
|
|
32
32
|
values1 = patterns.map do |pattern|
|
33
33
|
values2 = pattern.split(',').map do |entry|
|
34
34
|
key, val = entry.to_s.split(':')
|
35
35
|
key, val = 'name', key if val.nil?
|
36
|
-
@inventory.values.select{ |e| File.fnmatch(val, e[key.to_sym]) }
|
36
|
+
@inventory.values.select{ |e| File.fnmatch(val, e[key.to_sym], File::FNM_EXTGLOB) }
|
37
37
|
end
|
38
38
|
values2.reduce(&:&) || []
|
39
39
|
end
|
data/lib/xlogin/rake_task.rb
CHANGED
@@ -78,41 +78,36 @@ module Xlogin
|
|
78
78
|
|
79
79
|
def run_task
|
80
80
|
buffer = StringIO.new
|
81
|
-
loggers = []
|
82
|
-
loggers << log
|
83
|
-
loggers <<
|
84
|
-
loggers << buffer
|
81
|
+
loggers = [buffer]
|
82
|
+
loggers << log if log
|
83
|
+
loggers << STDOUT if !silent && !Rake.application.options.always_multitask
|
85
84
|
|
86
85
|
session = Xlogin.get(name, log: loggers, timeout: timeout)
|
86
|
+
instance_exec(session, &@runner)
|
87
87
|
|
88
|
-
|
89
|
-
$stdout.print log_text(buffer.string) if !silent && Rake.application.options.always_multitask
|
90
|
-
|
88
|
+
print(buffer.string) if !silent && Rake.application.options.always_multitask
|
91
89
|
return true
|
92
90
|
rescue => e
|
93
91
|
RakeTask.shutdown! if fail_on_error
|
94
92
|
|
95
|
-
session.
|
96
|
-
if Rake.application.options.always_multitask
|
97
|
-
$stderr.print log_text(buffer.string + "\n").colorize(color: :red)
|
98
|
-
end
|
99
|
-
|
93
|
+
session.log_message(e.to_s.colorize(color: :red)) if session
|
94
|
+
print(buffer.string + "\n", color: :red) if Rake.application.options.always_multitask
|
100
95
|
return false
|
101
96
|
ensure
|
102
97
|
session.close rescue nil
|
103
98
|
end
|
104
99
|
|
105
|
-
def
|
106
|
-
text
|
100
|
+
def puts(text, **opt)
|
101
|
+
print(text + "\n", **opt)
|
107
102
|
end
|
108
103
|
|
109
|
-
|
110
|
-
|
111
|
-
module SessionModule
|
104
|
+
def print(text, **opt)
|
105
|
+
return if text.empty?
|
112
106
|
|
113
|
-
|
114
|
-
|
115
|
-
|
107
|
+
text = text.gsub("\r", '')
|
108
|
+
text = text.lines.map{ |line| "#{name}\t|#{line}" }.join if Rake.application.options.always_multitask
|
109
|
+
text = text.colorize(**opt)
|
110
|
+
$stdout.print(text)
|
116
111
|
end
|
117
112
|
|
118
113
|
end
|
data/lib/xlogin/session.rb
CHANGED
@@ -43,7 +43,10 @@ module Xlogin
|
|
43
43
|
|
44
44
|
super(args)
|
45
45
|
rescue => e
|
46
|
-
|
46
|
+
unless (num_try += 1) > (@config.retry || 0)
|
47
|
+
sleep 2.0 ** (num_try)
|
48
|
+
retry
|
49
|
+
end
|
47
50
|
raise e
|
48
51
|
end
|
49
52
|
end
|
@@ -81,7 +84,7 @@ module Xlogin
|
|
81
84
|
return waitfor(prompt_pattern) if args.empty?
|
82
85
|
|
83
86
|
line = super(*args) do |recv|
|
84
|
-
|
87
|
+
log_message(recv)
|
85
88
|
block.call(recv) if block
|
86
89
|
end
|
87
90
|
|
@@ -120,11 +123,11 @@ module Xlogin
|
|
120
123
|
end
|
121
124
|
end
|
122
125
|
|
123
|
-
|
124
|
-
def write_log(text)
|
126
|
+
def log_message(text)
|
125
127
|
@loggers.each{ |_, logger| logger.syswrite(text) if logger }
|
126
128
|
end
|
127
129
|
|
130
|
+
private
|
128
131
|
def build_log(log)
|
129
132
|
case log
|
130
133
|
when String
|
data/lib/xlogin/session_pool.rb
CHANGED
@@ -25,7 +25,7 @@ module Xlogin
|
|
25
25
|
session = deq
|
26
26
|
Thread.handle_interrupt(Exception => :immediate){ yield session }
|
27
27
|
ensure
|
28
|
-
enq session
|
28
|
+
enq session if session
|
29
29
|
end
|
30
30
|
|
31
31
|
def close
|
@@ -38,8 +38,9 @@ module Xlogin
|
|
38
38
|
def deq
|
39
39
|
@mutex.synchronize do
|
40
40
|
if @queue.empty? && @count < @size
|
41
|
+
session = Xlogin.get(@args, **@opts)
|
41
42
|
@count += 1
|
42
|
-
return
|
43
|
+
return session
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
data/lib/xlogin/telnet.rb
CHANGED
data/lib/xlogin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xlogin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- haccht
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-telnet
|