gitstats 0.0.1
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README +4 -0
- data/Rakefile +1 -0
- data/config/routes.rb +3 -0
- data/gitstats.gemspec +24 -0
- data/lib/gitstats/shitometer.rb +69 -0
- data/lib/gitstats/version.rb +3 -0
- data/lib/gitstats.rb +7 -0
- metadata +71 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/config/routes.rb
ADDED
data/gitstats.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "gitstats/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "gitstats"
|
7
|
+
s.version = Gitstats::VERSION
|
8
|
+
s.authors = ["Andrey Koleshko"]
|
9
|
+
s.email = ["ka8725@gmail.com"]
|
10
|
+
s.homepage = "http://ka8725.github.com/gitstats"
|
11
|
+
s.summary = %q{Show git statistics using blame}
|
12
|
+
s.description = %q{Show git statistics using blame. More metrics are coming.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "gitstats"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
24
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Gitstats
|
2
|
+
class Shitometer
|
3
|
+
def self.call(env)
|
4
|
+
filelist = `git ls-files --exclude-standard`.split.reject {|x| x =~ /(^vendor)|(^public\/images)|(^public\/stylesheets)/}
|
5
|
+
res = {}
|
6
|
+
filelist.map do |file|
|
7
|
+
blamelist = `git blame -e #{file} | cut -d' ' -f 2`.split.map do |line|
|
8
|
+
line.gsub!(/[()<>]/, '')
|
9
|
+
end.compact.sort.group_by(&:to_s).map do |email, group|
|
10
|
+
res[email] ||= 0; res[email] += group.size
|
11
|
+
end
|
12
|
+
end
|
13
|
+
res = res.to_a.sort {|a,b| b.last <=> a.last}
|
14
|
+
[
|
15
|
+
200,
|
16
|
+
{'Content-Type'=>'text/html'},
|
17
|
+
<<-EOB
|
18
|
+
<html>
|
19
|
+
<head>
|
20
|
+
<!--Load the AJAX API-->
|
21
|
+
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
22
|
+
<script type="text/javascript">
|
23
|
+
|
24
|
+
// Load the Visualization API and the piechart package.
|
25
|
+
google.load('visualization', '1.0', {'packages':['corechart', 'table']});
|
26
|
+
|
27
|
+
// Set a callback to run when the Google Visualization API is loaded.
|
28
|
+
google.setOnLoadCallback(drawChart);
|
29
|
+
|
30
|
+
// Callback that creates and populates a data table,
|
31
|
+
// instantiates the pie chart, passes in the data and
|
32
|
+
// draws it.
|
33
|
+
function drawChart() {
|
34
|
+
|
35
|
+
// Create the data table.
|
36
|
+
data = new google.visualization.DataTable();
|
37
|
+
data.addColumn('string', 'Developer');
|
38
|
+
data.addColumn('number', 'Count strings');
|
39
|
+
items = #{res.to_json};
|
40
|
+
data.addRows(items);
|
41
|
+
// Set chart options
|
42
|
+
var options = {'title':'Git stats',
|
43
|
+
'width':700,
|
44
|
+
'height':600};
|
45
|
+
// Instantiate and draw our chart, passing in some options.
|
46
|
+
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
|
47
|
+
chart.draw(data, options);
|
48
|
+
var table = new google.visualization.Table(document.getElementById('table_div'));
|
49
|
+
table.draw(data, {showRowNumber: true});
|
50
|
+
google.visualization.events.addListener(table, 'select', function() {
|
51
|
+
var row = table.getSelection()[0].row;
|
52
|
+
alert('You selected ' + data.getValue(row, 0));
|
53
|
+
});
|
54
|
+
}
|
55
|
+
</script>
|
56
|
+
</head>
|
57
|
+
|
58
|
+
<body>
|
59
|
+
<!--Div that will hold the pie chart-->
|
60
|
+
<div id="chart_div" styles="margin:auto"></div>
|
61
|
+
<br />
|
62
|
+
<div id="table_div"></div>
|
63
|
+
</body>
|
64
|
+
</html>
|
65
|
+
EOB
|
66
|
+
]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/gitstats.rb
ADDED
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gitstats
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Andrey Koleshko
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-10-09 00:00:00 +03:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Show git statistics using blame. More metrics are coming.
|
22
|
+
email:
|
23
|
+
- ka8725@gmail.com
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files: []
|
29
|
+
|
30
|
+
files:
|
31
|
+
- .gitignore
|
32
|
+
- Gemfile
|
33
|
+
- README
|
34
|
+
- Rakefile
|
35
|
+
- config/routes.rb
|
36
|
+
- gitstats.gemspec
|
37
|
+
- lib/gitstats.rb
|
38
|
+
- lib/gitstats/shitometer.rb
|
39
|
+
- lib/gitstats/version.rb
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: http://ka8725.github.com/gitstats
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
version: "0"
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
requirements: []
|
64
|
+
|
65
|
+
rubyforge_project: gitstats
|
66
|
+
rubygems_version: 1.3.6
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: Show git statistics using blame
|
70
|
+
test_files: []
|
71
|
+
|