cobench 0.0.22 → 0.0.25

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: 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