ghit 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +5 -2
- data/bin/git-contributors +6 -0
- data/bin/git-freq +6 -0
- data/bin/git-punch-card +6 -0
- data/bin/git-stats +6 -0
- data/ghit.gemspec +2 -0
- data/lib/ghit/globals.rb +31 -0
- data/lib/ghit/https_globals.rb +28 -0
- data/lib/ghit/repo_locator.rb +2 -9
- data/lib/ghit/repo_statistics.rb +18 -0
- data/lib/ghit/ssh_globals.rb +28 -0
- data/lib/ghit/stats/code_frequency.rb +50 -0
- data/lib/ghit/stats/contributors.rb +54 -0
- data/lib/ghit/stats/punch_card.rb +69 -0
- data/lib/ghit/stats.rb +7 -0
- data/lib/ghit/version.rb +1 -1
- data/lib/ghit.rb +9 -5
- data/spec/globals_spec.rb +22 -0
- data/spec/https_globals_spec.rb +21 -0
- data/spec/ssh_globals_spec.rb +20 -0
- metadata +52 -8
- data/lib/ghit/http_remote_url_builder.rb +0 -26
- data/lib/ghit/ssh_remote_url_builder.rb +0 -27
- data/spec/http_remote_url_builder_spec.rb +0 -13
- data/spec/ssh_remote_url_builder_spec.rb +0 -13
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YmU0ZGY0YTFiYWMyMzk0MWUwYTFlNTM3NGZjYzYwNTFhYzM5Y2MxNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDc2NGEyMjM4MjE0ZTdhNGJiZGRlNWZkYmNjNTUyOTAyZDU1NGI3MQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzdkMzY2ZWRmNTNjNjgyYTIxNjE2MDc4ZGM0NjdmNjJmYjQzOGE3YjY3OWIz
|
10
|
+
YTllYWJiZjgwYzllNDkzOTA0ZmViY2IzMzBiOGIxYjI0ZjZlM2NjNWMzOTlk
|
11
|
+
ZTY2Nzk5MmNiZTdlNjI4NzM4Y2YwMzI5OGY2ZGRhMzgzYmQ2ZTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MThjNTg4ZjcyODRhNTY5MzUzNjk0OTFiODgzZTFjYmE2ZjVlZGJiYzNmMTRh
|
14
|
+
NDA0OWVjZTBmODBlYWUyM2RkNmVmMThlODg2MWVjOGVkZTQ0NjUzY2U1NTEx
|
15
|
+
Yzc2OWVhMmM3YTcwNmJiMzU5M2M3OGJkNzJlMmJlMTBmYjhmOWY=
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ Ghit
|
|
4
4
|
## What is this?
|
5
5
|
|
6
6
|
Ghit is a collection of custom ```git``` commands that allows the user to easily navigate to
|
7
|
-
certain Github pages of the repo (if it exists).
|
7
|
+
certain Github pages of the repo (if it exists), or get some repo statistics in the terminal.
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -14,7 +14,7 @@ That's it!
|
|
14
14
|
|
15
15
|
## Usage
|
16
16
|
|
17
|
-
There are
|
17
|
+
There are 7 new ```git``` commands now.
|
18
18
|
|
19
19
|
The following commands allow you to easily navigate to repo's Github (sub)page.
|
20
20
|
|
@@ -22,6 +22,9 @@ The following commands allow you to easily navigate to repo's Github (sub)page.
|
|
22
22
|
* ```git pulls``` -> Opens the Github pull requests page of the repo in broswer.
|
23
23
|
* ```git issues``` -> Opens the Github issues page of the repo in broswer.
|
24
24
|
* ```git open``` -> Opens the Github repo page in browser.
|
25
|
+
* ```git freq``` -> Shows a table with weekly code frequency statistics (additions/deletions).
|
26
|
+
* ```git contributors``` -> Shows a table with all of the users that contributed to the repo.
|
27
|
+
* ```git punch-card``` -> Shows a (rather big) punch card with all of the commits traffic for the repo grouped by weekdays and time.
|
25
28
|
|
26
29
|
## Worth sayin'
|
27
30
|
* Still has some rough edges. Needs tests, refactoring and various improvements.
|
data/bin/git-freq
ADDED
data/bin/git-punch-card
ADDED
data/bin/git-stats
ADDED
data/ghit.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency 'github_api', '~> 0.12'
|
22
|
+
spec.add_dependency 'rainbow', '~> 2.0'
|
21
23
|
spec.add_development_dependency "bundler", "~> 1.5"
|
22
24
|
spec.add_development_dependency "rake", "~> 10.3"
|
23
25
|
spec.add_development_dependency 'rspec', "~> 3.1"
|
data/lib/ghit/globals.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Ghit
|
2
|
+
class Globals
|
3
|
+
def initialize
|
4
|
+
@remote = Ghit::RemoteExtracter.extract!
|
5
|
+
@globals = if http_remote?
|
6
|
+
Ghit::HttpsGlobals.new @remote
|
7
|
+
else
|
8
|
+
Ghit::SshGlobals.new @remote
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def url
|
13
|
+
@globals.url
|
14
|
+
end
|
15
|
+
|
16
|
+
def author
|
17
|
+
@globals.author
|
18
|
+
end
|
19
|
+
|
20
|
+
def repository
|
21
|
+
@globals.repository
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def http_remote?
|
27
|
+
@remote =~ /https?/
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Ghit
|
2
|
+
class HttpsGlobals
|
3
|
+
|
4
|
+
attr_reader :url, :author, :repository
|
5
|
+
|
6
|
+
def initialize remote
|
7
|
+
@remote = remote
|
8
|
+
@url = extract_url
|
9
|
+
@author = extract_author
|
10
|
+
@repository = extract_repository_name
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def extract_url
|
16
|
+
@remote.split[-2]
|
17
|
+
end
|
18
|
+
|
19
|
+
def extract_author
|
20
|
+
@remote.split('/')[-2]
|
21
|
+
end
|
22
|
+
|
23
|
+
def extract_repository_name
|
24
|
+
extract_url.split('/')[-1]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/ghit/repo_locator.rb
CHANGED
@@ -8,8 +8,8 @@ module Ghit
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def initialize(page = nil)
|
11
|
-
@remote = Ghit::RemoteExtracter.extract!
|
12
11
|
@page = page
|
12
|
+
@globals = Ghit::Globals.new
|
13
13
|
end
|
14
14
|
|
15
15
|
def open
|
@@ -19,16 +19,9 @@ module Ghit
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def build_url
|
22
|
-
|
23
|
-
HttpRemoteUrlBuilder.new(@remote, @page).build
|
24
|
-
else
|
25
|
-
SshRemoteUrlBuilder.new(@remote, @page).build
|
26
|
-
end
|
22
|
+
"#{@globals.url}/#{@page}"
|
27
23
|
end
|
28
24
|
|
29
|
-
def is_http_remote?
|
30
|
-
@remote =~ /https?/
|
31
|
-
end
|
32
25
|
end
|
33
26
|
|
34
27
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ghit
|
2
|
+
class RepoStatistics
|
3
|
+
def initialize
|
4
|
+
@globals = Ghit::Globals.new
|
5
|
+
end
|
6
|
+
|
7
|
+
def code_frequency
|
8
|
+
code_frequency = Github::Client::Repos::Statistics.new.code_frequency(user: @globals.author, repo: @globals.repository).body
|
9
|
+
puts "From:\t\tAdditions\tDeletions"
|
10
|
+
puts "-" * 41
|
11
|
+
code_frequency.each do |date, additions, deletions|
|
12
|
+
date = DateTime.strptime(date.to_s, "%s")
|
13
|
+
puts "#{date.to_date.to_s}\t#{Rainbow(additions).green}\t\t#{Rainbow(deletions).red}"
|
14
|
+
end
|
15
|
+
puts "-" * 41
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Ghit
|
2
|
+
class SshGlobals
|
3
|
+
|
4
|
+
attr_reader :url, :repository, :author
|
5
|
+
|
6
|
+
def initialize remote
|
7
|
+
@remote = remote
|
8
|
+
@author = extract_author
|
9
|
+
@repository = extract_repository
|
10
|
+
@url = extract_url
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def extract_url
|
16
|
+
"https://github.com/#{@author}/#{@repository}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def extract_author
|
20
|
+
@remote.split[-2].split("/")[0].split(":")[-1]
|
21
|
+
end
|
22
|
+
|
23
|
+
def extract_repository
|
24
|
+
@remote.scan(/\/(.*).git/).join
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Ghit
|
2
|
+
module Stats
|
3
|
+
|
4
|
+
class CodeFrequency
|
5
|
+
class << self
|
6
|
+
def get!
|
7
|
+
new.get
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@globals = Ghit::Globals.new
|
13
|
+
@stats = Github::Client::Repos::Statistics.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def get
|
17
|
+
code_frequency = fetch_freq_data
|
18
|
+
print_output_heading
|
19
|
+
code_frequency.each do |date, additions, deletions|
|
20
|
+
date = unixtime_to_date date
|
21
|
+
format_and_print_freq_data date, additions, deletions
|
22
|
+
end
|
23
|
+
print_fourty_one_dashes
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def format_and_print_freq_data date, additions, deletions
|
29
|
+
puts "#{date}\t#{Rainbow(additions).green}\t\t#{Rainbow(deletions).red}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def unixtime_to_date timestamp
|
33
|
+
DateTime.strptime(timestamp.to_s, "%s").to_date.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
def fetch_freq_data
|
37
|
+
@stats.code_frequency(user: @globals.author, repo: @globals.repository).body
|
38
|
+
end
|
39
|
+
|
40
|
+
def print_output_heading
|
41
|
+
puts "From:\t\tAdditions\tDeletions"
|
42
|
+
print_fourty_one_dashes
|
43
|
+
end
|
44
|
+
|
45
|
+
def print_fourty_one_dashes
|
46
|
+
puts "-" * 41
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Ghit
|
2
|
+
module Stats
|
3
|
+
|
4
|
+
class Contributors
|
5
|
+
class << self
|
6
|
+
def get!
|
7
|
+
new.get
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@globals = Ghit::Globals.new
|
13
|
+
@stats = Github::Client::Repos::Statistics.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def get
|
17
|
+
contributors = fetch_contributors
|
18
|
+
|
19
|
+
print_output_heading
|
20
|
+
contributors.each do |c|
|
21
|
+
print_contributor_data c
|
22
|
+
end
|
23
|
+
print_fourty_dashes
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def fetch_contributors
|
29
|
+
@stats.contributors(user: @globals.author, repo: @globals.repository).body
|
30
|
+
end
|
31
|
+
|
32
|
+
def print_output_heading
|
33
|
+
puts "List of contributors to this repository:"
|
34
|
+
print_fourty_dashes
|
35
|
+
puts "Username\t\tProfile URL"
|
36
|
+
print_fourty_dashes
|
37
|
+
end
|
38
|
+
|
39
|
+
def print_fourty_dashes
|
40
|
+
puts "-" * 40
|
41
|
+
end
|
42
|
+
|
43
|
+
def print_contributor_data contrib
|
44
|
+
if contrib.respond_to? :author
|
45
|
+
puts "#{contrib.author.login}\t\t#{contrib.author.html_url}"
|
46
|
+
else
|
47
|
+
puts "#{contrib.login}\t\t#{contrib.html_url}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Ghit
|
2
|
+
module Stats
|
3
|
+
|
4
|
+
class PunchCard
|
5
|
+
class << self
|
6
|
+
def get!
|
7
|
+
new.get
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@globals = Ghit::Globals.new
|
13
|
+
@stats = Github::Client::Repos::Statistics.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def get
|
17
|
+
punch_card_data = fetch_punch_card_data
|
18
|
+
commits_by_day = group_data_by_day punch_card_data
|
19
|
+
|
20
|
+
print_hours_line
|
21
|
+
commits_by_day.each do |day_ordinal, daily_commits_per_hour|
|
22
|
+
print get_weekday day_ordinal
|
23
|
+
print_commits_count daily_commits_per_hour
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def print_commits_count commits_group
|
30
|
+
commits_group.each {|day, hour, commits| print "#{commits}\t" }
|
31
|
+
puts
|
32
|
+
end
|
33
|
+
|
34
|
+
def fetch_punch_card_data
|
35
|
+
@stats.punch_card(user: @globals.author, repo: @globals.repository).body
|
36
|
+
end
|
37
|
+
|
38
|
+
def group_data_by_day punch_card_data
|
39
|
+
punch_card_data.group_by {|i| i.first }
|
40
|
+
end
|
41
|
+
|
42
|
+
def print_hours_line
|
43
|
+
print "\t"
|
44
|
+
(00..23).to_a.each {|num| print "#{num}:00\t" }
|
45
|
+
puts
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_weekday day
|
49
|
+
case day
|
50
|
+
when 0
|
51
|
+
"Mon\t"
|
52
|
+
when 1
|
53
|
+
"Tue\t"
|
54
|
+
when 2
|
55
|
+
"Wed\t"
|
56
|
+
when 3
|
57
|
+
"Thu\t"
|
58
|
+
when 4
|
59
|
+
"Fri\t"
|
60
|
+
when 5
|
61
|
+
"Sat\t"
|
62
|
+
when 6
|
63
|
+
"Sun\t"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/ghit/stats.rb
ADDED
data/lib/ghit/version.rb
CHANGED
data/lib/ghit.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
require "ghit/version"
|
2
|
+
require 'github_api'
|
3
|
+
require 'rainbow'
|
2
4
|
|
3
5
|
module Ghit
|
4
|
-
autoload :
|
5
|
-
autoload :
|
6
|
-
autoload :
|
7
|
-
autoload :
|
8
|
-
autoload :
|
6
|
+
autoload :Globals, 'ghit/globals'
|
7
|
+
autoload :HttpGlobals, 'ghit/http_globals'
|
8
|
+
autoload :SshGlobals, 'ghit/ssh_globals'
|
9
|
+
autoload :RepoLocator, 'ghit/repo_locator'
|
10
|
+
autoload :Errors, 'ghit/errors'
|
11
|
+
autoload :RemoteExtracter, 'ghit/remote_extracter'
|
12
|
+
autoload :Stats, 'ghit/stats'
|
9
13
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ghit::Globals do
|
4
|
+
subject { described_class.new }
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
expect(Ghit::RemoteExtracter).to receive(:extract!).and_return "origin\tgit@github.com:someone/something.git (fetch)"
|
8
|
+
end
|
9
|
+
|
10
|
+
it '#author - returns author Github username' do
|
11
|
+
expect(subject.author).to eq "someone"
|
12
|
+
end
|
13
|
+
|
14
|
+
it '#repository - returns Github repository name' do
|
15
|
+
expect(subject.repository).to eq "something"
|
16
|
+
end
|
17
|
+
|
18
|
+
it '#url - returns Github repository url' do
|
19
|
+
expect(subject.url).to eq "https://github.com/someone/something"
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require './lib/ghit/https_globals'
|
2
|
+
|
3
|
+
describe Ghit::HttpsGlobals do
|
4
|
+
|
5
|
+
let(:remote){ "origin\thttps://github.com/someone/something (fetch)" }
|
6
|
+
|
7
|
+
subject{ described_class.new(remote) }
|
8
|
+
|
9
|
+
it 'extracts author name from remote' do
|
10
|
+
expect(subject.author).to eq "someone"
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'extracts repo name from remote' do
|
14
|
+
expect(subject.repository).to eq "something"
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'extracts repo url from remote' do
|
18
|
+
expect(subject.url).to eq "https://github.com/someone/something"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require './lib/ghit/ssh_globals'
|
2
|
+
|
3
|
+
describe Ghit::SshGlobals do
|
4
|
+
|
5
|
+
let(:remote) { "origin\tgit@github.com:author/name.git (fetch)" }
|
6
|
+
subject{ described_class.new(remote) }
|
7
|
+
|
8
|
+
it 'extracts author name from remote' do
|
9
|
+
expect(subject.author).to eq "author"
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'extracts repo name from remote' do
|
13
|
+
expect(subject.repository).to eq "name"
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'extracts repo url from remote' do
|
17
|
+
expect(subject.url).to eq "https://github.com/author/name"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ile Eftimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: github_api
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.12'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rainbow
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: bundler
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,9 +85,13 @@ description: Ghit is a gem that adds more git commands for a better command line
|
|
57
85
|
email:
|
58
86
|
- ileeftimov@gmail.com
|
59
87
|
executables:
|
88
|
+
- git-contributors
|
89
|
+
- git-freq
|
60
90
|
- git-issues
|
61
91
|
- git-open
|
62
92
|
- git-pulls
|
93
|
+
- git-punch-card
|
94
|
+
- git-stats
|
63
95
|
- git-wiki
|
64
96
|
extensions: []
|
65
97
|
extra_rdoc_files: []
|
@@ -71,23 +103,34 @@ files:
|
|
71
103
|
- LICENSE.txt
|
72
104
|
- README.md
|
73
105
|
- Rakefile
|
106
|
+
- bin/git-contributors
|
107
|
+
- bin/git-freq
|
74
108
|
- bin/git-issues
|
75
109
|
- bin/git-open
|
76
110
|
- bin/git-pulls
|
111
|
+
- bin/git-punch-card
|
112
|
+
- bin/git-stats
|
77
113
|
- bin/git-wiki
|
78
114
|
- ghit.gemspec
|
79
115
|
- lib/ghit.rb
|
80
116
|
- lib/ghit/errors.rb
|
81
|
-
- lib/ghit/
|
117
|
+
- lib/ghit/globals.rb
|
118
|
+
- lib/ghit/https_globals.rb
|
82
119
|
- lib/ghit/remote_extracter.rb
|
83
120
|
- lib/ghit/repo_locator.rb
|
84
|
-
- lib/ghit/
|
121
|
+
- lib/ghit/repo_statistics.rb
|
122
|
+
- lib/ghit/ssh_globals.rb
|
123
|
+
- lib/ghit/stats.rb
|
124
|
+
- lib/ghit/stats/code_frequency.rb
|
125
|
+
- lib/ghit/stats/contributors.rb
|
126
|
+
- lib/ghit/stats/punch_card.rb
|
85
127
|
- lib/ghit/version.rb
|
86
|
-
- spec/
|
128
|
+
- spec/globals_spec.rb
|
129
|
+
- spec/https_globals_spec.rb
|
87
130
|
- spec/remote_extracter_spec.rb
|
88
131
|
- spec/repo_locator_spec.rb
|
89
132
|
- spec/spec_helper.rb
|
90
|
-
- spec/
|
133
|
+
- spec/ssh_globals_spec.rb
|
91
134
|
homepage: https://github.com/fteem/ghit
|
92
135
|
licenses:
|
93
136
|
- MIT
|
@@ -113,9 +156,10 @@ signing_key:
|
|
113
156
|
specification_version: 4
|
114
157
|
summary: More git commands for your enjoyment.
|
115
158
|
test_files:
|
116
|
-
- spec/
|
159
|
+
- spec/globals_spec.rb
|
160
|
+
- spec/https_globals_spec.rb
|
117
161
|
- spec/remote_extracter_spec.rb
|
118
162
|
- spec/repo_locator_spec.rb
|
119
163
|
- spec/spec_helper.rb
|
120
|
-
- spec/
|
164
|
+
- spec/ssh_globals_spec.rb
|
121
165
|
has_rdoc:
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Ghit
|
2
|
-
class HttpRemoteUrlBuilder
|
3
|
-
def initialize remote, page = nil
|
4
|
-
@remote = remote
|
5
|
-
@page = page
|
6
|
-
end
|
7
|
-
|
8
|
-
def build
|
9
|
-
"https://github.com/#{author}/#{name}/#{@page}"
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def repo_url
|
15
|
-
@remote.split[1]
|
16
|
-
end
|
17
|
-
|
18
|
-
def author
|
19
|
-
repo_url.split('/')[-2]
|
20
|
-
end
|
21
|
-
|
22
|
-
def name
|
23
|
-
repo_url.split('/')[-1]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Ghit
|
2
|
-
class SshRemoteUrlBuilder
|
3
|
-
def initialize remote, page = nil
|
4
|
-
@remote = remote
|
5
|
-
@page = page
|
6
|
-
end
|
7
|
-
|
8
|
-
def build
|
9
|
-
"https://github.com/#{author}/#{name}/#{@page}"
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def name
|
15
|
-
repo_data.split('/').last.gsub(/\.git/, '').strip
|
16
|
-
end
|
17
|
-
|
18
|
-
def author
|
19
|
-
repo_data.split('/').first.strip
|
20
|
-
end
|
21
|
-
|
22
|
-
def repo_data
|
23
|
-
@remote.split(':').last.split.first
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Ghit::HttpRemoteUrlBuilder do
|
4
|
-
let(:raw_origin) { "origin https://github.com/fteem/ghit (fetch)" }
|
5
|
-
|
6
|
-
it 'creates valid URL out of raw remote string' do
|
7
|
-
expect(described_class.new(raw_origin).build).to eq "https://github.com/fteem/ghit/"
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'appends optional page parameter to url' do
|
11
|
-
expect(described_class.new(raw_origin, 'something').build).to eq "https://github.com/fteem/ghit/something"
|
12
|
-
end
|
13
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Ghit::SshRemoteUrlBuilder do
|
4
|
-
let(:raw_origin) { "origin git@github.com:fteem/ghit.git (fetch)" }
|
5
|
-
|
6
|
-
it 'creates valid URL out of raw remote string' do
|
7
|
-
expect(described_class.new(raw_origin).build).to eq "https://github.com/fteem/ghit/"
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'appends optional page parameter to url' do
|
11
|
-
expect(described_class.new(raw_origin, 'something').build).to eq "https://github.com/fteem/ghit/something"
|
12
|
-
end
|
13
|
-
end
|