git-stat 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cf97961ee62e35f533a39b66245b85ba341e312a
4
+ data.tar.gz: a4d8a2021cbbbfdcdcf0f46ffe977498708ca352
5
+ SHA512:
6
+ metadata.gz: f29cc3e815d9d21850b3bdd25576cafa7c29f63f871fa5386accef665d835b7baaa9c286cb014fc2d61924a5d5b0a5f774e8da4b426c38a8d8658142f636989f
7
+ data.tar.gz: dc62f98c7326da37c000776c63cdb7c795f01ee0a571c74a837fa71f7fb59f2c76db22e13bd58f798d4bd97dc6170c1dc04828b248de91b8b72b250d2940d9fc
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "shoulda", ">= 0"
10
+ gem "rdoc", "~> 3.12"
11
+ gem "bundler", "~> 1.0"
12
+ gem "jeweler", "~> 2.0.1"
13
+ gem "simplecov", ">= 0"
14
+ end
@@ -0,0 +1,81 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (4.0.3)
5
+ i18n (~> 0.6, >= 0.6.4)
6
+ minitest (~> 4.2)
7
+ multi_json (~> 1.3)
8
+ thread_safe (~> 0.1)
9
+ tzinfo (~> 0.3.37)
10
+ addressable (2.3.5)
11
+ atomic (1.1.15)
12
+ builder (3.2.2)
13
+ descendants_tracker (0.0.3)
14
+ docile (1.1.3)
15
+ faraday (0.9.0)
16
+ multipart-post (>= 1.2, < 3)
17
+ git (1.2.6)
18
+ github_api (0.11.3)
19
+ addressable (~> 2.3)
20
+ descendants_tracker (~> 0.0.1)
21
+ faraday (~> 0.8, < 0.10)
22
+ hashie (>= 1.2)
23
+ multi_json (>= 1.7.5, < 2.0)
24
+ nokogiri (~> 1.6.0)
25
+ oauth2
26
+ hashie (2.0.5)
27
+ highline (1.6.21)
28
+ i18n (0.6.9)
29
+ jeweler (2.0.1)
30
+ builder
31
+ bundler (>= 1.0)
32
+ git (>= 1.2.5)
33
+ github_api
34
+ highline (>= 1.6.15)
35
+ nokogiri (>= 1.5.10)
36
+ rake
37
+ rdoc
38
+ json (1.8.1)
39
+ jwt (0.1.11)
40
+ multi_json (>= 1.5)
41
+ mini_portile (0.5.2)
42
+ minitest (4.7.5)
43
+ multi_json (1.9.0)
44
+ multi_xml (0.5.5)
45
+ multipart-post (2.0.0)
46
+ nokogiri (1.6.1)
47
+ mini_portile (~> 0.5.0)
48
+ oauth2 (0.9.3)
49
+ faraday (>= 0.8, < 0.10)
50
+ jwt (~> 0.1.8)
51
+ multi_json (~> 1.3)
52
+ multi_xml (~> 0.5)
53
+ rack (~> 1.2)
54
+ rack (1.5.2)
55
+ rake (10.1.1)
56
+ rdoc (3.12.2)
57
+ json (~> 1.4)
58
+ shoulda (3.5.0)
59
+ shoulda-context (~> 1.0, >= 1.0.1)
60
+ shoulda-matchers (>= 1.4.1, < 3.0)
61
+ shoulda-context (1.1.6)
62
+ shoulda-matchers (2.5.0)
63
+ activesupport (>= 3.0.0)
64
+ simplecov (0.8.2)
65
+ docile (~> 1.1.0)
66
+ multi_json
67
+ simplecov-html (~> 0.8.0)
68
+ simplecov-html (0.8.0)
69
+ thread_safe (0.2.0)
70
+ atomic (>= 1.1.7, < 2)
71
+ tzinfo (0.3.39)
72
+
73
+ PLATFORMS
74
+ ruby
75
+
76
+ DEPENDENCIES
77
+ bundler (~> 1.0)
78
+ jeweler (~> 2.0.1)
79
+ rdoc (~> 3.12)
80
+ shoulda
81
+ simplecov
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2014 Peter Salas
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,76 @@
1
+ # git-stat
2
+
3
+ A collection of useful utilities and libraries for Ruby development (not Rails)
4
+
5
+ ## Installation
6
+
7
+ The toolset can be installed via:
8
+
9
+ gem install git-stat
10
+
11
+ ## Usage
12
+
13
+ TODO
14
+
15
+
16
+ ## Documentation
17
+
18
+ The projects homepage can be found [here](https://github.com/gradeawarrior/git-stat). You can also refer to the [Rubydoc YARD Server](http://rubydoc.info/gems/git-stat/frames)
19
+
20
+ # Development
21
+
22
+ The project is built by [jeweler](https://github.com/technicalpickles/jeweler). See the project's page for more details about how to manage this gem. However, I will list out quick guidance on a typical release.
23
+
24
+ ## Active Gem Development
25
+
26
+ It may be useful to load this project for use in other local projects. The easiest way to configure Ruby is to set `RUBYLIB` environment variable to include all Ruby paths (Separated by colons ':'):
27
+
28
+ $ export RUBYLIB=$YOUR_PATH_TO_LIB_DIRECTORY:$OTHER_PATHS
29
+
30
+ ### 1. Version Bump
31
+
32
+ When you are ready to release, you will need to up-rev the version via the
33
+ following methods depending if it's (i) a major, (ii) a minor, or (iii) a patch
34
+ release:
35
+
36
+ # version:write like before
37
+ $ rake version:write MAJOR=0 MINOR=3 PATCH=0
38
+
39
+ # bump just major, ie 0.1.0 -> 1.0.0
40
+ $ rake version:bump:major
41
+
42
+ # bump just minor, ie 0.1.0 -> 0.2.0
43
+ $ rake version:bump:minor
44
+
45
+ # bump just patch, ie 0.1.0 -> 0.1.1
46
+ $ rake version:bump:patch
47
+
48
+ ### 2. Local Testing of Gem
49
+
50
+ While doing active work on your project, it is helpful to actively install your gem into your local gem repo using `rake install` on the command-line.
51
+
52
+ $ rake install
53
+
54
+ Do note that discovering what files to include in the gem is written around git. The file must be at least be tracked. You may need to do a `git init` and a `git add .` to at least satisfy the requirements for building a gem from source.
55
+
56
+ ### 3. Releasing
57
+
58
+ At last, it's time to ship it! Make sure you have everything committed and pushed, then go wild:
59
+
60
+ $ rake release
61
+
62
+ # Contributing to git-stat
63
+
64
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
65
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
66
+ * Fork the project.
67
+ * Start a feature/bugfix branch.
68
+ * Commit and push until you are happy with your contribution.
69
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
70
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
71
+
72
+ # Copyright
73
+
74
+ Copyright (c) 2014 Peter Salas. See LICENSE.txt for
75
+ further details.
76
+
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
+ gem.name = "git-stat"
18
+ gem.homepage = "http://github.com/gradeawarrior/git-stat"
19
+ gem.license = "MIT"
20
+ gem.summary = "git-stat utility"
21
+ gem.description = "Git Statistics Utility for your projects"
22
+ gem.email = "psalas+github@gmail.com"
23
+ gem.authors = ["Peter Salas"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ desc "Code coverage detail"
36
+ task :simplecov do
37
+ ENV['COVERAGE'] = "true"
38
+ Rake::Task['test'].execute
39
+ end
40
+
41
+ task :default => :test
42
+
43
+ require 'rdoc/task'
44
+ Rake::RDocTask.new do |rdoc|
45
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
+
47
+ rdoc.rdoc_dir = 'rdoc'
48
+ rdoc.title = "git-stat #{version}"
49
+ rdoc.rdoc_files.include('README*')
50
+ rdoc.rdoc_files.include('lib/**/*.rb')
51
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'yaml'
5
+
6
+ def show_usage(opts, message=nil)
7
+ code = 0
8
+ puts opts
9
+
10
+ if !message.nil?
11
+ puts "[ERROR] #{message}"
12
+ code = 1
13
+ end
14
+ exit(code)
15
+ end
16
+
17
+ ## Variables
18
+ git_dir = '.'
19
+
20
+ # Process command line arguments if any.
21
+ opts = OptionParser.new do |opts|
22
+
23
+ # Set a banner, displayed at the top
24
+ # of the help screen.
25
+ opts.banner = "Usage: git-stat [options]"
26
+
27
+ opts.on('-d', '--dir GIT_DIR', "A git directory to get stats on (Default: current directory)") do |dir|
28
+ show_usage("'#{dir} does not exist!") unless File.exist?(dir)
29
+ show_usage("'#{dir} is not a directory!") unless File.directory?(dir)
30
+ git_dir = dir
31
+ end
32
+
33
+ # This displays the help screen, all programs are
34
+ # assumed to have this option.
35
+ opts.on('-h', '--help', 'Display this screen') do
36
+ show_usage(opts)
37
+ end
38
+ end
39
+
40
+ opts.parse(ARGV)
41
+
42
+ require 'git-stat'
43
+ Dir.chdir(git_dir)
44
+ if Git::is_git_project?
45
+ stats = Git::all_stats
46
+ puts stats.to_yaml
47
+ else
48
+ show_usage(opts, "#{git_dir} is not a git project!")
49
+ end
@@ -0,0 +1,64 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "git-stat"
8
+ s.version = "1.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Peter Salas"]
12
+ s.date = "2014-03-13"
13
+ s.description = "Git Statistics Utility for your projects"
14
+ s.email = "psalas+github@gmail.com"
15
+ s.executables = ["git-stat"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.md",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/git-stat",
29
+ "git-stat.gemspec",
30
+ "lib/git-stat.rb",
31
+ "test/helper.rb",
32
+ "test/test_git-stat.rb"
33
+ ]
34
+ s.homepage = "http://github.com/gradeawarrior/git-stat"
35
+ s.licenses = ["MIT"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = "2.0.14"
38
+ s.summary = "git-stat utility"
39
+
40
+ if s.respond_to? :specification_version then
41
+ s.specification_version = 4
42
+
43
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
45
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
46
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
47
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
48
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
49
+ else
50
+ s.add_dependency(%q<shoulda>, [">= 0"])
51
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
52
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
53
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
54
+ s.add_dependency(%q<simplecov>, [">= 0"])
55
+ end
56
+ else
57
+ s.add_dependency(%q<shoulda>, [">= 0"])
58
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
59
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
60
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
61
+ s.add_dependency(%q<simplecov>, [">= 0"])
62
+ end
63
+ end
64
+
@@ -0,0 +1,208 @@
1
+ ## Check to make sure system has git installed, otherwise quickly exit
2
+ begin
3
+ `git --version`
4
+ abort("git is not installed on your system!") unless $?.success?
5
+ end
6
+
7
+ ##
8
+ # Provides a quick wrapper around git commands in order to analyze and provide interesting statistics
9
+ # around a git repository
10
+ #
11
+ class Git
12
+
13
+ UNKNOWN_TYPE = 'UNKNOWN'
14
+
15
+ ##
16
+ # Checks if the current directory is a git project
17
+ #
18
+ def self.is_git_project?
19
+ `git status`
20
+ $?.success?
21
+ end
22
+
23
+ ##
24
+ # Returns the project name, which is assumed to be the current directory's name
25
+ #
26
+ def self.project_name
27
+ `printf '%s\n' "${PWD##*/}"`.chomp
28
+ end
29
+
30
+ ##
31
+ # Returns a list of files in the git project
32
+ #
33
+ def self.ls_files
34
+ `git ls-files`.split(/\n/)
35
+ end
36
+
37
+ ##
38
+ # Returns a list of all remote branches
39
+ #
40
+ def self.remote_branches
41
+ `git branch -a | grep remotes | awk '{print $1}'`.split(/\n/)
42
+ end
43
+
44
+ ##
45
+ # Returns a list of tags
46
+ #
47
+ def self.tags
48
+ `git tag -l`.split(/\n/)
49
+ end
50
+
51
+ ##
52
+ # Executes the blame command and returns the String output
53
+ #
54
+ def self.blame(file)
55
+ `git blame "#{file}"`
56
+ end
57
+
58
+ ##
59
+ # Returns the number of lines in a file
60
+ #
61
+ def self.line_count(file)
62
+ `git blame "#{file}" | wc -l`.to_i
63
+ end
64
+
65
+ ##
66
+ # Returns a hash containing some interesting stats about a file including:
67
+ #
68
+ # 1. The file
69
+ # 2. The file type
70
+ # 3. line count
71
+ # 4. and all the authors and the number of lines they were responsible for
72
+ #
73
+ # It will look something like this:
74
+ #
75
+ # {
76
+ # :file => file,
77
+ # :type => type,
78
+ # :line_count => line_count,
79
+ # :authors_influence => authors
80
+ # }
81
+ #
82
+ def self.file_stat(file)
83
+ authors = {}
84
+ line_count = 0
85
+ type = File.extname(file).empty? ? UNKNOWN_TYPE : File.extname(file)
86
+ begin
87
+ lines = blame(file).split(/\n/)
88
+ line_count = lines.length
89
+ lines.each do |line|
90
+ if (line.match(/\((.*?)\s+[0-9]{4}-[0-9]{2}-[0-9]{2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}\s.[0-9]*\s+[0-9]*\)/))
91
+ authors[$1] += 1 if authors.has_key?($1)
92
+ authors[$1] = 1 unless authors.has_key?($1)
93
+ else
94
+ $stderr.puts "[WARN] Did not find whom to blame on this line in file: #{file}"
95
+ $stderr.flush
96
+ end
97
+ end
98
+ rescue Exception
99
+ line_count = Git::line_count(file)
100
+ end
101
+ {
102
+ :file => file,
103
+ :type => type,
104
+ :line_count => line_count,
105
+ :authors_influence => authors
106
+ }
107
+ end
108
+
109
+ ##
110
+ # Merges two hashes containing counts together
111
+ #
112
+ def self.merge_hash_value_counts(h1, h2)
113
+ h2.each_key.inject(h1) do |result,key|
114
+ result[key] += h2[key] if result.has_key?(key)
115
+ result[key] = h2[key] unless result.has_key?(key)
116
+ result
117
+ end
118
+ end
119
+
120
+ ##
121
+ # Creates a "sorted" hash by the value counts. This is simply
122
+ # for easier visual output when serialized to yaml
123
+ #
124
+ def self.sort_hash(hash)
125
+ sorted_array = hash.sort_by {|k,v| v}.reverse
126
+ sorted_array.inject({}) do |result,element|
127
+ result[element[0]] = element[1]
128
+ result
129
+ end
130
+ end
131
+
132
+ ##
133
+ # This iterates over files and calls Git::file_stat on each of them.
134
+ # Output will look like this:
135
+ #
136
+ # {
137
+ # :number_of_files => number_of_files,
138
+ # :total_line_counts => total_line_counts,
139
+ # :file_types => sort_hash(types_count),
140
+ # :line_counts_by_type => sort_hash(line_counts_by_type),
141
+ # :authors_influence => sort_hash(authors_influence)
142
+ # }
143
+ #
144
+ def self.files_stat
145
+ files = Git::ls_files()
146
+ number_of_files = files.length
147
+ types_count = {}
148
+ line_counts = {}
149
+ line_counts_by_type = {}
150
+ authors_influence = {}
151
+ total_line_counts = 0
152
+
153
+ file_index = 0
154
+ files.each do |file|
155
+ file_index += 1
156
+ file_stat = file_stat(file)
157
+ authors_influence = merge_hash_value_counts(authors_influence, file_stat[:authors_influence])
158
+ total_line_counts += file_stat[:line_count]
159
+
160
+ if types_count.has_key?(file_stat[:type])
161
+ types_count[file_stat[:type]] += 1
162
+ line_counts_by_type[file_stat[:type]] += file_stat[:line_count]
163
+ else
164
+ types_count[file_stat[:type]] = 1
165
+ line_counts_by_type[file_stat[:type]] = file_stat[:line_count]
166
+ end
167
+ line_counts[file] = Git::line_count(file)
168
+ end
169
+
170
+ {
171
+ :number_of_files => number_of_files,
172
+ :total_line_counts => total_line_counts,
173
+ :file_types => sort_hash(types_count),
174
+ :line_counts_by_type => sort_hash(line_counts_by_type),
175
+ :authors_influence => sort_hash(authors_influence)
176
+ }
177
+ end
178
+
179
+ ##
180
+ # Does Git::files_stat and then formats everything.
181
+ # Output will look like this:
182
+ #
183
+ # {
184
+ # 'project_name' => Git::project_name(),
185
+ # 'total_files' => stats[:number_of_files],
186
+ # 'total_lines' => stats[:total_line_counts],
187
+ # 'file_types' => stats[:file_types],
188
+ # 'authors_line_count' => stats[:authors_influence],
189
+ # 'line_counts_by_type' => stats[:line_counts_by_type],
190
+ # 'branches' => Git::remote_branches(),
191
+ # 'tags' => Git::tags()
192
+ # }
193
+ #
194
+ def self.all_stats
195
+ stats = files_stat()
196
+ {
197
+ 'project_name' => Git::project_name(),
198
+ 'total_files' => stats[:number_of_files],
199
+ 'total_lines' => stats[:total_line_counts],
200
+ 'file_types' => stats[:file_types],
201
+ 'authors_line_count' => stats[:authors_influence],
202
+ 'line_counts_by_type' => stats[:line_counts_by_type],
203
+ 'branches' => Git::remote_branches(),
204
+ 'tags' => Git::tags()
205
+ }
206
+ end
207
+
208
+ end
@@ -0,0 +1,34 @@
1
+ require 'simplecov'
2
+
3
+ module SimpleCov::Configuration
4
+ def clean_filters
5
+ @filters = []
6
+ end
7
+ end
8
+
9
+ SimpleCov.configure do
10
+ clean_filters
11
+ load_adapter 'test_frameworks'
12
+ end
13
+
14
+ ENV["COVERAGE"] && SimpleCov.start do
15
+ add_filter "/.rvm/"
16
+ end
17
+ require 'rubygems'
18
+ require 'bundler'
19
+ begin
20
+ Bundler.setup(:default, :development)
21
+ rescue Bundler::BundlerError => e
22
+ $stderr.puts e.message
23
+ $stderr.puts "Run `bundle install` to install missing gems"
24
+ exit e.status_code
25
+ end
26
+ require 'test/unit'
27
+ require 'shoulda'
28
+
29
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
30
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
31
+ require 'git-stat'
32
+
33
+ class Test::Unit::TestCase
34
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestGitStat < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git-stat
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Salas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: shoulda
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jeweler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.0.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.0.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Git Statistics Utility for your projects
84
+ email: psalas+github@gmail.com
85
+ executables:
86
+ - git-stat
87
+ extensions: []
88
+ extra_rdoc_files:
89
+ - LICENSE.txt
90
+ - README.md
91
+ files:
92
+ - .document
93
+ - Gemfile
94
+ - Gemfile.lock
95
+ - LICENSE.txt
96
+ - README.md
97
+ - Rakefile
98
+ - VERSION
99
+ - bin/git-stat
100
+ - git-stat.gemspec
101
+ - lib/git-stat.rb
102
+ - test/helper.rb
103
+ - test/test_git-stat.rb
104
+ homepage: http://github.com/gradeawarrior/git-stat
105
+ licenses:
106
+ - MIT
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.0.14
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: git-stat utility
128
+ test_files: []