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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e976dbea0f65aaafda38f95d4ae09824a98b3286f92b36b56e8caa2bd1bc342
4
- data.tar.gz: 985e060c28df014cdfdf507a78f5601f24918b10e405bd0879e1f6d00355cb3e
3
+ metadata.gz: 518ddfe481fa191f172644095ba791c7b07d9416bd2923beaed87555c2d13d19
4
+ data.tar.gz: e0d91b53caaa6f2f6503a659851c575d9ef89782a5b461c4d3b209775a7a9863
5
5
  SHA512:
6
- metadata.gz: 196a38ae3b58129c33713d02579ee2301888a7bec935fd5882c6ad775bdc090fcd80e563f6c072a1913c45127d5ec642fa1cfac99238ad9e44a4d29e59786fc9
7
- data.tar.gz: c4d1173f3824c72652096e94834f829cf36740885df519cbf0e4f30393ea19e7dee2895221e31a7ba26a2a6e1de10d27fb5042f147c636b0d9dc4f58ce39e8f0
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 = Antrapol::ToolRack::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 = Antrapol::ToolRack::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 = Antrapol::ToolRack::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 = Antrapol::ToolRack::Error)
38
+ def raise_error(message, error = StandardError)
39
39
  if error.nil?
40
40
  if @default_exception.nil?
41
- raise Antrapol::ToolRack::Error, message
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.difference(lalpha).length == 0)
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.difference(ualpha).length == 0
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.difference(s).length == 0)
161
- t2 = (alpha.difference(s).length == 0)
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.difference(num).length > 0)
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.difference(sym).length > 0)
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.difference(num)
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.difference(num)
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.difference(num)
282
+ sym = sym-num
283
283
 
284
284
  t1 = ((s & lalpha).length > 0)
285
285
  t2 = ((s & ualpha).length > 0)
@@ -1,6 +1,6 @@
1
1
  module Antrapol
2
2
  module ToolRack
3
- VERSION = "0.10.0"
3
+ VERSION = "0.14.0"
4
4
  end
5
5
  end
6
6
 
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.6.0")
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", "~> 0.21"
29
+ spec.add_dependency "tlogger" #, "~> 0.21"
30
30
  spec.add_dependency "base58"
31
31
 
32
- spec.add_development_dependency "devops_helper", "~> 0.1.0"
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.10.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-09-17 00:00:00.000000000 Z
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.21'
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.21'
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.1.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.1.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.6.0
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: []