toolrack 0.4.1 → 0.6.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 +4 -4
- data/Rakefile +2 -0
- data/lib/toolrack.rb +7 -22
- data/lib/toolrack/condition_utils.rb +9 -1
- data/lib/toolrack/global.rb +35 -0
- data/lib/toolrack/process_utils.rb +19 -4
- data/lib/toolrack/version.rb +1 -1
- data/process_test/pty_test.rb +74 -0
- data/toolrack.gemspec +2 -0
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddf90d364454f44c6fa22c6922b4139ffeec29ae7d8e6522e71c23dcf0e175fc
|
4
|
+
data.tar.gz: '081a85a5f8e7f8afa5082a65c9cf2462884e069728a9b28de0896aace92b9a5d'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df0f8256b236bb56ca19e77e91b53ae1be1b909d5339f3b315b255e7f416490c7f3fec0d8443ddc7c59131475869bf75b733b29f2f52e867702bf1ee6caee061
|
7
|
+
data.tar.gz: fd1ec6a7429bafec01d07386884af758270aab9df59c10ffd6fb0192294aef814a929c577a0a13816bc06499626c3bb3523487babae9730071069a644af181d4
|
data/Rakefile
CHANGED
data/lib/toolrack.rb
CHANGED
@@ -3,6 +3,9 @@ require "toolrack/version"
|
|
3
3
|
require 'tlogger'
|
4
4
|
require 'singleton'
|
5
5
|
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
require_relative 'toolrack/global'
|
6
9
|
require_relative 'toolrack/exception_utils'
|
7
10
|
require_relative 'toolrack/condition_utils'
|
8
11
|
require_relative 'toolrack/process_utils'
|
@@ -13,27 +16,9 @@ module Antrapol
|
|
13
16
|
class Error < StandardError; end
|
14
17
|
# Your code goes here...
|
15
18
|
|
16
|
-
class Logger
|
17
|
-
include Singleton
|
18
|
-
include Antrapol::ToolRack::ConditionUtils
|
19
|
-
|
20
|
-
attr_reader :glogger
|
21
|
-
def initialize
|
22
|
-
# boolean
|
23
|
-
loggerDebug = ENV['TOOLRACK_DEBUG']
|
24
|
-
logFile = ENV['TOOLRACK_LOGFILE']
|
25
|
-
maxLogNo = ENV['TOOLRACK_MAX_LOGFILE'] || 10
|
26
|
-
logFileSize = ENV['TOOLRACK_MAX_LOGFILE_SIZE'] || 10*1024*1024
|
27
|
-
|
28
|
-
if not is_empty?(loggerDebug) and loggerDebug
|
29
|
-
@glogger = Tlogger.new(STDOUT)
|
30
|
-
elsif not is_empty?(logFile)
|
31
|
-
@glogger = Tlogger.new(logFile,maxLogNo,logFileSize)
|
32
|
-
else
|
33
|
-
@glogger = Tlogger.new('toolrack.log',maxLogNo,logFileSize)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
19
|
end
|
39
20
|
end
|
21
|
+
|
22
|
+
ToolRack = Antrapol::ToolRack
|
23
|
+
|
24
|
+
|
@@ -10,7 +10,11 @@ module Antrapol
|
|
10
10
|
elsif obj.nil?
|
11
11
|
true
|
12
12
|
elsif obj.respond_to?(:empty?)
|
13
|
-
obj.
|
13
|
+
if obj.respond_to?(:strip)
|
14
|
+
obj.strip.empty?
|
15
|
+
else
|
16
|
+
obj.empty?
|
17
|
+
end
|
14
18
|
else
|
15
19
|
false
|
16
20
|
end
|
@@ -20,6 +24,10 @@ module Antrapol
|
|
20
24
|
!is_empty?(obj)
|
21
25
|
end # not empty
|
22
26
|
|
27
|
+
def is_boolean?(val)
|
28
|
+
!!val == val
|
29
|
+
end
|
30
|
+
|
23
31
|
end # ConditionUtils
|
24
32
|
end # MyToolRack
|
25
33
|
end # Antrapol
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
require 'singleton'
|
3
|
+
require_relative 'condition_utils'
|
4
|
+
|
5
|
+
module Antrapol
|
6
|
+
module ToolRack
|
7
|
+
|
8
|
+
class Logger
|
9
|
+
include Singleton
|
10
|
+
include Antrapol::ToolRack::ConditionUtils
|
11
|
+
|
12
|
+
attr_reader :glogger
|
13
|
+
def initialize
|
14
|
+
# boolean
|
15
|
+
loggerDebug = ENV['TOOLRACK_DEBUG']
|
16
|
+
logFile = ENV['TOOLRACK_LOGFILE'] || File.join(Dir.home, 'antrapol_logs','toolrack.log')
|
17
|
+
maxLogNo = ENV['TOOLRACK_MAX_LOGFILE'] || 10
|
18
|
+
logFileSize = ENV['TOOLRACK_MAX_LOGFILE_SIZE'] || 10*1024*1024
|
19
|
+
|
20
|
+
logFileDir = File.dirname(logFile)
|
21
|
+
if not File.exist?(logFileDir)
|
22
|
+
FileUtils.mkdir_p(logFileDir)
|
23
|
+
end
|
24
|
+
|
25
|
+
if not_empty?(loggerDebug) and (loggerDebug.downcase == 'true')
|
26
|
+
@glogger = Tlogger.new(STDOUT)
|
27
|
+
else
|
28
|
+
@glogger = Tlogger.new(logFile,maxLogNo,logFileSize)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
@@ -1,11 +1,21 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
require_relative 'global'
|
3
|
+
require_relative 'runtime_utils'
|
4
|
+
|
5
|
+
if Antrapol::ToolRack::RuntimeUtils.on_windows?
|
6
|
+
# pty causing "function 'openpty' not found in msvcrt.dll" in some
|
7
|
+
# windows platform. Due to patches?
|
8
|
+
Antrapol::ToolRack::Logger.instance.glogger.debug "On Windows. Not going to load gem 'pty'"
|
9
|
+
else
|
10
|
+
require 'pty'
|
11
|
+
end
|
3
12
|
require 'expect'
|
4
13
|
require 'io/console'
|
5
14
|
require 'tlogger'
|
6
15
|
require 'open3'
|
7
16
|
|
8
17
|
|
18
|
+
|
9
19
|
module Antrapol
|
10
20
|
module ToolRack
|
11
21
|
module ProcessUtils
|
@@ -13,13 +23,13 @@ module Antrapol
|
|
13
23
|
def exec(cmd, opts = { }, &block)
|
14
24
|
type = opts[:exec_type]
|
15
25
|
if not type.nil?
|
16
|
-
|
26
|
+
instance(type, cmd, opts, &block)
|
17
27
|
else
|
18
|
-
|
28
|
+
instance(:basic, cmd, opts, &block)
|
19
29
|
end
|
20
30
|
end
|
21
31
|
|
22
|
-
def
|
32
|
+
def instance(type, cmd, opts = { }, &block)
|
23
33
|
case type
|
24
34
|
when :basic
|
25
35
|
Antrapol::ToolRack::Logger.instance.glogger.debug "Basic execution"
|
@@ -79,6 +89,11 @@ module Antrapol
|
|
79
89
|
|
80
90
|
Antrapol::ToolRack::Logger.instance.glogger.debug "PTY exec command : #{cmd}"
|
81
91
|
|
92
|
+
# pty seems error running on windows + jruby
|
93
|
+
if Antrapol::ToolRack::RuntimeUtils.on_windows?
|
94
|
+
raise Exception, "You're running on Windows. There have been report that error \"function 'openpty' not found in msvcrt.dll\". Probably due to patches. For now pty_exec() shall be halted"
|
95
|
+
end
|
96
|
+
|
82
97
|
logger = opts[:logger] || Tlogger.new(STDOUT)
|
83
98
|
expect = opts[:expect] || { }
|
84
99
|
bufSize = opts[:intBufSize] || 1024000
|
data/lib/toolrack/version.rb
CHANGED
data/process_test/pty_test.rb
CHANGED
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require 'pty'
|
5
|
+
require 'expect'
|
6
|
+
|
7
|
+
#m, s = PTY.open
|
8
|
+
#r, w = IO.pipe
|
9
|
+
#
|
10
|
+
#pid = spawn("/usr/bin/openvpn --config /home/chris/.openvpn_cli/sg2-ovpn-tcp.ovpn", in: r, out: s)
|
11
|
+
#r.close
|
12
|
+
#s.close
|
13
|
+
#
|
14
|
+
#
|
15
|
+
#ret = begin
|
16
|
+
# p m.gets
|
17
|
+
# rescue Errno::EIO
|
18
|
+
# nil
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
|
22
|
+
|
23
|
+
##PTY.spawn("/usr/bin/sudo /usr/bin/openvpn --config /home/chris/.openvpn_cli/sg2-ovpn-tcp.ovpn") do |read, write, pid|
|
24
|
+
#PTY.spawn("/usr/bin/openvpn --config /home/chris/.openvpn_cli/sg2-ovpn-tcp.ovpn") do |read, write, pid|
|
25
|
+
# #read.expect(/\[sudo\] password for chris:/) { |m|
|
26
|
+
# # p m
|
27
|
+
# # puts "expect"
|
28
|
+
# # write.printf("chr1st0pher1120\n")
|
29
|
+
# #}
|
30
|
+
# #read.expect(/Username:/) { |msg|
|
31
|
+
# # puts "-- #{msg}"
|
32
|
+
# # write.printf("purevpn0s2643230\r\n")
|
33
|
+
# #}
|
34
|
+
#
|
35
|
+
# #read.expect(/no echo\)/) { |msg|
|
36
|
+
# # puts "++ #{msg}"
|
37
|
+
# # write.printf("\t@ntr@p0l.c0m\r\n")
|
38
|
+
# #}
|
39
|
+
#
|
40
|
+
# loop do
|
41
|
+
# read.expect(/\n/) { |l|
|
42
|
+
# p l
|
43
|
+
# @ln = l
|
44
|
+
# }
|
45
|
+
# break if @ln.nil?
|
46
|
+
# end
|
47
|
+
#end
|
48
|
+
|
49
|
+
read, write, pid = PTY.spawn("/usr/bin/openvpn --config /home/chris/.openvpn_cli/sg2-ovpn-tcp.ovpn")
|
50
|
+
|
51
|
+
puts "PID : #{pid}"
|
52
|
+
|
53
|
+
trap "SIGINT" do
|
54
|
+
read.close
|
55
|
+
write.close
|
56
|
+
begin
|
57
|
+
puts "Killing process"
|
58
|
+
Process.kill("HUP",pid)
|
59
|
+
puts "Kill done. Start waiting"
|
60
|
+
Process.wait(pid)
|
61
|
+
STDERR.puts "Cleanup Done!"
|
62
|
+
rescue PTY::ChildExited
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
loop do
|
67
|
+
read.expect(/\n/) do |l|
|
68
|
+
puts l
|
69
|
+
@ln = l
|
70
|
+
end
|
71
|
+
break if @ln.nil?
|
72
|
+
end
|
73
|
+
|
74
|
+
|
data/toolrack.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toolrack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tlogger
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.21'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: devops_helper
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.0
|
27
41
|
description: Just collections of utilities
|
28
42
|
email:
|
29
43
|
- chrisliaw@antrapol.com
|
@@ -42,6 +56,7 @@ files:
|
|
42
56
|
- lib/toolrack.rb
|
43
57
|
- lib/toolrack/condition_utils.rb
|
44
58
|
- lib/toolrack/exception_utils.rb
|
59
|
+
- lib/toolrack/global.rb
|
45
60
|
- lib/toolrack/process_utils.rb
|
46
61
|
- lib/toolrack/runtime_utils.rb
|
47
62
|
- lib/toolrack/utils.rb
|
@@ -71,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
86
|
- !ruby/object:Gem::Version
|
72
87
|
version: '0'
|
73
88
|
requirements: []
|
74
|
-
rubygems_version: 3.
|
89
|
+
rubygems_version: 3.2.22
|
75
90
|
signing_key:
|
76
91
|
specification_version: 4
|
77
92
|
summary: Collection of simple utilities but I find it increase clarity
|