xlogin 0.11.11 → 0.12.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6dae2d182fa540c1ede9d1bb18eef34307a333b5f9981de501491824e576c62
4
- data.tar.gz: 5a35f8146697e899a1b406083b99b35e4ff2e5e217e8d3ec8116d230b0e80aed
3
+ metadata.gz: 6c449db3a3cf0359fc79c858d307ebfb6625fc35f6005fa4e4578463363fe786
4
+ data.tar.gz: 5514370c6d66e44e1066e0fa4e80108954750a6c7cc19062bef8eb9a462f049f
5
5
  SHA512:
6
- metadata.gz: bfba33b9fd36cb0725c4adc94ba2b300085aa115eff051694969ca3e46943fe4c8b2f2d6d653bfeb9cbd72e9c7fc8f423b23310cdfa9729c3d4c7a9dc110f0b6
7
- data.tar.gz: b1b6ef3733cd9dd2cbb8396bfd71e43b7063fdd59c605672f1b92295d43a9a0137a1eb457b9401c2599c90a695678e184a445cc10d4686eec4ebcc6bcbb462f7
6
+ metadata.gz: '08a519dde6a07cdc637a4044bd52ec46b91289fe10c2e89ba5992a405c4e99f70ee57e206cda3020583f2f9a7a7f13ca7ab6602d37b709a5a2dae99795381e7a'
7
+ data.tar.gz: 41b9b7e3827256fc796b57dbc67c2b78d8d1c63af6982297cb75542c661d1d9786170280dc4c9dc3998490bd3ff7f882ea0004b4105045f1857d3fdad0e8432f
@@ -3,6 +3,7 @@ require 'rake'
3
3
  require 'rake/tasklib'
4
4
  require 'ostruct'
5
5
  require 'stringio'
6
+ require 'colorize'
6
7
 
7
8
  module Xlogin
8
9
  class RakeTask < Rake::TaskLib
@@ -21,21 +22,6 @@ module Xlogin
21
22
  end
22
23
 
23
24
  end
24
-
25
- def printf(fp, text)
26
- time = Time.now.iso8601
27
- lines = text.lines
28
- lines.pop if lines[-1] == "\n"
29
-
30
- lines = lines.map do |line|
31
- str = time
32
- str << " #{name}" if Rake.application.options.always_multitask
33
- str << " |#{line.gsub(/^\s*[\r\n]+/, '')}"
34
- end
35
-
36
- fp.print "\n"
37
- fp.print lines.join("\n")
38
- end
39
25
  end
40
26
 
41
27
  attr_reader :name
@@ -45,7 +31,7 @@ module Xlogin
45
31
  attr_accessor :silent
46
32
  attr_accessor :fail_on_error
47
33
 
48
- @@graceful_shutdown = false
34
+ @@stopped = false
49
35
 
50
36
  def initialize(name)
51
37
  @name = name
@@ -75,12 +61,12 @@ module Xlogin
75
61
  if lock
76
62
  task(name => lock)
77
63
  file(lock) do
78
- run_task unless @@graceful_shutdown
79
- touch(lock, verbose: Rake.application.options.trace) unless @@graceful_shutdown
64
+ run_task unless @@stopped
65
+ touch(lock, verbose: Rake.application.options.trace) unless @@stopped
80
66
  end
81
67
  else
82
68
  task(name) do
83
- run_task unless @@graceful_shutdown
69
+ run_task unless @@stopped
84
70
  end
85
71
  end
86
72
  end
@@ -88,23 +74,35 @@ module Xlogin
88
74
  def run_task
89
75
  buffer = StringIO.new
90
76
 
91
- args = Hash.new
92
- args[:log] = []
93
- args[:log] << log if log
94
- args[:log] << buffer if !silent && Rake.application.options.always_multitask
95
- args[:log] << $stdout if !silent && !Rake.application.options.always_multitask
96
- args[:timeout] = timeout if timeout
77
+ logger = log ? [log] : []
78
+ logger.push $stdout if !silent && !Rake.application.options.always_multitask
79
+ logger.push buffer if !silent && Rake.application.options.always_multitask
97
80
 
98
- session = Xlogin.get(name, **args)
99
- @runner.call(session)
100
- session.close rescue nil
81
+ session = Xlogin.get(name, log: logger, timeout: timeout)
82
+ def session.comment(text, prefix: "[INFO]", **color)
83
+ color = {color: :green}.merge(**color)
101
84
 
102
- RakeTask.printf($stdout, buffer.string) if !silent && Rake.application.options.always_multitask
85
+ log("\n")
86
+ log(Time.now.iso8601.colorize(**color) + ' ') if !Rake.application.options.always_multitask
87
+ log("#{prefix} #{text}".colorize(**color))
88
+ cmd('')
89
+ end
90
+
91
+ @runner.call(session)
92
+ $stdout.print format_log(buffer.string)
103
93
  rescue => e
104
- RakeTask.printf($stderr, buffer.string) if !silent && Rake.application.options.always_multitask
105
- RakeTask.printf($stderr, "ERROR - #{e}\n")
94
+ session.comment("#{e}", prefix: "[ERROR]", color: :red)
95
+ $stderr.print format_log(buffer.string)
96
+
97
+ @@stopped = true if fail_on_error
98
+ ensure
99
+ session.close rescue nil
100
+ end
106
101
 
107
- @@graceful_shutdown = true if fail_on_error
102
+ def format_log(text)
103
+ text.lines.map do |line|
104
+ "#{Time.now.iso8601} - #{name}\t|#{line.gsub(/^\s*[\r]+/, '')}"
105
+ end.join
108
106
  end
109
107
 
110
108
  end
@@ -86,6 +86,10 @@ module Xlogin
86
86
  end
87
87
  end
88
88
 
89
+ def log(text)
90
+ @loggers.each { |_, logger| logger.syswrite(text) if logger }
91
+ end
92
+
89
93
  def enable_log(log = $stdout)
90
94
  @loggers.update(log => build_logger(log))
91
95
  if block_given?
@@ -106,7 +110,7 @@ module Xlogin
106
110
  def _waitfor(*args, &block)
107
111
  __waitfor = method(:waitfor).super_method
108
112
  line = __waitfor.call(*args) do |recv|
109
- output_log(recv)
113
+ log(recv)
110
114
  block.call(recv) if block
111
115
  end
112
116
 
@@ -119,10 +123,6 @@ module Xlogin
119
123
  return line
120
124
  end
121
125
 
122
- def output_log(text)
123
- @loggers.each { |_, logger| logger.syswrite(text) if logger }
124
- end
125
-
126
126
  def ssh_tunnel(gateway)
127
127
  gateway_uri = Addressable::URI.parse(gateway)
128
128
  case gateway_uri.scheme
data/lib/xlogin/telnet.rb CHANGED
@@ -38,8 +38,7 @@ module Xlogin
38
38
  @sock.syswrite(bs)
39
39
  when @sock
40
40
  begin
41
- bs = fh.readpartial(1024)
42
- output_log(bs)
41
+ log(fh.readpartial(1024))
43
42
  rescue Errno::EAGAIN
44
43
  retry
45
44
  end
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.11.11"
2
+ VERSION = "0.12.1"
3
3
  end
data/xlogin.gemspec CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.add_dependency "net-ssh-gateway"
37
37
  spec.add_dependency "parallel"
38
38
  spec.add_dependency "addressable"
39
+ spec.add_dependency "colorize"
39
40
 
40
41
  spec.add_development_dependency "bundler"
41
42
  spec.add_development_dependency "rake"
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.11.11
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-22 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: colorize
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement