toolrack 0.4.1 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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