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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b1faebd0b9013273d3b9943462bcd01efacde8a688e2fe94743628b3d8c249e
4
- data.tar.gz: af51abbaf1376b8cf2fadd1df32b6395609ecc237554803c562a661e365e9eb1
3
+ metadata.gz: ddf90d364454f44c6fa22c6922b4139ffeec29ae7d8e6522e71c23dcf0e175fc
4
+ data.tar.gz: '081a85a5f8e7f8afa5082a65c9cf2462884e069728a9b28de0896aace92b9a5d'
5
5
  SHA512:
6
- metadata.gz: 4374ec558bed30fff9ee2578169fa832f28668dc43ebeaab5ce3f651f97b6bb8870ba4f2cfb3cf6500ad49e7dc3a64ace2904fad23399e509e13a19b1c1306a9
7
- data.tar.gz: cd45d0a0f890212298030dc1574fe900ccd13ae6b64bf7d57bce863ec7950e65d34238a6f8dedaabab0fadf04b9bf3e1defa4b2d47912e1285c6dd0756db7c1e
6
+ metadata.gz: df0f8256b236bb56ca19e77e91b53ae1be1b909d5339f3b315b255e7f416490c7f3fec0d8443ddc7c59131475869bf75b733b29f2f52e867702bf1ee6caee061
7
+ data.tar.gz: fd1ec6a7429bafec01d07386884af758270aab9df59c10ffd6fb0192294aef814a929c577a0a13816bc06499626c3bb3523487babae9730071069a644af181d4
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rake/testtask"
3
3
 
4
+ require 'devops_helper'
5
+
4
6
  Rake::TestTask.new(:test) do |t|
5
7
  t.libs << "test"
6
8
  t.libs << "lib"
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.empty?
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
- require 'pty'
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
- exec2(type, cmd, opts, &block)
26
+ instance(type, cmd, opts, &block)
17
27
  else
18
- exec2(:basic, cmd, opts, &block)
28
+ instance(:basic, cmd, opts, &block)
19
29
  end
20
30
  end
21
31
 
22
- def exec2(type, cmd, opts = { }, &block)
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
@@ -1,6 +1,6 @@
1
1
  module Antrapol
2
2
  module ToolRack
3
- VERSION = "0.4.1"
3
+ VERSION = "0.6.1"
4
4
  end
5
5
  end
6
6
 
@@ -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
@@ -27,4 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
 
29
29
  spec.add_dependency "tlogger", "~> 0.21"
30
+
31
+ spec.add_development_dependency "devops_helper", "~> 0.1.0"
30
32
  end
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.1
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: 2020-11-03 00:00:00.000000000 Z
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.1.2
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