cobench 0.0.11 → 0.0.14

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: 106c637350232c212145a1a648680688634f9b44f488fbe660f2003666faba23
4
- data.tar.gz: eaff88cb6edbc88d3d5616df41d1344c38380b38aca26b642987420f73805a93
3
+ metadata.gz: a36f769e2bd7c22261752671935908e1e9776228406eab462a80e14ec47f5888
4
+ data.tar.gz: 528467b0d08b48aa958d2bc5eb5d075322f55af081834982a2fc06c02e5c0919
5
5
  SHA512:
6
- metadata.gz: 73f87f462a82919c5d435237276952a5b94be9397a053b68c17ad636e50e0b5c71dbe54b6d3118a19600e6eaf9bbd5d113e350ebf5c1330e635f5b38fd49e3b3
7
- data.tar.gz: fd592b9422b5f48802723027eabcc93ba5a7a23d9f2eedf17d0cd184acf014a7668c1464e3821750a650da4771c81b9b936cdaf02a2fa9c3e43b7ab0ccc988dd
6
+ metadata.gz: ce12d12d53b6cda30c247125455e7b5b7f9cd256a05df04a99e9871606e6a862436ac802057848068c5d9cd88165baa326d79ebbaee8b1455c124f96e2cbe6fd
7
+ data.tar.gz: '059a36cb0f76dbfa525a87ac56b38cd1816eedeabeb89389cdd5048ba2ac1d35488655b0adfc7dd01bc4b86abfa78ab55fea4b54a7794db8150b4804eb5fc868'
data/assets/index.xsl CHANGED
@@ -77,9 +77,26 @@ SOFTWARE.
77
77
  <xsl:text> on </xsl:text>
78
78
  <xsl:value-of select="cobench/@time"/>
79
79
  <xsl:text>. </xsl:text>
80
- <xsl:text>"Pulls" is the total number of pull requests created by the user and merged. </xsl:text>
81
- <xsl:text>"Issues" is the total number of issues submitted by the user. </xsl:text>
82
- <xsl:text>"Commits" is the total number of commits authored by the user. </xsl:text>
80
+ <xsl:text>"Commits" is the total number of </xsl:text>
81
+ <a href="https://github.com/git-guides/git-commit">
82
+ <xsl:text>Git commits</xsl:text>
83
+ </a>
84
+ <xsl:text> authored by the user. </xsl:text>
85
+ <xsl:text>"HoC" is the total number of user's hits of code. </xsl:text>
86
+ <a href="https://www.yegor256.com/2014/11/14/hits-of-code.html">
87
+ <xsl:text>hits of code</xsl:text>
88
+ </a>
89
+ <xsl:text>. </xsl:text>
90
+ <xsl:text>"Issues" is the total number of issues. </xsl:text>
91
+ <a href="https://docs.github.com/en/issues">
92
+ <xsl:text>issues</xsl:text>
93
+ </a>
94
+ <xsl:text>. </xsl:text>
95
+ <xsl:text>"Pulls" is the total number of </xsl:text>
96
+ <a href="https://docs.github.com/en/pull-requests">
97
+ <xsl:text>pull requests</xsl:text>
98
+ </a>
99
+ <xsl:text> created by the user and merged. </xsl:text>
83
100
  <xsl:text>"Score" is an arithmetic summary of all other numbers with multipliers: </xsl:text>
84
101
  <xsl:text>one Pull costs 100 points, </xsl:text>
85
102
  <xsl:text>one Issue 50 points, </xsl:text>
@@ -134,13 +151,13 @@ SOFTWARE.
134
151
  <xsl:template match="m">
135
152
  <td class="num">
136
153
  <xsl:choose>
137
- <xsl:when test="@href">
154
+ <xsl:when test="@href = ''">
155
+ <xsl:value-of select="."/>
156
+ </xsl:when>
157
+ <xsl:otherwise>
138
158
  <a href="{@href}">
139
159
  <xsl:value-of select="."/>
140
160
  </a>
141
- </xsl:when>
142
- <xsl:otherwise>
143
- <xsl:value-of select="."/>
144
161
  </xsl:otherwise>
145
162
  </xsl:choose>
146
163
  </td>
data/bin/cobench CHANGED
@@ -56,7 +56,7 @@ opts = Slop.parse(args, strict: true, help: true) do |o|
56
56
  o.array '--exclude', 'Mask of GitHub repo to exclude'
57
57
  end
58
58
 
59
- if opts.help?
59
+ if opts.help? || opts[:coder].empty?
60
60
  puts opts
61
61
  exit
62
62
  end
@@ -95,30 +95,35 @@ begin
95
95
  loog.info("Reading GitHub data for the last #{opts[:days]} days")
96
96
  titles = {}
97
97
  opts[:coder].each do |u|
98
- loog.info("Scanning #{u}...")
99
- data[u] = {}
98
+ user = u.downcase
99
+ loog.info("Scanning #{user}...")
100
+ data[user] = {}
100
101
  Dir[File.join(__dir__, '../lib/cobench/metrics/*.rb')].each do |f|
101
102
  name = File::basename(f).split('.')[0]
102
103
  if !opts[:metrics].empty? && !opts[:metrics].include?(name)
103
- loog.info("Ignoring #{u}/#{name} due to --metrics")
104
+ loog.info("Ignoring #{user}/#{name} due to --metrics")
104
105
  next
105
106
  end
106
107
  type = "Cobench::#{name.capitalize}"
107
- loog.info("Reading #{u}/#{name}...")
108
+ loog.info("Reading #{user}/#{name}...")
108
109
  require_relative f
109
110
  m = type.split('::').reduce(Module, :const_get).new(api, u, opts)
110
111
  if opts.dry?
111
112
  measures = [
112
113
  { title: 'Issues', total: Random.new.rand(100), href: 'https://github.com/' },
113
- { title: 'Pulls', total: Random.new.rand(100), href: 'https://github.com/' }
114
+ { title: 'Pulls', total: Random.new.rand(100), href: '' },
115
+ { title: 'HoC', total: Random.new.rand(100), href: '' },
116
+ { title: 'HoC', total: Random.new.rand(100), href: '' }
114
117
  ]
115
118
  else
116
119
  measures = m.take(loog)
117
120
  end
118
121
  measures.each do |d|
119
- data[u][d[:title]] = { total: d[:total], href: d[:href] }
122
+ before = 0
123
+ before += data[u][d[:title]][:total] if data[u][d[:title]] != nil
124
+ data[u][d[:title]] = { total: d[:total] + before, href: d[:href] }
120
125
  titles[d[:title]] = d[:title]
121
- loog.info("The value of #{u}/#{d[:title]} is #{d[:total]}")
126
+ loog.info("The value of #{user}/#{d[:title]} is #{d[:total]}")
122
127
  end
123
128
  end
124
129
  end
data/lib/cobench/mask.rb CHANGED
@@ -24,11 +24,11 @@
24
24
  # License:: MIT
25
25
  class Cobench::Mask
26
26
  def initialize(txt)
27
- @org, @repo = txt.split('/')
27
+ @org, @repo = txt.downcase.split('/')
28
28
  end
29
29
 
30
30
  def matches?(repo)
31
- org, repo = repo.split('/')
31
+ org, repo = repo.downcase.split('/')
32
32
  return false if ['', nil].include?(org)
33
33
  return false if ['', nil].include?(repo)
34
34
  return false if org != @org && @org != '*'
@@ -37,17 +37,27 @@ class Cobench::Commits
37
37
  q = "author:#{@user} author-date:>#{from}"
38
38
  json = @api.search_commits(q)
39
39
  loog.debug("Found #{json.total_count} commits")
40
+ hoc = 0
40
41
  total = json.items.count do |c|
41
42
  sha = c.sha
42
43
  repo = c.repository.full_name
43
44
  next unless Cobench::Match.new(@opts, loog).matches?(repo)
44
45
  loog.debug("Including #{sha} in #{repo}")
46
+ json = @api.commit(repo, sha)
47
+ hocs = json.stats.total
48
+ loog.debug("Found #{hocs} HoC in #{sha}")
49
+ hoc += hocs
45
50
  end
46
51
  [
47
52
  {
48
53
  title: 'Commits',
49
54
  total: total,
50
55
  href: Iri.new('https://github.com/search').add(q: q)
56
+ },
57
+ {
58
+ title: 'HoC',
59
+ total: hoc,
60
+ href: ''
51
61
  }
52
62
  ]
53
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.11'.freeze
26
+ VERSION = '0.0.14'.freeze
27
27
  end
data/test/test_mask.rb CHANGED
@@ -28,8 +28,8 @@ require_relative '../lib/cobench/mask'
28
28
  class TestMask < Minitest::Test
29
29
  def test_positive
30
30
  assert Cobench::Mask.new('*/*').matches?('foo/bar')
31
- assert Cobench::Mask.new('test/*').matches?('test/one')
32
- assert Cobench::Mask.new('test/hello').matches?('test/hello')
31
+ assert Cobench::Mask.new('test/*').matches?('Test/one')
32
+ assert Cobench::Mask.new('test/hello').matches?('test/Hello')
33
33
  end
34
34
 
35
35
  def test_negative
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cobench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko