git-review 2.0.0.alpha → 2.0.0
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.
- checksums.yaml +7 -0
- data/bin/git-review +18 -9
- data/lib/git-review.rb +35 -12
- data/lib/git-review/commands.rb +157 -172
- data/lib/git-review/errors.rb +6 -0
- data/lib/git-review/helpers.rb +38 -0
- data/lib/git-review/local.rb +157 -20
- data/lib/git-review/provider/base.rb +85 -0
- data/lib/git-review/provider/bitbucket.rb +25 -0
- data/lib/git-review/provider/github.rb +271 -0
- data/lib/git-review/server.rb +61 -0
- data/lib/git-review/settings.rb +26 -21
- data/lib/mixins/accessible.rb +35 -0
- data/lib/mixins/colorizable.rb +30 -0
- data/lib/mixins/nestable.rb +16 -0
- data/lib/mixins/string.rb +13 -0
- data/lib/mixins/time.rb +11 -0
- data/lib/models/commit.rb +14 -0
- data/lib/models/repository.rb +8 -0
- data/lib/models/request.rb +18 -0
- data/lib/models/user.rb +7 -0
- metadata +72 -47
- data/lib/git-review/github.rb +0 -289
- data/lib/git-review/internals.rb +0 -47
@@ -0,0 +1,61 @@
|
|
1
|
+
module GitReview
|
2
|
+
|
3
|
+
class Server
|
4
|
+
|
5
|
+
extend Forwardable
|
6
|
+
include ::GitReview::Helpers
|
7
|
+
|
8
|
+
attr_reader :provider
|
9
|
+
|
10
|
+
def self.instance
|
11
|
+
@instance ||= new
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
init_provider
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(method, *args)
|
19
|
+
if provider.respond_to?(method)
|
20
|
+
provider.send(method, *args)
|
21
|
+
else
|
22
|
+
super
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def respond_to?(method)
|
27
|
+
provider.respond_to?(method) || super
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def init_provider
|
33
|
+
@provider = case
|
34
|
+
when bitbucket_provider?
|
35
|
+
GitReview::Provider::Bitbucket.new
|
36
|
+
when github_provider?
|
37
|
+
GitReview::Provider::Github.new
|
38
|
+
else
|
39
|
+
raise ::GitReview::InvalidGitProviderError
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def github_provider?
|
44
|
+
fetch_origin_url =~ %r(github)
|
45
|
+
end
|
46
|
+
|
47
|
+
def bitbucket_provider?
|
48
|
+
fetch_origin_url =~ %r(bitbucket)
|
49
|
+
end
|
50
|
+
|
51
|
+
def fetch_origin_url
|
52
|
+
git_call(call_origin_params)
|
53
|
+
end
|
54
|
+
|
55
|
+
def call_origin_params
|
56
|
+
"config --get remote.origin.url"
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/lib/git-review/settings.rb
CHANGED
@@ -1,48 +1,53 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'yaml'
|
3
|
+
require 'hashie'
|
3
4
|
|
4
5
|
module GitReview
|
5
6
|
|
6
7
|
class Settings
|
7
8
|
|
8
|
-
# acts like a singleton class but it's actually not
|
9
|
-
# use ::GitReview::Settings.instance everywhere except in tests
|
10
9
|
def self.instance
|
11
10
|
@instance ||= new
|
12
11
|
end
|
13
12
|
|
14
|
-
# Read settings from ~/.git_review.yml upon initialization.
|
15
|
-
def initialize
|
16
|
-
@config_file = File.join(Dir.home, '.git_review.yml')
|
17
|
-
@config = YAML.load_file(@config_file) if File.exists?(@config_file)
|
18
|
-
@config ||= {}
|
19
|
-
end
|
20
|
-
|
21
|
-
# Write settings back to file.
|
22
13
|
def save!
|
23
|
-
File.
|
24
|
-
file.write(YAML.dump(@config))
|
25
|
-
end
|
14
|
+
File.write(file, dumped)
|
26
15
|
end
|
27
16
|
|
28
|
-
# Allow to access config options.
|
29
17
|
def method_missing(method, *args)
|
30
|
-
|
31
|
-
|
32
|
-
@config[$1.to_sym] = args.shift
|
18
|
+
if args.empty?
|
19
|
+
config.send(method)
|
33
20
|
else
|
34
|
-
|
21
|
+
config.send(method, args.shift)
|
35
22
|
end
|
36
23
|
end
|
37
24
|
|
38
25
|
def respond_to?(method)
|
39
|
-
|
40
|
-
|
26
|
+
config.respond_to?(method) || super
|
27
|
+
end
|
28
|
+
|
29
|
+
protected
|
30
|
+
|
31
|
+
def config
|
32
|
+
@config ||= Hashie::Mash.new loaded
|
33
|
+
end
|
34
|
+
|
35
|
+
def file
|
36
|
+
@file ||= File.join(Dir.home, '.git_review.yml')
|
37
|
+
end
|
38
|
+
|
39
|
+
def loaded
|
40
|
+
if File.exists? file
|
41
|
+
YAML.load_file(file)
|
41
42
|
else
|
42
|
-
|
43
|
+
{}
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
47
|
+
def dumped
|
48
|
+
YAML.dump config.to_hash
|
49
|
+
end
|
50
|
+
|
46
51
|
end
|
47
52
|
|
48
53
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Accessible
|
2
|
+
|
3
|
+
# Setup simple exit criteria for recursion.
|
4
|
+
def accessible?
|
5
|
+
true
|
6
|
+
end
|
7
|
+
|
8
|
+
# Allow to set instance variables on initialization.
|
9
|
+
def initialize(attributes_hash = {})
|
10
|
+
self.update_attributes attributes_hash
|
11
|
+
end
|
12
|
+
|
13
|
+
# Provide access to instance variables like a hash with indifferent access.
|
14
|
+
def [](key)
|
15
|
+
self.instance_variable_get "@#{key}".to_sym
|
16
|
+
end
|
17
|
+
|
18
|
+
# Provide access to instance variables like a hash with indifferent access.
|
19
|
+
def []=(key, value)
|
20
|
+
self.instance_variable_set "@#{key}".to_sym, value
|
21
|
+
end
|
22
|
+
|
23
|
+
# Allow to set all attributes by assigning a hash.
|
24
|
+
def update_attributes(attributes_hash)
|
25
|
+
attributes_hash.each do |key, value|
|
26
|
+
attribute = self[key]
|
27
|
+
if attribute.respond_to? :accessible?
|
28
|
+
attribute.update_attributes(value)
|
29
|
+
else
|
30
|
+
self[key] = value
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Colorizable
|
2
|
+
|
3
|
+
# Takes a color code (= an integer) and formats the Colorizable accordingly.
|
4
|
+
def colorize(color_code)
|
5
|
+
"\e[#{color_code}m#{self}\e[0m"
|
6
|
+
end
|
7
|
+
|
8
|
+
# A couple of presets to keep the code clean.
|
9
|
+
|
10
|
+
def red
|
11
|
+
colorize 31
|
12
|
+
end
|
13
|
+
|
14
|
+
def green
|
15
|
+
colorize 32
|
16
|
+
end
|
17
|
+
|
18
|
+
def yellow
|
19
|
+
colorize 33
|
20
|
+
end
|
21
|
+
|
22
|
+
def blue
|
23
|
+
colorize 34
|
24
|
+
end
|
25
|
+
|
26
|
+
def pink
|
27
|
+
colorize 35
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Nestable
|
2
|
+
|
3
|
+
def nests(mapping)
|
4
|
+
# Setup an accessor for all nested instances.
|
5
|
+
attr_accessor *mapping.keys
|
6
|
+
|
7
|
+
# Create a nested instance automatically on initialize.
|
8
|
+
define_method(:initialize) do |arguments = nil|
|
9
|
+
mapping.each do |attribute, klass|
|
10
|
+
self.instance_variable_set "@#{attribute}".to_sym, klass.new
|
11
|
+
end
|
12
|
+
super arguments if arguments
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/lib/mixins/time.rb
ADDED
data/lib/models/user.rb
ADDED
metadata
CHANGED
@@ -1,112 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-review
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
5
|
-
prerelease: 6
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Dominik Bamberger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-10-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: launchy
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: yajl-ruby
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
42
|
+
name: hashie
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: gli
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
61
|
+
version: 2.8.0
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
68
|
+
version: 2.8.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
70
|
+
name: octokit
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.0.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.0.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
84
88
|
- !ruby/object:Gem::Version
|
85
89
|
version: 2.13.0
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - '>='
|
92
95
|
- !ruby/object:Gem::Version
|
93
96
|
version: 2.13.0
|
94
97
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
98
|
+
name: guard
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
100
|
requirements:
|
99
|
-
- -
|
101
|
+
- - '>='
|
100
102
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
103
|
+
version: 2.0.3
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
107
|
requirements:
|
107
|
-
- -
|
108
|
+
- - '>='
|
108
109
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
+
version: 2.0.3
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: guard-rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.1.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.1.0
|
110
125
|
description: Manage review workflow for projects hosted on GitHub (using pull requests).
|
111
126
|
email: bamberger.dominik@gmail.com
|
112
127
|
executables:
|
@@ -118,34 +133,44 @@ files:
|
|
118
133
|
- lib/git-review.rb
|
119
134
|
- lib/git-review/settings.rb
|
120
135
|
- lib/git-review/commands.rb
|
136
|
+
- lib/git-review/helpers.rb
|
137
|
+
- lib/git-review/server.rb
|
121
138
|
- lib/git-review/errors.rb
|
122
|
-
- lib/git-review/github.rb
|
123
|
-
- lib/git-review/internals.rb
|
124
139
|
- lib/git-review/local.rb
|
140
|
+
- lib/git-review/provider/github.rb
|
141
|
+
- lib/git-review/provider/base.rb
|
142
|
+
- lib/git-review/provider/bitbucket.rb
|
143
|
+
- lib/mixins/colorizable.rb
|
144
|
+
- lib/mixins/string.rb
|
145
|
+
- lib/mixins/accessible.rb
|
146
|
+
- lib/mixins/time.rb
|
147
|
+
- lib/mixins/nestable.rb
|
148
|
+
- lib/models/user.rb
|
149
|
+
- lib/models/commit.rb
|
150
|
+
- lib/models/repository.rb
|
151
|
+
- lib/models/request.rb
|
125
152
|
- bin/git-review
|
126
153
|
homepage: http://github.com/b4mboo/git-review
|
127
154
|
licenses: []
|
155
|
+
metadata: {}
|
128
156
|
post_install_message:
|
129
157
|
rdoc_options: []
|
130
158
|
require_paths:
|
131
159
|
- lib
|
132
160
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
161
|
requirements:
|
135
|
-
- -
|
162
|
+
- - '>='
|
136
163
|
- !ruby/object:Gem::Version
|
137
164
|
version: '0'
|
138
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
166
|
requirements:
|
141
|
-
- -
|
167
|
+
- - '>='
|
142
168
|
- !ruby/object:Gem::Version
|
143
|
-
version:
|
169
|
+
version: '0'
|
144
170
|
requirements: []
|
145
171
|
rubyforge_project:
|
146
|
-
rubygems_version:
|
172
|
+
rubygems_version: 2.0.3
|
147
173
|
signing_key:
|
148
|
-
specification_version:
|
149
|
-
summary:
|
174
|
+
specification_version: 4
|
175
|
+
summary: Facilitates GitHub code reviews
|
150
176
|
test_files: []
|
151
|
-
has_rdoc:
|