cobench 0.0.23 → 0.0.26

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: 604bc440cc611d58157046222985596f38e6e8d0c3fbb688d5da5674e9a9316e
4
- data.tar.gz: 34760c74e9ccc9a64015938ba9c45c169a7550c756868bff677a9fe316fe9bfe
3
+ metadata.gz: 6fbe7145f065a7c65776e187ebe08795e6bf43d96461b47da21bfc33cf241f23
4
+ data.tar.gz: 4ded5cf401303b0107f08ad06e839fdf17303c4de7aa8c7a35607a8d361d2a4b
5
5
  SHA512:
6
- metadata.gz: a25a38c04d6533792ea15d943f2c0aaf71a750a8dfc6281eefe6241810b98ecfc2999f77ce37fc38c70083dd5b84976298365d361db597df0f5fb4e05322619f
7
- data.tar.gz: 0babefa866f31ca680a86c31dbeae144d18d61cb389447a04dccfa998a2cc661a14e3a8e118c86a5835b785ed1f05885199f8167a94f952ca5aea017fce079f4
6
+ metadata.gz: 230046c4cd9da1cd3efec5720bbc7c8da1829e6eef8c8cf3e54d031f124bec8ae8c9393bacfc52a5c86dccc1dfe9cb7061950eb61d392c96f4191cc512e04552
7
+ data.tar.gz: 338a370eaaecd73ae8ed886bec1ef9971924012be9e6d87c99881ec85e1954fdd6759bb6625684c38cdf5bb21b2558a4d344e526b3f1e11fdf9344f312ea64a9
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>
data/bin/cobench CHANGED
@@ -74,6 +74,16 @@ 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
+
82
+ def actual(ms)
83
+ return ms[:actual] if ms.key?(:actual)
84
+ ms[:total]
85
+ end
86
+
77
87
  def build_xml(opts, loog)
78
88
  if opts.token?
79
89
  api = Octokit::Client.new(:access_token => opts[:token])
@@ -121,7 +131,7 @@ def build_xml(opts, loog)
121
131
  end
122
132
  end
123
133
  caps = {
124
- 'HoC' => lambda { |ms| ms['Commits'][:total] * 512 },
134
+ 'HoC' => lambda { |ms| ms['Pulls'][:total] * 1024 },
125
135
  }
126
136
  data.each do |u, ms|
127
137
  ms.map do |t, h|
@@ -148,17 +158,53 @@ def build_xml(opts, loog)
148
158
  end.inject(0, :+)
149
159
  data[u]['Score'] = { total: score }
150
160
  end
161
+ averages = {
162
+ 'HpP': {
163
+ f: lambda { |ms| div(actual(ms['HoC']), actual(ms['Pulls'])) },
164
+ title: 'HoC per Pull'
165
+ },
166
+ 'HpC': {
167
+ f: lambda { |ms| div(actual(ms['HoC']), actual(ms['Commits'])) },
168
+ title: 'HoC per Commit'
169
+ }
170
+ }
171
+ data.each do |u, ms|
172
+ averages.each do |k, a|
173
+ data[u][k] = { total: a[:f].call(ms) }
174
+ end
175
+ end
151
176
  builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
152
177
  xml.cobench(time: Time.now, days: opts[:days]) do
153
178
  xml.titles do
154
179
  data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
155
- xml.title t
180
+ xml.title do
181
+ xml.parent.set_attribute('subtitle', averages[t][:title]) if averages.key?(t)
182
+ xml.text t
183
+ end
156
184
  end
157
185
  end
158
186
  xml.weights do
159
187
  weights.each do |t, w|
160
188
  xml.w(id: t) do
161
- xml.text w
189
+ xml.text(w)
190
+ end
191
+ end
192
+ end
193
+ xml.totals do
194
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
195
+ next if t == 'Score'
196
+ next if averages.key?(t)
197
+ xml.w(id: t) do
198
+ xml.text(data.values.map { |ms| ms[t][:total] }.inject(&:+))
199
+ end
200
+ end
201
+ end
202
+ xml.averages do
203
+ data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
204
+ next if t == 'Score'
205
+ xml.w(id: t) do
206
+ vals = data.values.map { |ms| ms[t][:total] }.select { |v| v > 0 }
207
+ xml.text(div(vals.inject(&:+), vals.count))
162
208
  end
163
209
  end
164
210
  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.23'.freeze
26
+ VERSION = '0.0.26'.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.23
4
+ version: 0.0.26
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-31 00:00:00.000000000 Z
11
+ date: 2022-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace