tree_uzuki 0.7.2 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/tree_uzuki +2 -2
- data/bin/tree_uzuki_m +27 -0
- data/lib/tree/scanner.rb +21 -1
- data/lib/tree/tree_render.rb +4 -5
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c188b2ac037a1a13b0958a7e8db1747d616d40adeee138f86d373c6c0c1e96d
|
4
|
+
data.tar.gz: 61ebae945f37f5b423ca715d65385ba95b5504c52085d334808b9d933c372812
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ab2f07d981bb4100a7fa1ab3d815e26f0ca83896783866fdf4d17de3037b142523783e29a70c0fe328b8de6e99a757d28bf2c0fd909fce20dfa748ced5ece9c
|
7
|
+
data.tar.gz: 1e6ce79b87c40a11123c7a95535316accc8df00561ce595fb9a9e6bc079f14073d60e4edf519985e8dd830c46a472ef4ccab11377ca2f6ceae7d11db1b6ca2b3
|
data/bin/tree_uzuki
CHANGED
data/bin/tree_uzuki_m
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require 'tree'
|
6
|
+
|
7
|
+
if ARGV.empty?
|
8
|
+
tree = Tree.new
|
9
|
+
tree.run
|
10
|
+
path_array, directories, files, tree_data, root = tree.run_results
|
11
|
+
tree_data, root, files, directories = Scanner.new.scan_multithread(path_array,
|
12
|
+
directories,
|
13
|
+
files,
|
14
|
+
tree_data,
|
15
|
+
root)
|
16
|
+
TreeRender.new.render(tree_data, root, files, directories)
|
17
|
+
else
|
18
|
+
tree = Tree.new(ARGV[0])
|
19
|
+
tree.run
|
20
|
+
path_array, directories, files, tree_data, root = tree.run_results
|
21
|
+
tree_data, root, files, directories = Scanner.new.scan_multithread(path_array,
|
22
|
+
directories,
|
23
|
+
files,
|
24
|
+
tree_data,
|
25
|
+
root)
|
26
|
+
TreeRender.new.render(tree_data, root, files, directories)
|
27
|
+
end
|
data/lib/tree/scanner.rb
CHANGED
@@ -24,9 +24,29 @@ class Scanner
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
if folders_arr.empty?
|
27
|
-
|
27
|
+
[tree_data, root, files, directories]
|
28
28
|
else
|
29
29
|
scan(folders_arr, directories, files, tree_data, root)
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
def scan_multithread(path_array, directories, files, tree_data, root)
|
34
|
+
threads = []
|
35
|
+
path_array.each do |n|
|
36
|
+
threads << Thread.new do
|
37
|
+
n.find do |v|
|
38
|
+
next if v == n
|
39
|
+
|
40
|
+
tree_data << v
|
41
|
+
if v.file?
|
42
|
+
files += 1
|
43
|
+
else
|
44
|
+
directories += 1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
threads.each(&:join)
|
50
|
+
[tree_data, root, files, directories]
|
51
|
+
end
|
32
52
|
end
|
data/lib/tree/tree_render.rb
CHANGED
@@ -13,11 +13,8 @@ class TreeRender
|
|
13
13
|
turn = '└── '
|
14
14
|
space = ' '
|
15
15
|
tree_data.sort!
|
16
|
-
i = tree_data.length
|
17
|
-
|
18
|
-
i -= 1
|
19
|
-
break if i == -1
|
20
|
-
|
16
|
+
i = tree_data.length - 1
|
17
|
+
while i != -1
|
21
18
|
leaf_level = tree_data[i].to_s.count('/') - root.to_s.count('/')
|
22
19
|
@final_hash[i] = []
|
23
20
|
if leaf_level == 1
|
@@ -46,10 +43,12 @@ class TreeRender
|
|
46
43
|
@final_hash[i][index] = turn
|
47
44
|
end
|
48
45
|
end
|
46
|
+
i -= 1
|
49
47
|
end
|
50
48
|
puts root
|
51
49
|
@final_hash = @final_hash.each.sort_by { |k, _| k }
|
52
50
|
@final_hash.each { |_, v| puts v.join }
|
51
|
+
puts
|
53
52
|
puts "#{files} files, #{directories} directories"
|
54
53
|
end
|
55
54
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tree_uzuki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sunset Uzuki
|
@@ -14,10 +14,12 @@ description: Directory tree
|
|
14
14
|
email: 10seansov@gmail.com
|
15
15
|
executables:
|
16
16
|
- tree_uzuki
|
17
|
+
- tree_uzuki_m
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
20
21
|
- bin/tree_uzuki
|
22
|
+
- bin/tree_uzuki_m
|
21
23
|
- lib/tree.rb
|
22
24
|
- lib/tree/scanner.rb
|
23
25
|
- lib/tree/tree_render.rb
|