tools 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/aux2 +1 -6
- data/bin/tools +5 -0
- data/lib/lib/.workin-history +1 -0
- data/lib/lib/array.rb +131 -0
- data/lib/lib/cache.rb +22 -23
- data/lib/lib/config.rb +6 -5
- data/lib/lib/console.rb +18 -25
- data/lib/lib/display.rb +19 -8
- data/lib/lib/files.rb +37 -1
- data/lib/lib/hash.rb +91 -0
- data/lib/lib/log.rb +2 -6
- data/lib/lib/net.rb +20 -12
- data/lib/lib/object.rb +42 -0
- data/lib/lib/prompt.rb +1 -1
- data/lib/lib/string.rb +83 -0
- data/lib/lib/utils.rb +17 -410
- data/lib/tools.rb +8 -13
- data/lib/tools/version.rb +1 -1
- data/test/mini_array.rb +53 -0
- data/test/mini_cache.rb +28 -0
- data/test/mini_config.rb +28 -0
- data/test/mini_console.rb +20 -0
- data/test/mini_display.rb +53 -0
- data/test/mini_file.rb +64 -0
- data/test/mini_hash.rb +155 -0
- data/test/mini_log.rb +21 -0
- data/test/mini_net.rb +223 -0
- data/test/mini_object.rb +35 -0
- data/test/mini_prompt.rb +82 -0
- data/test/mini_string.rb +48 -0
- data/test/mini_utils.rb +96 -0
- data/test/run +43 -0
- data/tools.gemspec +2 -2
- metadata +56 -44
- data/test/minitest/minit-display.rb +0 -29
- data/test/minitest/minit-tools.rb +0 -67
- data/test/minitest/run +0 -9
data/lib/tools.rb
CHANGED
@@ -5,29 +5,22 @@ require 'lib/utils'
|
|
5
5
|
require 'lib/display'
|
6
6
|
require 'lib/net'
|
7
7
|
require 'lib/files'
|
8
|
+
require 'lib/string'
|
9
|
+
require 'lib/array'
|
10
|
+
require 'lib/hash'
|
11
|
+
require 'lib/object'
|
8
12
|
|
9
13
|
# Extented models
|
10
14
|
require 'lib/config'
|
11
15
|
require 'lib/log'
|
12
16
|
require 'lib/cache'
|
13
17
|
require 'lib/prompt'
|
14
|
-
|
15
|
-
# require 'lib/console'
|
18
|
+
require 'lib/console'
|
16
19
|
|
17
20
|
load __dir__ + '/files/requireds.rb'
|
18
21
|
|
19
22
|
module Tools
|
20
23
|
|
21
|
-
@@check_version = nil
|
22
|
-
|
23
|
-
def self.set_check_version param
|
24
|
-
@@check_version = param
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.get_check_version
|
28
|
-
return @@check_version
|
29
|
-
end
|
30
|
-
|
31
24
|
class Configuration
|
32
25
|
attr_accessor :console_prompt
|
33
26
|
end
|
@@ -83,7 +76,9 @@ end
|
|
83
76
|
|
84
77
|
Tools.configure do |config|
|
85
78
|
config.console_prompt = Tools::VERSION
|
86
|
-
|
79
|
+
I18n.load_path = Dir[Tools.files + '/pt-BR.yml']
|
80
|
+
I18n.locale = 'pt-BR'.to_sym
|
81
|
+
#ToolsUtil.instance
|
87
82
|
end
|
88
83
|
|
89
84
|
|
data/lib/tools/version.rb
CHANGED
data/test/mini_array.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
class ToolsModuleTest < Minitest::Test
|
2
|
+
|
3
|
+
def self.test_order
|
4
|
+
:sorted
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_hash_A_extract_first
|
8
|
+
assert_equal ['a','b','c'].extract_first, 'a'
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_hash_B_extract_first
|
12
|
+
assert_equal (['a',:color,'c'].extract_symbol :color), true
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_hash_C_extract_color
|
16
|
+
args = ['xxx', '-x', '-vvv', :yellow, '-c', '-vcv', '-v2', '-vvvvv', '-s', :json, :red, :json]
|
17
|
+
yellow = args.extract_color
|
18
|
+
color = args.extract_color
|
19
|
+
assert_equal yellow, :yellow
|
20
|
+
assert_equal color, :red
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_hash_D_extract_option
|
24
|
+
args = ['xxx', '-x', '-vvv', :yellow, ':red','-c', '-vcv', '-v2', '-vvvvv', '-s', :json, :red, :json]
|
25
|
+
yellow = args.extract_color
|
26
|
+
red1 = args.extract_color
|
27
|
+
red2 = args.extract_color
|
28
|
+
red3 = args.extract_color
|
29
|
+
x = args.extract_option '-x'
|
30
|
+
f = args.extract_option '-f'
|
31
|
+
v = args.extract_option '-v', false
|
32
|
+
assert_equal x, true
|
33
|
+
assert_equal f, false
|
34
|
+
assert_equal v, 8
|
35
|
+
assert_equal red1, :red
|
36
|
+
assert_equal red2, :red
|
37
|
+
assert_equal red3, :default
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_hash_D_extract_option_value
|
41
|
+
args = ['-o', 'um', '-o', 'dois', '--desc', 'description', '-v', '-v', '-o', 'tres', '-s', :json, :red, :json]
|
42
|
+
desc_status, desc = args.extract_option_value '--desc'
|
43
|
+
status, origin = args.extract_option_value '-o', {:multiple => true}
|
44
|
+
assert_equal desc_status, true
|
45
|
+
assert_equal desc, 'description'
|
46
|
+
assert_equal status, true
|
47
|
+
assert_equal origin, ['um','um','dois','dois','tres','tres']
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
|
data/test/mini_cache.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
class ToolsModuleTest < Minitest::Test
|
2
|
+
|
3
|
+
def self.test_order
|
4
|
+
:sorted
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_cache_A_all_operators
|
8
|
+
ToolsFiles.remove_file '/home/francisco/2018/xykotools/tools/teste-persistent.cache'
|
9
|
+
ToolsCache.create_cache_file 'tools', (File.dirname __dir__) + '/teste-persistent.cache', 60
|
10
|
+
assert_equal ToolsCache.tools_list, {}
|
11
|
+
ToolsCache.tools_set :k1, 100
|
12
|
+
assert_equal ToolsCache.tools_list, {:k1 => 100}
|
13
|
+
ToolsCache.tools_unset :k1
|
14
|
+
assert_equal ToolsCache.tools_list, {}
|
15
|
+
ToolsCache.tools_set :k2, {:i => 100, :j => 200}
|
16
|
+
ToolsCache.tools_set :k2, {:l => 100, :m => 200}
|
17
|
+
ToolsCache.tools_set :k3, []
|
18
|
+
ToolsCache.tools_set :k3, [1,2,3]
|
19
|
+
ToolsCache.tools_set :k3, [4, ['a','b']]
|
20
|
+
assert_equal (ToolsCache.tools_get :k3), [1,2,3,4,['a','b']]
|
21
|
+
assert_equal (ToolsCache.tools_get :k2), {:i => 100, :j => 200,:l => 100, :m => 200}
|
22
|
+
ToolsCache.tools_clear
|
23
|
+
assert_equal ToolsCache.tools_list, {}
|
24
|
+
ToolsFiles.remove_file '/home/francisco/2018/xykotools/tools/teste-persistent.cache'
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
end
|
data/test/mini_config.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
class ToolsModuleTest < Minitest::Test
|
2
|
+
|
3
|
+
def self.test_order
|
4
|
+
:sorted
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_log_A_all_operations
|
8
|
+
|
9
|
+
ToolsFiles.remove_file (File.dirname __dir__) + '/tools_yaml.config'
|
10
|
+
ToolsFiles.remove_file (File.dirname __dir__) + '/tools_json.config'
|
11
|
+
ToolsConfig.create_config_file 'tools_yaml', (File.dirname __dir__) +'/tools_yaml.config', :yaml, {:first_time => true}
|
12
|
+
ToolsConfig.create_config_file 'tools_json', (File.dirname __dir__) +'/tools_json.config', :json, {:first_time => true}
|
13
|
+
ToolsConfig.create_config_file 'tools_json', (File.dirname __dir__) +'/tools_json.config', :json, {:first_time => true}
|
14
|
+
ToolsConfig.load_config (File.dirname __dir__) + '/tools_yaml.config'
|
15
|
+
ToolsConfig.load_config (File.dirname __dir__) + '/tools_json.config'
|
16
|
+
|
17
|
+
ToolsConfig.insert_in_config (File.dirname __dir__) +'/tools_yaml.config', {:first_time => false,}
|
18
|
+
ToolsConfig.insert_in_config (File.dirname __dir__) +'/tools_json.config', {:first_time => false,}
|
19
|
+
|
20
|
+
ToolsConfig.change_value_in_config (File.dirname __dir__) +'/tools_yaml.config', true , :first_time
|
21
|
+
ToolsConfig.change_value_in_config (File.dirname __dir__) +'/tools_json.config', true , :first_time
|
22
|
+
|
23
|
+
ToolsFiles.remove_file (File.dirname __dir__) + '/tools_yaml.config'
|
24
|
+
ToolsFiles.remove_file (File.dirname __dir__) + '/tools_json.config'
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
class ToolsModuleTest < Minitest::Test
|
3
|
+
|
4
|
+
def self.test_order
|
5
|
+
:sorted
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
def test_console_A_run_console
|
10
|
+
mock = MiniTest::Mock.new
|
11
|
+
def mock.start *args; true; end
|
12
|
+
Prompt::Console.stub :start, mock do
|
13
|
+
assert_equal ToolsConsole.create_console.class, Array
|
14
|
+
assert_equal (ToolsConsole.exec_console ['test']), true
|
15
|
+
assert_equal (ToolsConsole.exec_console ['tes']), false
|
16
|
+
assert_equal ToolsConsole.run_console.class, Minitest::Mock
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class ToolsModuleTest < Minitest::Test
|
2
|
+
|
3
|
+
def self.test_order
|
4
|
+
:sorted
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_dislay_A
|
8
|
+
ToolsDisplay.instance
|
9
|
+
old_stdout = $stdout
|
10
|
+
captured_stdio = StringIO.new('', 'w')
|
11
|
+
$stdout = captured_stdio
|
12
|
+
ToolsDisplay.show "TEXTO VERDE", :green
|
13
|
+
$stdout = old_stdout
|
14
|
+
assert_equal "\e[0;32;49mTEXTO VERDE\n\e[0m", captured_stdio.string
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_dislay_B_sameline
|
18
|
+
ToolsDisplay.instance
|
19
|
+
old_stdout = $stdout
|
20
|
+
captured_stdio = StringIO.new('', 'w')
|
21
|
+
$stdout = captured_stdio
|
22
|
+
ToolsDisplay.show "TEXTO SAMELINE", :sameline
|
23
|
+
$stdout = old_stdout
|
24
|
+
assert_equal "\e[0;39;49mTEXTO SAMELINE\e[0m", captured_stdio.string
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_dislay_C_show_colorize
|
28
|
+
ToolsDisplay.instance
|
29
|
+
old_stdout = $stdout
|
30
|
+
captured_stdio = StringIO.new('', 'w')
|
31
|
+
$stdout = captured_stdio
|
32
|
+
ToolsDisplay.show_colorize "red".red+ " " + "white".white
|
33
|
+
$stdout = old_stdout
|
34
|
+
assert_equal "\e[0;31;49mred\e[0m \e[0;37;49mwhite\e[0m\n", captured_stdio.string
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_dislay_D_colorized
|
38
|
+
ToolsDisplay.instance
|
39
|
+
old_stdout = $stdout
|
40
|
+
captured_stdio = StringIO.new('', 'w')
|
41
|
+
$stdout = captured_stdio
|
42
|
+
ToolsDisplay.show "red".red+ " " + "white".white, :colorized
|
43
|
+
$stdout = old_stdout
|
44
|
+
assert_equal "\e[0;31;49mred\e[0m \e[0;37;49mwhite\e[0m\n", captured_stdio.string
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_dislay_E_error
|
48
|
+
result = ToolsDisplay.show []
|
49
|
+
assert_equal "Array", result
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
end
|
data/test/mini_file.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
class ToolsModuleTest < Minitest::Test
|
2
|
+
|
3
|
+
def self.test_order
|
4
|
+
:sorted
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_file_A_purge
|
8
|
+
mock = MiniTest::Mock.new
|
9
|
+
def mock.delete *args; Array; end
|
10
|
+
File.stub :delete, mock do
|
11
|
+
assert_equal (ToolsFiles.purge_files (File.dirname __dir__)+'/pkg', '*.gem', 1).class, Array
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_file_B_create_dir
|
16
|
+
mock = MiniTest::Mock.new
|
17
|
+
def mock.mkdir *args; String; end
|
18
|
+
Dir.stub :mkdir, mock do
|
19
|
+
assert_equal (ToolsFiles.create_dir (File.dirname __dir__)+'/pkg', 'minitest').class, String
|
20
|
+
assert_equal (ToolsFiles.create_dir (File.dirname __dir__)+'/pkg2', 'minitest').class, String
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_file_C_create_file
|
25
|
+
mock = MiniTest::Mock.new
|
26
|
+
def mock.open *args; String; end
|
27
|
+
File.stub :open, mock do
|
28
|
+
assert_equal (ToolsFiles.create_file (File.dirname __dir__)+'/pkg', 'minitest', 'minitest').class, String
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_file_D_load_file
|
33
|
+
file = (File.dirname __dir__) + '/TODO.txt'
|
34
|
+
result = ToolsFiles.load_file file
|
35
|
+
assert_equal result.class, File
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_file_F_load_file
|
39
|
+
mock = MiniTest::Mock.new
|
40
|
+
mock.expect :exists?, true
|
41
|
+
mock.expect :open, true
|
42
|
+
file = (File.dirname __dir__) + '/TODO'
|
43
|
+
assert_nil (ToolsFiles.load_file file), nil
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_file_G_open_file
|
47
|
+
mock = MiniTest::Mock.new
|
48
|
+
def mock.open *args; true; end
|
49
|
+
TTY::Editor.stub :open, mock do
|
50
|
+
assert_equal (ToolsFiles.open_file '').class, Minitest::Mock
|
51
|
+
assert_equal (ToolsFiles.open_file '', :vi).class, Minitest::Mock
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
def test_file_H_remove_file
|
57
|
+
mock = MiniTest::Mock.new
|
58
|
+
def mock.remove_file *args; String; end
|
59
|
+
FileUtils.stub :remove_file, mock do
|
60
|
+
assert_equal (ToolsFiles.remove_file (File.dirname __dir__)+'/pkg').class, Minitest::Mock
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
data/test/mini_hash.rb
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
class ToolsModuleTest < Minitest::Test
|
2
|
+
|
3
|
+
def self.test_order
|
4
|
+
:sorted
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_hash_A_tools
|
8
|
+
data = {
|
9
|
+
'k1' => 100,
|
10
|
+
'k2' => 'v2',
|
11
|
+
:k3 => {
|
12
|
+
:a => 100,
|
13
|
+
},
|
14
|
+
}
|
15
|
+
result = {
|
16
|
+
"k1" => 100,
|
17
|
+
"k2" => "v2",
|
18
|
+
:k3 => {
|
19
|
+
:a => 100,
|
20
|
+
:k2 => 200
|
21
|
+
},
|
22
|
+
:k1 => 100,
|
23
|
+
}
|
24
|
+
data.rmerge!( {:k1 => 100} )
|
25
|
+
data.rmerge!( {:k3 => {:k2 => 200}})
|
26
|
+
assert_equal data, result
|
27
|
+
|
28
|
+
result_merge = {
|
29
|
+
"k1" => 100,
|
30
|
+
"k2" => "v2",
|
31
|
+
:k3 => {
|
32
|
+
:a => 100,
|
33
|
+
:k2 => 200
|
34
|
+
},
|
35
|
+
:k1 => 100
|
36
|
+
}
|
37
|
+
|
38
|
+
hash = data.rmerge( {:k1 => 100} )
|
39
|
+
assert_equal hash, result_merge
|
40
|
+
|
41
|
+
x = {:k1 => 100 , :k2 => { :k3 => {:a => 100}}}
|
42
|
+
assert_equal x.rblank, {:k2 => {:k3 => {}}}
|
43
|
+
assert_equal x.rblank!, {:k2 => {:k3 => {}}}
|
44
|
+
|
45
|
+
x = {:k1 => 100 , :k2 => { :k3 => {:a => 100}}}
|
46
|
+
y = x.rblank
|
47
|
+
diff = x.diff y
|
48
|
+
assert_equal diff, {:k1=>[100, nil], :k2=>{:k3=>{:a=>[100, nil]}}}
|
49
|
+
|
50
|
+
|
51
|
+
x = {:k1 => 100 , :k2 => { :k3 => {:a => 100}}}
|
52
|
+
y = x.nested_set [:k2,:k3,:a], 200
|
53
|
+
assert_equal x, {:k1 => 100 , :k2 => { :k3 => {:a => 200}}}
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
# module HashRecursiveBlank
|
66
|
+
# def rblank
|
67
|
+
# r = {}
|
68
|
+
# each_pair do |key, val|
|
69
|
+
# r[key] = val.rblank if val.is_a?(Hash)
|
70
|
+
# end
|
71
|
+
# return r.keep_if { |key, val| val.is_a?(Hash) }
|
72
|
+
# end
|
73
|
+
|
74
|
+
# def rblank!
|
75
|
+
# each_pair do |key, val|
|
76
|
+
# self[key] = val.rblank! if val.is_a?(Hash)
|
77
|
+
# end
|
78
|
+
# return keep_if { |key, val| val.is_a?(Hash) }
|
79
|
+
# end
|
80
|
+
# end
|
81
|
+
|
82
|
+
# module HashRecursiveMerge
|
83
|
+
# def rmerge(other_hash, concat_if_array = false)
|
84
|
+
# r = {}
|
85
|
+
# return merge(other_hash) do |key, oldval, newval|
|
86
|
+
# if oldval.is_a?(Hash)
|
87
|
+
# r[key] = oldval.rmerge(newval, concat_if_array)
|
88
|
+
# elsif oldval.is_a?(Array) and newval.is_a?(Array)
|
89
|
+
# r[key] = concat_if_array ? oldval + newval : newval
|
90
|
+
# else
|
91
|
+
# newval
|
92
|
+
# end
|
93
|
+
# end
|
94
|
+
# end
|
95
|
+
|
96
|
+
# def rmerge!(other_hash, concat_if_array = false)
|
97
|
+
# return merge!(other_hash) do |key, oldval, newval|
|
98
|
+
# if oldval.is_a?(Hash)
|
99
|
+
# oldval.rmerge!(newval, concat_if_array)
|
100
|
+
# elsif oldval.is_a?(Array) and newval.is_a?(Array)
|
101
|
+
# concat_if_array ? oldval + newval : newval
|
102
|
+
# else
|
103
|
+
# newval
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
# end
|
107
|
+
# end
|
108
|
+
|
109
|
+
# class Hash
|
110
|
+
# include HashRecursiveMerge
|
111
|
+
# include HashRecursiveBlank
|
112
|
+
|
113
|
+
# def diff(other)
|
114
|
+
# (self.keys + other.keys).uniq.inject({}) do |memo, key|
|
115
|
+
# unless self[key] == other[key]
|
116
|
+
# if self[key].kind_of?(Hash) && other[key].kind_of?(Hash)
|
117
|
+
# memo[key] = self[key].diff(other[key])
|
118
|
+
# else
|
119
|
+
# memo[key] = [self[key], other[key]]
|
120
|
+
# end
|
121
|
+
# end
|
122
|
+
# memo
|
123
|
+
# end
|
124
|
+
# end
|
125
|
+
# end
|
126
|
+
|
127
|
+
|
128
|
+
# class Hash
|
129
|
+
|
130
|
+
# # ensures nested hash from keys, and sets final key to value
|
131
|
+
# # keys: Array of Symbol|String
|
132
|
+
# # value: any
|
133
|
+
# def nested_set(keys, value)
|
134
|
+
# raise "DEBUG: nested_set keys must be an Array" unless keys.is_a?(Array)
|
135
|
+
|
136
|
+
# final_key = keys.pop
|
137
|
+
# return unless valid_key?(final_key)
|
138
|
+
# position = self
|
139
|
+
# for key in keys
|
140
|
+
# return unless valid_key?(key)
|
141
|
+
# position[key] = {} unless position[key].is_a?(Hash)
|
142
|
+
# position = position[key]
|
143
|
+
# end
|
144
|
+
# position[final_key] = value
|
145
|
+
# end
|
146
|
+
|
147
|
+
# private
|
148
|
+
|
149
|
+
# # returns true if key is valid
|
150
|
+
# def valid_key?(key)
|
151
|
+
# return true if key.is_a?(Symbol) || key.is_a?(String)
|
152
|
+
# raise "DEBUG: nested_set invalid key: #{key} (#{key.class})"
|
153
|
+
# end
|
154
|
+
|
155
|
+
# end
|