cobench 0.0.21 → 0.0.24

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: 6117bbba07444b2da4210d173981f6199005ac182482fca43aa36c04d919ef1b
4
- data.tar.gz: 38172dfd6d7cb9cb8604d051ca0cf82b53aebb89c604edf23ac1bcb12a6c5c86
3
+ metadata.gz: c88b2884af1c5f379f0ffc146188ae2b1c7ab4ffd1fa6690a1bebc1120b2f848
4
+ data.tar.gz: 4ccd4da7ea79c1f0b121c289a28def7b4decbb6b4792856f59bc0b4ca8cd87d9
5
5
  SHA512:
6
- metadata.gz: f37e7867a1359bc99291f7607ec43f3c7ced2039fb46e2cefd8b50a2a3c1aeabaef18ac095a1579cc3a1e265a5132809a567504782211f593a1b79a72d8415e4
7
- data.tar.gz: 36115b07683f34eed5ea446a455ec4ab7b8b18bd70bf27e860c281d4711ebcdf5b9221d7730da3a3b80355328585c316c1599162619d585dd9652f19d1bd5bf4
6
+ metadata.gz: 884a2cf5e5bff6d1050a94e2abc09ea4c4c96d45144a529ae7e7a9c4b86382ce8ec73841f6119a0c5a42b96896105658b1436e6204ffb99e9bf80733f49204da
7
+ data.tar.gz: 9a55303410d004305736bcafa56e61c10e323fe698f7c59b210dbb8135e9c5b21836ae9fc29057b26c31cb3761e0634f3fc94230da830ef2237598ad6a722843
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>
@@ -140,6 +159,12 @@ SOFTWARE.
140
159
  <xsl:text> days</xsl:text>
141
160
  </b>
142
161
  <xsl:text>.</xsl:text>
162
+ <br/>
163
+ <xsl:text>The XML with the data </xsl:text>
164
+ <a href="index.xml">
165
+ <xsl:text>is here</xsl:text>
166
+ </a>
167
+ <xsl:text>.</xsl:text>
143
168
  </p>
144
169
  </footer>
145
170
  </section>
@@ -147,18 +172,42 @@ SOFTWARE.
147
172
  </html>
148
173
  </xsl:template>
149
174
  <xsl:template match="cobench/titles">
150
- <thead>
151
- <tr>
152
- <th/>
153
- <th/>
154
- <xsl:for-each select="title[generate-id() = generate-id(key('titles', .)[1])]">
155
- <xsl:sort select="."/>
156
- <th class="sorter num">
157
- <xsl:value-of select="."/>
158
- </th>
159
- </xsl:for-each>
160
- </tr>
161
- </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>
162
211
  </xsl:template>
163
212
  <xsl:template match="cobench/coders">
164
213
  <tbody>
@@ -175,10 +224,12 @@ SOFTWARE.
175
224
  <xsl:text>@</xsl:text>
176
225
  <xsl:value-of select="@id"/>
177
226
  </a>
178
- <br/>
179
- <span class="subtitle">
180
- <xsl:value-of select="@details"/>
181
- </span>
227
+ <xsl:if test="@details">
228
+ <br/>
229
+ <span class="subtitle">
230
+ <xsl:value-of select="@details"/>
231
+ </span>
232
+ </xsl:if>
182
233
  </td>
183
234
  <xsl:for-each select="metrics/m">
184
235
  <xsl:sort select="@id"/>
@@ -189,13 +240,13 @@ SOFTWARE.
189
240
  <xsl:template match="m">
190
241
  <xsl:variable name="body">
191
242
  <xsl:choose>
192
- <xsl:when test="@href = ''">
193
- <xsl:value-of select="."/>
194
- </xsl:when>
195
- <xsl:otherwise>
243
+ <xsl:when test="@href">
196
244
  <a href="{@href}">
197
245
  <xsl:value-of select="."/>
198
246
  </a>
247
+ </xsl:when>
248
+ <xsl:otherwise>
249
+ <xsl:value-of select="."/>
199
250
  </xsl:otherwise>
200
251
  </xsl:choose>
201
252
  </xsl:variable>
@@ -203,11 +254,11 @@ SOFTWARE.
203
254
  <xsl:choose>
204
255
  <xsl:when test="@actual">
205
256
  <span class="firebrick">
206
- <xsl:value-of select="$body"/>
257
+ <xsl:copy-of select="$body"/>
207
258
  </span>
208
259
  </xsl:when>
209
260
  <xsl:otherwise>
210
- <xsl:value-of select="$body"/>
261
+ <xsl:copy-of select="$body"/>
211
262
  </xsl:otherwise>
212
263
  </xsl:choose>
213
264
  <xsl:if test="@actual">
data/bin/cobench CHANGED
@@ -121,7 +121,7 @@ def build_xml(opts, loog)
121
121
  end
122
122
  end
123
123
  caps = {
124
- 'HoC' => lambda { |ms| ms['Commits'][:total] * 512 },
124
+ 'HoC' => lambda { |ms| ms['Pulls'][:total] * 1024 },
125
125
  }
126
126
  data.each do |u, ms|
127
127
  ms.map do |t, h|
@@ -136,39 +136,75 @@ def build_xml(opts, loog)
136
136
  end
137
137
  weights = {
138
138
  'HoC' => 1,
139
- 'Pulls' => 200,
139
+ 'Pulls' => 250,
140
140
  'Issues' => 50,
141
141
  'Commits' => 5,
142
- 'Reviews' => 75
142
+ 'Reviews' => 150
143
143
  }
144
144
  data.each do |u, ms|
145
145
  score = ms.map do |t, h|
146
146
  raise "Unknown title '#{t}'" unless weights.key?(t)
147
147
  h[:total] * weights[t]
148
148
  end.inject(0, :+)
149
- data[u]['Score'] = { total: score, href: '' }
149
+ data[u]['Score'] = { total: score }
150
+ end
151
+ averages = {
152
+ 'HpP': {
153
+ f: lambda { |ms| ms['HoC'][:total] / ms['Pulls'][:total] },
154
+ title: 'HoC per Pull'
155
+ },
156
+ 'HpC': {
157
+ f: lambda { |ms| ms['HoC'][:total] / ms['Commits'][:total] },
158
+ title: 'HoC per Commit'
159
+ }
160
+ }
161
+ data.each do |u, ms|
162
+ averages.each do |k, a|
163
+ data[u][k] = { total: a[:f].call(ms) }
164
+ end
150
165
  end
151
166
  builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
152
167
  xml.cobench(time: Time.now, days: opts[:days]) do
153
168
  xml.titles do
154
- data.map { |_, ms| ms.keys }.flatten.each do |t|
155
- xml.title t
169
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
170
+ xml.title do
171
+ xml.parent.set_attribute('subtitle', averages[t][:title]) if averages.key?(t)
172
+ xml.text t
173
+ end
156
174
  end
157
175
  end
158
176
  xml.weights do
159
177
  weights.each do |t, w|
160
178
  xml.w(id: t) do
161
- xml.text w
179
+ xml.text(w)
180
+ end
181
+ end
182
+ end
183
+ xml.totals do
184
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
185
+ next if t == 'Score'
186
+ next if averages.key?(t)
187
+ xml.w(id: t) do
188
+ xml.text(data.values.map { |ms| ms[t][:total] }.inject(&:+))
189
+ end
190
+ end
191
+ end
192
+ xml.averages do
193
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
194
+ next if t == 'Score'
195
+ xml.w(id: t) do
196
+ vals = data.values.map { |ms| ms[t][:total] }.select { |v| v > 0 }
197
+ xml.text(vals.inject(&:+) / vals.count)
162
198
  end
163
199
  end
164
200
  end
165
201
  xml.coders do
166
202
  data.each do |u, ms|
167
203
  xml.coder(id: u) do
168
- xml.parent.set_attribute('details', api.user(u).name)
204
+ xml.parent.set_attribute('details', api.user(u).name) unless opts[:dry]
169
205
  xml.metrics do
170
206
  ms.each do |k, v|
171
- xml.m(id: k, href: v[:href]) do
207
+ xml.m(id: k) do
172
208
  xml.parent.set_attribute('actual', v[:actual]) unless v[:actual].nil?
173
209
  xml.parent.set_attribute('href', v[:href]) unless v[:href].nil?
174
210
  xml.text v[:total]
@@ -57,8 +57,7 @@ class Cobench::Commits
57
57
  },
58
58
  {
59
59
  title: 'HoC',
60
- total: hoc,
61
- href: ''
60
+ total: hoc
62
61
  }
63
62
  ]
64
63
  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.21'.freeze
26
+ VERSION = '0.0.24'.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.21
4
+ version: 0.0.24
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-29 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