mygegegems 0.0.2 → 0.0.3
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/mygegegems/cli.rb +31 -12
- data/lib/mygegegems/version.rb +1 -1
- data/spec/cli_spec.rb +34 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: deda87a5957026286a659350a24c2bc19a38599e
|
4
|
+
data.tar.gz: 396693b54e065d040e45b39783723334a6707622
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48d56fd754e23f7baeb419fc1006da98fa0c552d5f64fdd958786c0bbf031a598501cea08a8537f4c2228d99a9fe507441c1f682bb6da7c713e5f61739de67a3
|
7
|
+
data.tar.gz: 9e94366406bf857b57ec914a5f25c96dcf72d67ebd126ac0fb12eb9e7b23300fddabb96f1a708f7df7565bbc8decfab8514c40c75b491a72bfae43a84ffb2f31
|
data/lib/mygegegems/cli.rb
CHANGED
@@ -24,6 +24,10 @@ module Mygegegems
|
|
24
24
|
option :handle,
|
25
25
|
aliases:'-h',
|
26
26
|
desc:"Show stat of gems of a user with given handle"
|
27
|
+
option :sort,
|
28
|
+
aliases:'-s',
|
29
|
+
default:'download',
|
30
|
+
desc:"Sort a list by given title. any of 'name', 'diff' or 'download'"
|
27
31
|
def stat
|
28
32
|
if handle = options[:handle]
|
29
33
|
gems = Mygegegems.gems(handle)
|
@@ -31,7 +35,7 @@ module Mygegegems
|
|
31
35
|
border_line = "-" * 30
|
32
36
|
total = gems.inject(0) { |sum, (_, dl)| sum + dl }
|
33
37
|
num_of_gems = gems.size
|
34
|
-
body = body(gems, {}, total.to_s.size, 3)
|
38
|
+
body = body(gems, {}, total.to_s.size, 3, options[:sort])
|
35
39
|
footer = footer(total, nil, gems.size)
|
36
40
|
else
|
37
41
|
invoke(:update, [], {}) if options[:update]
|
@@ -43,7 +47,7 @@ module Mygegegems
|
|
43
47
|
space1, space2 = [total, diff_total].map { |t| t.to_s.size }
|
44
48
|
header = header(date, t_date, target)
|
45
49
|
border_line = "-" * real_size(header)
|
46
|
-
body = body(gems, diffs, space1, space2)
|
50
|
+
body = body(gems, diffs, space1, space2, options[:sort])
|
47
51
|
footer = footer(total, diff_total, num_of_gems, space1, space2)
|
48
52
|
end
|
49
53
|
|
@@ -54,21 +58,36 @@ module Mygegegems
|
|
54
58
|
puts footer
|
55
59
|
end
|
56
60
|
|
61
|
+
desc "version", "Show Mygegegems version"
|
62
|
+
def version
|
63
|
+
puts "Mygegegems #{Mygegegems::VERSION} (c) 2014 kyoendo"
|
64
|
+
end
|
65
|
+
map "-v" => :version
|
66
|
+
|
57
67
|
no_tasks do
|
58
68
|
def header(date1, date2, label)
|
59
69
|
"As of #{date1} (#{label}: \e[33m#{date2}\e[0m)"
|
60
70
|
end
|
61
71
|
|
62
|
-
def body(gems, diffs, space1, space2)
|
63
|
-
gems
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
def body(gems, diffs, space1, space2, sort)
|
73
|
+
gems.map { |name, dl|
|
74
|
+
diff = diffs && diffs[name] || -1
|
75
|
+
[dl, diff, name]
|
76
|
+
}.sort_by { |arr|
|
77
|
+
case sort.intern
|
78
|
+
when :download then -arr[0]
|
79
|
+
when :diff then -arr[1]
|
80
|
+
when :name then arr[2]
|
81
|
+
else -arr[0]
|
82
|
+
end
|
83
|
+
}.map { |dl, diff, name|
|
84
|
+
if diff >= 0
|
85
|
+
"%#{space1}d \e[33m+%#{space2}d \e[32m%s\e[0m" % [dl, diff, name]
|
86
|
+
else
|
87
|
+
none = "-".center(space2)
|
88
|
+
"%#{space1}d \e[33m#{none} \e[32m%s\e[0m" % [dl, name]
|
89
|
+
end
|
90
|
+
}
|
72
91
|
end
|
73
92
|
|
74
93
|
def footer(total, diff_total, num_of_gems, space1=0, space2=0)
|
data/lib/mygegegems/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -77,5 +77,39 @@ describe Mygegegems::CLI do
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
80
|
+
|
81
|
+
context "with sort option" do
|
82
|
+
it "sorts results by name" do
|
83
|
+
described_class.start(['stat', '--sort', 'name'])
|
84
|
+
expect($stdout.string).to eq ~<<-EOS
|
85
|
+
As of 2014-07-11 (last: \e[33m2014-07-10\e[0m)
|
86
|
+
-----------------------------------
|
87
|
+
762 \e[33m+ 2 \e[32memot\e[0m
|
88
|
+
354 \e[33m+ 14 \e[32mgh-diff\e[0m
|
89
|
+
3345 \e[33m+ 0 \e[32mlet_it_fall\e[0m
|
90
|
+
299 \e[33m+ 18 \e[32mmatreska\e[0m
|
91
|
+
297 \e[33m+ 30 \e[32mtildoc\e[0m
|
92
|
+
2225 \e[33m+100 \e[32mtogglate\e[0m
|
93
|
+
-----------------------------------
|
94
|
+
7282 \e[33m+164 \e[32m6 gems\e[0m
|
95
|
+
EOS
|
96
|
+
end
|
97
|
+
|
98
|
+
it "sorts results by diff" do
|
99
|
+
described_class.start(['stat', '--sort', 'diff'])
|
100
|
+
expect($stdout.string).to eq ~<<-EOS
|
101
|
+
As of 2014-07-11 (last: \e[33m2014-07-10\e[0m)
|
102
|
+
-----------------------------------
|
103
|
+
2225 \e[33m+100 \e[32mtogglate\e[0m
|
104
|
+
297 \e[33m+ 30 \e[32mtildoc\e[0m
|
105
|
+
299 \e[33m+ 18 \e[32mmatreska\e[0m
|
106
|
+
354 \e[33m+ 14 \e[32mgh-diff\e[0m
|
107
|
+
762 \e[33m+ 2 \e[32memot\e[0m
|
108
|
+
3345 \e[33m+ 0 \e[32mlet_it_fall\e[0m
|
109
|
+
-----------------------------------
|
110
|
+
7282 \e[33m+164 \e[32m6 gems\e[0m
|
111
|
+
EOS
|
112
|
+
end
|
113
|
+
end
|
80
114
|
end
|
81
115
|
end
|