cobench 0.0.23 → 0.0.26

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