toolrack 0.12.0 → 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/toolrack/cli_utils.rb +28 -0
- data/lib/toolrack/condition_utils.rb +6 -0
- data/lib/toolrack/exception_utils.rb +5 -5
- data/lib/toolrack/hash_config.rb +115 -0
- data/lib/toolrack/null_output.rb +22 -0
- data/lib/toolrack/version.rb +1 -1
- data/lib/toolrack/version_utils.rb +47 -0
- data/lib/toolrack.rb +15 -2
- metadata +9 -6
- data/lib/toolrack/mixin_helper.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc4910a1f5cea30a6abb8a4327b82587249209a8cce6830aa9e1df7e2bdf32ff
|
4
|
+
data.tar.gz: 41d80a9716fff1a2dd1ff12ec4eb1e03496bbdc709c757a54f80c767c7c61eb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bc935dac9779c3d705228b289fb4c3c114ca9b52c1bb7d6713c4950380b3158cc4c4c9b09b96c0c86e59dc476aa91a30b0e5503acd71fd66051f9198db5fc49
|
7
|
+
data.tar.gz: fee94264c22adc4bf922c6fbef169e816c83ae72433e8f90ae060e05c5f52715054b23ffbb79d1bd29959084cf17e8e4afc9ab63bb8e8031b2fd91472feae6b3
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Antrapol
|
4
|
+
module ToolRack
|
5
|
+
module CliUtils
|
6
|
+
include Antrapol::ToolRack::ConditionUtils
|
7
|
+
|
8
|
+
class CliUtilsError < StandardError; end
|
9
|
+
|
10
|
+
def which(app)
|
11
|
+
if not_empty?(app)
|
12
|
+
path = `which #{app}`
|
13
|
+
path.strip if not_empty?(path)
|
14
|
+
else
|
15
|
+
raise CliUtilsError, "Given appication to look for full path (which) is empty"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def self.included(klass)
|
21
|
+
klass.class_eval <<-END
|
22
|
+
extend Antrapol::ToolRack::CliUtils
|
23
|
+
END
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -48,6 +48,12 @@ module Antrapol
|
|
48
48
|
end
|
49
49
|
alias_method :is_str_bool?, :is_string_boolean?
|
50
50
|
|
51
|
+
def self.included(klass)
|
52
|
+
klass.class_eval <<-END
|
53
|
+
extend Antrapol::ToolRack::ConditionUtils
|
54
|
+
END
|
55
|
+
end
|
56
|
+
|
51
57
|
end # ConditionUtils
|
52
58
|
end # MyToolRack
|
53
59
|
end # Antrapol
|
@@ -11,7 +11,7 @@ module Antrapol
|
|
11
11
|
# val - variable/object that shall be tested for emptiness
|
12
12
|
# message - message to be thrown if it is true
|
13
13
|
# error - exception object to be thrown
|
14
|
-
def raise_if_empty(val, message, error =
|
14
|
+
def raise_if_empty(val, message, error = StandardError)
|
15
15
|
raise_error(message,error) if is_empty?(val)
|
16
16
|
end # raise_if_empty
|
17
17
|
alias_method :raise_if_empty?, :raise_if_empty
|
@@ -19,7 +19,7 @@ module Antrapol
|
|
19
19
|
#
|
20
20
|
# raise_if_false
|
21
21
|
#
|
22
|
-
def raise_if_false(bool, message, error =
|
22
|
+
def raise_if_false(bool, message, error = StandardError)
|
23
23
|
if not bool
|
24
24
|
raise_error(message,error)
|
25
25
|
end
|
@@ -29,16 +29,16 @@ module Antrapol
|
|
29
29
|
#
|
30
30
|
# raise_if_true
|
31
31
|
#
|
32
|
-
def raise_if_true(bool, message, error =
|
32
|
+
def raise_if_true(bool, message, error = StandardError)
|
33
33
|
raise_if_false(!bool, message, error)
|
34
34
|
end # raise_if_true
|
35
35
|
alias_method :raise_if_true?, :raise_if_true
|
36
36
|
|
37
37
|
protected
|
38
|
-
def raise_error(message, error =
|
38
|
+
def raise_error(message, error = StandardError)
|
39
39
|
if error.nil?
|
40
40
|
if @default_exception.nil?
|
41
|
-
raise
|
41
|
+
raise StandardError, message
|
42
42
|
else
|
43
43
|
raise @default_exception, message
|
44
44
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
module Antrapol
|
5
|
+
module ToolRack
|
6
|
+
module HashConfig
|
7
|
+
include ConditionUtils
|
8
|
+
|
9
|
+
class HashConfigError < StandardError; end
|
10
|
+
|
11
|
+
def hcdeli=(deli)
|
12
|
+
@hcdeli = deli
|
13
|
+
end
|
14
|
+
def hcdeli
|
15
|
+
if is_empty?(@hcdeli)
|
16
|
+
@hcdeli = "."
|
17
|
+
end
|
18
|
+
@hcdeli
|
19
|
+
end
|
20
|
+
|
21
|
+
def hcset(key, value)
|
22
|
+
raise HashConfigError, "Nil key is not supported" if is_empty?(key)
|
23
|
+
|
24
|
+
keys = transform_keys(key)
|
25
|
+
root = hcConf
|
26
|
+
keys.each do |k|
|
27
|
+
if root.is_a?(Hash)
|
28
|
+
if not root.keys.include?(k)
|
29
|
+
root[k] = { }
|
30
|
+
end
|
31
|
+
|
32
|
+
if k == keys[-1]
|
33
|
+
root[k] = value
|
34
|
+
else
|
35
|
+
root = root[k]
|
36
|
+
end
|
37
|
+
|
38
|
+
else
|
39
|
+
raise HashConfigError, "The key '#{k}' currently not tie to a hash. It is an #{root.class} object of value '#{root}'. There is no way to add another value to key '#{key}'. Try to change it to Hash object instead."
|
40
|
+
end
|
41
|
+
end
|
42
|
+
root
|
43
|
+
end
|
44
|
+
|
45
|
+
def hcget(key, defVal = nil)
|
46
|
+
if key.nil?
|
47
|
+
return nil
|
48
|
+
else
|
49
|
+
keys = transform_keys(key)
|
50
|
+
node = hcConf
|
51
|
+
keys.each do |k|
|
52
|
+
if node.keys.include?(k)
|
53
|
+
node = node[k]
|
54
|
+
else
|
55
|
+
node = nil
|
56
|
+
break
|
57
|
+
end
|
58
|
+
end
|
59
|
+
node.nil? ? defVal : node
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def hcinclude?(key)
|
64
|
+
if key.nil?
|
65
|
+
return false
|
66
|
+
else
|
67
|
+
keys = transform_keys(key)
|
68
|
+
node = hcConf
|
69
|
+
keys.each do |k|
|
70
|
+
if node.is_a?(Hash)
|
71
|
+
if node.keys.include?(k)
|
72
|
+
node = node[k]
|
73
|
+
else
|
74
|
+
node = nil
|
75
|
+
break
|
76
|
+
end
|
77
|
+
else
|
78
|
+
node = nil
|
79
|
+
end
|
80
|
+
end
|
81
|
+
not node.nil?
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
def split_key(key)
|
87
|
+
if not_empty?(key)
|
88
|
+
key.split(hcdeli)
|
89
|
+
else
|
90
|
+
[key]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def transform_keys(key)
|
95
|
+
case key
|
96
|
+
when String
|
97
|
+
split_key(key)
|
98
|
+
when Array
|
99
|
+
key
|
100
|
+
else
|
101
|
+
[key]
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def hcConf
|
106
|
+
if @hcConf.nil?
|
107
|
+
@hcConf = { }
|
108
|
+
end
|
109
|
+
@hcConf
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Antrapol
|
4
|
+
module ToolRack
|
5
|
+
class NullOutput
|
6
|
+
|
7
|
+
def method_missing(mtd, *args, &block)
|
8
|
+
# sink-holed all methods call
|
9
|
+
logger.tdebug :nullOut, "#{mtd} / #{args} / #{block ? "with block" : "no block"}"
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def logger
|
14
|
+
if @logger.nil?
|
15
|
+
@logger = Tlogger.new
|
16
|
+
end
|
17
|
+
@logger
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/toolrack/version.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
|
2
|
+
require_relative 'condition_utils'
|
3
|
+
|
4
|
+
module Antrapol
|
5
|
+
module ToolRack
|
6
|
+
module VersionUtils
|
7
|
+
include Antrapol::ToolRack::ConditionUtils
|
8
|
+
|
9
|
+
class VersionUtilsError < StandardError; end
|
10
|
+
|
11
|
+
def is_version_equal?(*args)
|
12
|
+
res = true
|
13
|
+
target = Gem::Version.new(args.first)
|
14
|
+
args.each do |a|
|
15
|
+
subj = Gem::Version.new(a)
|
16
|
+
res = (subj == target)
|
17
|
+
break if not res
|
18
|
+
target = subj
|
19
|
+
end
|
20
|
+
|
21
|
+
res
|
22
|
+
end
|
23
|
+
|
24
|
+
def possible_versions(ver)
|
25
|
+
raise VersionUtilsError, "Given version to extrapolate is empty" if is_empty?(ver)
|
26
|
+
vv = ver.to_s.split('.')
|
27
|
+
tv = vv.clone
|
28
|
+
res = []
|
29
|
+
cnt = 0
|
30
|
+
(0...vv.length).each do |i|
|
31
|
+
tv = vv.clone
|
32
|
+
tv[i] = tv[i].to_i+1
|
33
|
+
|
34
|
+
j = i
|
35
|
+
loop do
|
36
|
+
break if j >= (vv.length-1)
|
37
|
+
j += 1
|
38
|
+
tv[j] = 0
|
39
|
+
end
|
40
|
+
res << tv.join(".")
|
41
|
+
end
|
42
|
+
res
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/toolrack.rb
CHANGED
@@ -12,7 +12,10 @@ require_relative 'toolrack/process_utils'
|
|
12
12
|
require_relative 'toolrack/runtime_utils'
|
13
13
|
require_relative 'toolrack/data_conversion_utils'
|
14
14
|
require_relative 'toolrack/password_utils'
|
15
|
-
require_relative 'toolrack/
|
15
|
+
require_relative 'toolrack/hash_config'
|
16
|
+
require_relative 'toolrack/cli_utils'
|
17
|
+
require_relative 'toolrack/null_output'
|
18
|
+
require_relative 'toolrack/version_utils'
|
16
19
|
|
17
20
|
module Antrapol
|
18
21
|
module ToolRack
|
@@ -26,6 +29,7 @@ module TR
|
|
26
29
|
Antrapol::ToolRack
|
27
30
|
end
|
28
31
|
|
32
|
+
# aliases
|
29
33
|
ToolRack = Antrapol::ToolRack
|
30
34
|
#TR = ToolRack
|
31
35
|
|
@@ -35,6 +39,8 @@ TR::DataConvUtils = ToolRack::DataConvUtils
|
|
35
39
|
ToolRack::CondUtils = ToolRack::ConditionUtils
|
36
40
|
TR::CondUtils = ToolRack::ConditionUtils
|
37
41
|
|
42
|
+
TR::ProcessUtils = ToolRack::ProcessUtils
|
43
|
+
|
38
44
|
ToolRack::PassUtils = ToolRack::PasswordUtils
|
39
45
|
TR::PassUtils = ToolRack::PasswordUtils
|
40
46
|
|
@@ -44,5 +50,12 @@ TR::ExpUtils = ToolRack::ExpUtils
|
|
44
50
|
ToolRack::RTUtils = ToolRack::RuntimeUtils
|
45
51
|
TR::RTUtils = ToolRack::RTUtils
|
46
52
|
|
47
|
-
TR::
|
53
|
+
TR::HashConfig = ToolRack::HashConfig
|
54
|
+
|
55
|
+
TR::CliUtils = ToolRack::CliUtils
|
56
|
+
|
57
|
+
TR::NullOut = ToolRack::NullOutput
|
58
|
+
|
59
|
+
TR::VerUtils = ToolRack::VersionUtils
|
60
|
+
TR::VUtils = TR::VerUtils
|
48
61
|
|
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.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tlogger
|
@@ -83,16 +83,19 @@ files:
|
|
83
83
|
- bin/console
|
84
84
|
- bin/setup
|
85
85
|
- lib/toolrack.rb
|
86
|
+
- lib/toolrack/cli_utils.rb
|
86
87
|
- lib/toolrack/condition_utils.rb
|
87
88
|
- lib/toolrack/data_conversion_utils.rb
|
88
89
|
- lib/toolrack/exception_utils.rb
|
89
90
|
- lib/toolrack/global.rb
|
90
|
-
- lib/toolrack/
|
91
|
+
- lib/toolrack/hash_config.rb
|
92
|
+
- lib/toolrack/null_output.rb
|
91
93
|
- lib/toolrack/password_utils.rb
|
92
94
|
- lib/toolrack/process_utils.rb
|
93
95
|
- lib/toolrack/runtime_utils.rb
|
94
96
|
- lib/toolrack/utils.rb
|
95
97
|
- lib/toolrack/version.rb
|
98
|
+
- lib/toolrack/version_utils.rb
|
96
99
|
- process_test/backtick_test.rb
|
97
100
|
- process_test/pty_test.rb
|
98
101
|
- process_test/shell_test.rb
|
@@ -103,7 +106,7 @@ licenses: []
|
|
103
106
|
metadata:
|
104
107
|
homepage_uri: https://github.com/chrisliaw/toolrack
|
105
108
|
source_code_uri: https://github.com/chrisliaw/toolrack
|
106
|
-
post_install_message:
|
109
|
+
post_install_message:
|
107
110
|
rdoc_options: []
|
108
111
|
require_paths:
|
109
112
|
- lib
|
@@ -119,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
122
|
version: '0'
|
120
123
|
requirements: []
|
121
124
|
rubygems_version: 3.2.22
|
122
|
-
signing_key:
|
125
|
+
signing_key:
|
123
126
|
specification_version: 4
|
124
127
|
summary: Collection of simple utilities but I find it increase clarity
|
125
128
|
test_files: []
|
@@ -1,27 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Antrapol
|
4
|
-
module ToolRack
|
5
|
-
module MixinHelper
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
def mixin(cls)
|
9
|
-
self.class_eval "include #{cls}"
|
10
|
-
end
|
11
|
-
|
12
|
-
def class_method(&block)
|
13
|
-
class_eval <<-END
|
14
|
-
module ClassMethods
|
15
|
-
end
|
16
|
-
END
|
17
|
-
ClassMethods.class_eval(&block)
|
18
|
-
end
|
19
|
-
end # module ClassMethods
|
20
|
-
|
21
|
-
def self.included(klass)
|
22
|
-
klass.extend(ClassMethods)
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|