cobench 0.0.22 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ce5d4cd4b43c34d71d56b620f57447c720e5dff7bc282876d73584e8716b458
4
- data.tar.gz: 70fa1c91c2c998c04c4789e5ba8162779c10b80abe3f9518f3638e90822b6bbb
3
+ metadata.gz: 8d819cbcfb4db70f384f27e82168b629ff4d5b1da9846edcbde2f2ebea965f86
4
+ data.tar.gz: 8fd71ec9c615bc21e6b33c6ee2b1b30d3e45f6e5c6ca3bcf64b04051861253d2
5
5
  SHA512:
6
- metadata.gz: b849b0d6e71364f0aaeede0698382d4d4dd777013d2193d068cda6a2778a7457568c59c480e1e424ad8437c0106956a534d34bb196207513bb4f58b01706a3e4
7
- data.tar.gz: 3b45652f5bb5104a0fbbbd4ba68e966184b0593f711febc21b394e1033fe4760c6793b0bfc14bcabc798908f7e97e3f22fa51d06e13da81a7ef7fabc94aaf247
6
+ metadata.gz: ebd6470d05c7883710c2d0b8197e559a9d2fb9c250b290ce6b7ba474b5363d129e67ae8a147f743324f6252d4d3d302e1acf4240cce5f2dbaca6d4397fe78b0d
7
+ data.tar.gz: c0675ef02071fb68f066e61c66184fcc4010685ce442b1345b7c9a16a40f9f187bc23428a689a4a41252dd2493df806d5eb782147c11c2c9fc1410537392f3af
data/assets/index.xsl CHANGED
@@ -67,8 +67,14 @@ SOFTWARE.
67
67
  </header>
68
68
  <article>
69
69
  <table id="metrics">
70
- <xsl:apply-templates select="cobench/titles"/>
70
+ <thead>
71
+ <xsl:apply-templates select="cobench/titles"/>
72
+ </thead>
71
73
  <xsl:apply-templates select="cobench/coders"/>
74
+ <tfoot>
75
+ <xsl:apply-templates select="cobench/totals"/>
76
+ <xsl:apply-templates select="cobench/averages"/>
77
+ </tfoot>
72
78
  </table>
73
79
  </article>
74
80
  <footer>
@@ -133,6 +139,19 @@ SOFTWARE.
133
139
  </xsl:for-each>
134
140
  <xsl:text>.</xsl:text>
135
141
  </p>
142
+ <p>
143
+ <xsl:for-each select="cobench/titles/title[@subtitle]">
144
+ <xsl:if test="position() &gt; 1">
145
+ <xsl:text>, </xsl:text>
146
+ </xsl:if>
147
+ <xsl:text>"</xsl:text>
148
+ <xsl:value-of select="."/>
149
+ <xsl:text>"</xsl:text>
150
+ <xsl:text> stands for </xsl:text>
151
+ <xsl:value-of select="@subtitle"/>
152
+ </xsl:for-each>
153
+ <xsl:text>.</xsl:text>
154
+ </p>
136
155
  <p>
137
156
  <xsl:text>The numbers you see reflect the activity of the last </xsl:text>
138
157
  <b>
@@ -153,18 +172,42 @@ SOFTWARE.
153
172
  </html>
154
173
  </xsl:template>
155
174
  <xsl:template match="cobench/titles">
156
- <thead>
157
- <tr>
158
- <th/>
159
- <th/>
160
- <xsl:for-each select="title[generate-id() = generate-id(key('titles', .)[1])]">
161
- <xsl:sort select="."/>
162
- <th class="sorter num">
163
- <xsl:value-of select="."/>
164
- </th>
165
- </xsl:for-each>
166
- </tr>
167
- </thead>
175
+ <tr>
176
+ <th/>
177
+ <th/>
178
+ <xsl:for-each select="title[generate-id() = generate-id(key('titles', .)[1])]">
179
+ <xsl:sort select="."/>
180
+ <th class="sorter num">
181
+ <xsl:value-of select="."/>
182
+ </th>
183
+ </xsl:for-each>
184
+ </tr>
185
+ </xsl:template>
186
+ <xsl:template match="cobench/totals">
187
+ <xsl:variable name="totals" select="."/>
188
+ <tr>
189
+ <td colspan="2" style="text-align:right">Total:</td>
190
+ <xsl:for-each select="/cobench/titles/title[generate-id() = generate-id(key('titles', .)[1])]">
191
+ <xsl:sort select="."/>
192
+ <xsl:variable name="t" select="."/>
193
+ <td class="num">
194
+ <xsl:value-of select="$totals/w[@id=$t]"/>
195
+ </td>
196
+ </xsl:for-each>
197
+ </tr>
198
+ </xsl:template>
199
+ <xsl:template match="cobench/averages">
200
+ <xsl:variable name="averages" select="."/>
201
+ <tr>
202
+ <td colspan="2" style="text-align:right">Average:</td>
203
+ <xsl:for-each select="/cobench/titles/title[generate-id() = generate-id(key('titles', .)[1])]">
204
+ <xsl:sort select="."/>
205
+ <xsl:variable name="t" select="."/>
206
+ <td class="num">
207
+ <xsl:value-of select="$averages/w[@id=$t]"/>
208
+ </td>
209
+ </xsl:for-each>
210
+ </tr>
168
211
  </xsl:template>
169
212
  <xsl:template match="cobench/coders">
170
213
  <tbody>
@@ -211,11 +254,11 @@ SOFTWARE.
211
254
  <xsl:choose>
212
255
  <xsl:when test="@actual">
213
256
  <span class="firebrick">
214
- <xsl:value-of select="$body"/>
257
+ <xsl:copy-of select="$body"/>
215
258
  </span>
216
259
  </xsl:when>
217
260
  <xsl:otherwise>
218
- <xsl:value-of select="$body"/>
261
+ <xsl:copy-of select="$body"/>
219
262
  </xsl:otherwise>
220
263
  </xsl:choose>
221
264
  <xsl:if test="@actual">
data/bin/cobench CHANGED
@@ -74,6 +74,11 @@ end
74
74
  Encoding.default_external = Encoding::UTF_8
75
75
  Encoding.default_internal = Encoding::UTF_8
76
76
 
77
+ def div(a, b)
78
+ return 0 if b == 0
79
+ a / b
80
+ end
81
+
77
82
  def build_xml(opts, loog)
78
83
  if opts.token?
79
84
  api = Octokit::Client.new(:access_token => opts[:token])
@@ -121,7 +126,7 @@ def build_xml(opts, loog)
121
126
  end
122
127
  end
123
128
  caps = {
124
- 'HoC' => lambda { |ms| ms['Commits'][:total] * 512 },
129
+ 'HoC' => lambda { |ms| ms['Pulls'][:total] * 1024 },
125
130
  }
126
131
  data.each do |u, ms|
127
132
  ms.map do |t, h|
@@ -148,17 +153,53 @@ def build_xml(opts, loog)
148
153
  end.inject(0, :+)
149
154
  data[u]['Score'] = { total: score }
150
155
  end
156
+ averages = {
157
+ 'HpP': {
158
+ f: lambda { |ms| div(ms['HoC'][:total], ms['Pulls'][:total]) },
159
+ title: 'HoC per Pull'
160
+ },
161
+ 'HpC': {
162
+ f: lambda { |ms| div(ms['HoC'][:total], ms['Commits'][:total]) },
163
+ title: 'HoC per Commit'
164
+ }
165
+ }
166
+ data.each do |u, ms|
167
+ averages.each do |k, a|
168
+ data[u][k] = { total: a[:f].call(ms) }
169
+ end
170
+ end
151
171
  builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
152
172
  xml.cobench(time: Time.now, days: opts[:days]) do
153
173
  xml.titles do
154
174
  data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
155
- xml.title t
175
+ xml.title do
176
+ xml.parent.set_attribute('subtitle', averages[t][:title]) if averages.key?(t)
177
+ xml.text t
178
+ end
156
179
  end
157
180
  end
158
181
  xml.weights do
159
182
  weights.each do |t, w|
160
183
  xml.w(id: t) do
161
- xml.text w
184
+ xml.text(w)
185
+ end
186
+ end
187
+ end
188
+ xml.totals do
189
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
190
+ next if t == 'Score'
191
+ next if averages.key?(t)
192
+ xml.w(id: t) do
193
+ xml.text(data.values.map { |ms| ms[t][:total] }.inject(&:+))
194
+ end
195
+ end
196
+ end
197
+ xml.averages do
198
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
199
+ next if t == 'Score'
200
+ xml.w(id: t) do
201
+ vals = data.values.map { |ms| ms[t][:total] }.select { |v| v > 0 }
202
+ xml.text(div(vals.inject(&:+), vals.count))
162
203
  end
163
204
  end
164
205
  end
@@ -23,5 +23,5 @@
23
23
  # Copyright:: Copyright (c) 2022 Yegor Bugayenko
24
24
  # License:: MIT
25
25
  module Cobench
26
- VERSION = '0.0.22'.freeze
26
+ VERSION = '0.0.25'.freeze
27
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cobench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-30 00:00:00.000000000 Z
11
+ date: 2022-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace