toolrack 0.10.0 → 0.14.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 +30 -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/password_utils.rb +9 -9
- data/lib/toolrack/version.rb +1 -1
- data/lib/toolrack.rb +13 -2
- data/toolrack.gemspec +4 -3
- metadata +30 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 518ddfe481fa191f172644095ba791c7b07d9416bd2923beaed87555c2d13d19
|
4
|
+
data.tar.gz: e0d91b53caaa6f2f6503a659851c575d9ef89782a5b461c4d3b209775a7a9863
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 424084db4af22765dae792d22c6b0f47ad5836a30d883319686c04ab5296a13e71db1a4d2d85d35c0833c764e21b0d95cc2dc0c6e147e15cbfd0c08a7f694c25
|
7
|
+
data.tar.gz: 24dfcaacfde2b1423e2407c38c519b5ff0c4bb2fce1d7f497b856bd003dc61df0e25933d297716ab990d59e1a80d55d55a8a69c95a0fb5c02d835e1a013a8131
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
require 'pty'
|
3
|
+
require 'expect'
|
4
|
+
|
5
|
+
module Antrapol
|
6
|
+
module ToolRack
|
7
|
+
module CliUtils
|
8
|
+
include Antrapol::ToolRack::ConditionUtils
|
9
|
+
|
10
|
+
class CliUtilsError < StandardError; end
|
11
|
+
|
12
|
+
def which(app)
|
13
|
+
if not_empty?(app)
|
14
|
+
path = `which #{app}`
|
15
|
+
path.strip if not_empty?(path)
|
16
|
+
else
|
17
|
+
raise CliUtilsError, "Given appication to look for full path (which) is empty"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def self.included(klass)
|
23
|
+
klass.class_eval <<-END
|
24
|
+
extend Antrapol::ToolRack::CliUtils
|
25
|
+
END
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
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
|
+
|
@@ -116,7 +116,7 @@ module Antrapol
|
|
116
116
|
s = str.split("")
|
117
117
|
lalpha = ('a'..'z').to_a
|
118
118
|
|
119
|
-
(s
|
119
|
+
(s-lalpha).length == 0
|
120
120
|
end
|
121
121
|
|
122
122
|
def has_lowercase_alpha?(str)
|
@@ -134,7 +134,7 @@ module Antrapol
|
|
134
134
|
s = str.split("")
|
135
135
|
ualpha = ('A'..'Z').to_a
|
136
136
|
|
137
|
-
s
|
137
|
+
(s-ualpha).length == 0
|
138
138
|
end
|
139
139
|
|
140
140
|
def has_uppercase_alpha?(str)
|
@@ -157,8 +157,8 @@ module Antrapol
|
|
157
157
|
|
158
158
|
alpha = [lalpha, ualpha].flatten
|
159
159
|
|
160
|
-
t1 = (alpha
|
161
|
-
t2 = (alpha
|
160
|
+
t1 = (alpha-s).length == 0
|
161
|
+
t2 = (alpha-s).length == 0
|
162
162
|
|
163
163
|
t3 = (s & num).length > 0
|
164
164
|
t4 = (s & sym).length > 0
|
@@ -197,7 +197,7 @@ module Antrapol
|
|
197
197
|
s = str.split("")
|
198
198
|
num = ('0'..'9').to_a
|
199
199
|
|
200
|
-
!(s
|
200
|
+
!((s-num).length > 0)
|
201
201
|
|
202
202
|
end
|
203
203
|
|
@@ -206,7 +206,7 @@ module Antrapol
|
|
206
206
|
|
207
207
|
s = str.split("")
|
208
208
|
sym = ('!'..'?').to_a
|
209
|
-
!(s
|
209
|
+
!((s-sym).length > 0)
|
210
210
|
|
211
211
|
end
|
212
212
|
|
@@ -229,7 +229,7 @@ module Antrapol
|
|
229
229
|
ualpha = ('A'..'Z').to_a
|
230
230
|
num = ('0'..'9').to_a
|
231
231
|
sym = ('!'..'?').to_a
|
232
|
-
sym = sym
|
232
|
+
sym = sym-num
|
233
233
|
|
234
234
|
t1 = ((s & lalpha).length > 0)
|
235
235
|
t2 = ((s & ualpha).length > 0)
|
@@ -261,7 +261,7 @@ module Antrapol
|
|
261
261
|
ualpha = ('A'..'Z').to_a
|
262
262
|
num = ('0'..'9').to_a
|
263
263
|
sym = ('!'..'?').to_a
|
264
|
-
sym = sym
|
264
|
+
sym = sym-num
|
265
265
|
|
266
266
|
t1 = ((s & lalpha).length > 0)
|
267
267
|
t2 = ((s & ualpha).length > 0)
|
@@ -279,7 +279,7 @@ module Antrapol
|
|
279
279
|
ualpha = ('A'..'Z').to_a
|
280
280
|
num = ('0'..'9').to_a
|
281
281
|
sym = ('!'..'?').to_a
|
282
|
-
sym = sym
|
282
|
+
sym = sym-num
|
283
283
|
|
284
284
|
t1 = ((s & lalpha).length > 0)
|
285
285
|
t2 = ((s & ualpha).length > 0)
|
data/lib/toolrack/version.rb
CHANGED
data/lib/toolrack.rb
CHANGED
@@ -12,17 +12,24 @@ 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/hash_config'
|
16
|
+
require_relative 'toolrack/cli_utils'
|
15
17
|
|
16
18
|
module Antrapol
|
17
19
|
module ToolRack
|
18
20
|
class Error < StandardError; end
|
19
21
|
# Your code goes here...
|
20
|
-
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
25
|
+
# try to get rid of constant redefined warning
|
26
|
+
module TR
|
27
|
+
Antrapol::ToolRack
|
28
|
+
end
|
29
|
+
|
30
|
+
# aliases
|
24
31
|
ToolRack = Antrapol::ToolRack
|
25
|
-
TR = ToolRack
|
32
|
+
#TR = ToolRack
|
26
33
|
|
27
34
|
ToolRack::DataConvUtils = Antrapol::ToolRack::DataConversionUtils
|
28
35
|
TR::DataConvUtils = ToolRack::DataConvUtils
|
@@ -39,3 +46,7 @@ TR::ExpUtils = ToolRack::ExpUtils
|
|
39
46
|
ToolRack::RTUtils = ToolRack::RuntimeUtils
|
40
47
|
TR::RTUtils = ToolRack::RTUtils
|
41
48
|
|
49
|
+
TR::HashConfig = ToolRack::HashConfig
|
50
|
+
|
51
|
+
TR::CliUtils = ToolRack::CliUtils
|
52
|
+
|
data/toolrack.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.summary = %q{Collection of simple utilities but I find it increase clarity}
|
10
10
|
spec.description = %q{Just collections of utilities}
|
11
11
|
spec.homepage = "https://github.com/chrisliaw/toolrack"
|
12
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
12
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
13
13
|
|
14
14
|
#spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
15
15
|
|
@@ -26,8 +26,9 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
|
29
|
-
spec.add_dependency "tlogger"
|
29
|
+
spec.add_dependency "tlogger" #, "~> 0.21"
|
30
30
|
spec.add_dependency "base58"
|
31
31
|
|
32
|
-
spec.add_development_dependency "devops_helper"
|
32
|
+
spec.add_development_dependency "devops_helper" #, "~> 0.1.0"
|
33
|
+
spec.add_development_dependency "rspec"
|
33
34
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toolrack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.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-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tlogger
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: base58
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,16 +42,30 @@ dependencies:
|
|
42
42
|
name: devops_helper
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Just collections of utilities
|
56
70
|
email:
|
57
71
|
- chrisliaw@antrapol.com
|
@@ -69,10 +83,12 @@ files:
|
|
69
83
|
- bin/console
|
70
84
|
- bin/setup
|
71
85
|
- lib/toolrack.rb
|
86
|
+
- lib/toolrack/cli_utils.rb
|
72
87
|
- lib/toolrack/condition_utils.rb
|
73
88
|
- lib/toolrack/data_conversion_utils.rb
|
74
89
|
- lib/toolrack/exception_utils.rb
|
75
90
|
- lib/toolrack/global.rb
|
91
|
+
- lib/toolrack/hash_config.rb
|
76
92
|
- lib/toolrack/password_utils.rb
|
77
93
|
- lib/toolrack/process_utils.rb
|
78
94
|
- lib/toolrack/runtime_utils.rb
|
@@ -88,7 +104,7 @@ licenses: []
|
|
88
104
|
metadata:
|
89
105
|
homepage_uri: https://github.com/chrisliaw/toolrack
|
90
106
|
source_code_uri: https://github.com/chrisliaw/toolrack
|
91
|
-
post_install_message:
|
107
|
+
post_install_message:
|
92
108
|
rdoc_options: []
|
93
109
|
require_paths:
|
94
110
|
- lib
|
@@ -96,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
112
|
requirements:
|
97
113
|
- - ">="
|
98
114
|
- !ruby/object:Gem::Version
|
99
|
-
version: 2.
|
115
|
+
version: 2.3.0
|
100
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
117
|
requirements:
|
102
118
|
- - ">="
|
@@ -104,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
120
|
version: '0'
|
105
121
|
requirements: []
|
106
122
|
rubygems_version: 3.2.22
|
107
|
-
signing_key:
|
123
|
+
signing_key:
|
108
124
|
specification_version: 4
|
109
125
|
summary: Collection of simple utilities but I find it increase clarity
|
110
126
|
test_files: []
|