pronto 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aee7842b944b766cac6e64a07fd72333b1b6ce36
4
- data.tar.gz: b6147f255ec4aa33acb6bd36148bb1cdff8911cf
3
+ metadata.gz: 85dc0a7bada137f7afa7bcebe1c07ea768cee9c7
4
+ data.tar.gz: b6448d7d62c19197b5480e6b02d37e7ff5329a74
5
5
  SHA512:
6
- metadata.gz: c02f143f97b9fb14dd2bf01642736cee91ce53053c2088219d2504dff5bdf3f0982c70aba54617f5cbfce30456b7c985e440984ae090802781a1321c3bd8e565
7
- data.tar.gz: 521645b6364f2524132e732f07d8ce732039045cabf475871f2e6c815040b6a7276d5a2523d2e3c153f220a02427f2a85ca1d2dbe3caef2c2fbd146d209f5563
6
+ metadata.gz: 19a811421795f9d684e768342d875267a91152dbc1a1182a18c697788d5cbb92fec73a6454d80af1b2d7021123a749682cc92d7c22c6cbbd2c7eb57bfb29bc93
7
+ data.tar.gz: 1e048107685ea2175ce0d753823813c689932d4c8ebc7415cd429cd8a9d4a3e6afc68167db40e2db747cddfa606be8496cd4b4de0adaf782c8b459f4b15acc00
data/README.md CHANGED
@@ -6,14 +6,15 @@
6
6
 
7
7
  ## Usage
8
8
 
9
- Pronto runs analysis quickly by checking only the introduced changes.
9
+ Pronto runs analysis quickly by checking only the introduced changes. Created
10
+ to be used on pull requets, but suited for other scenarios as well.
10
11
 
11
12
  ![Pronto demo](pronto.gif "")
12
13
 
13
14
  ### Pull Requests
14
15
 
15
- You can run Pronto as part of your builds and then get results as commit
16
- comments using `GithubFormatter`.
16
+ You can run Pronto as part of your builds and then get results as comments
17
+ using `GithubFormatter`.
17
18
 
18
19
  Actually, Pronto runs Pronto whenever you make a pull request on Pronto. It
19
20
  uses Travis CI and the included `TravisPullRequest` rake task for that.
data/lib/pronto.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  require 'rugged'
2
- require_relative 'pronto/rugged/diff'
3
- require_relative 'pronto/rugged/diff/delta'
4
- require_relative 'pronto/rugged/diff/patch'
5
- require_relative 'pronto/rugged/diff/line'
6
- require_relative 'pronto/rugged/tree'
7
- require_relative 'pronto/rugged/remote'
8
- require_relative 'pronto/rugged/repository'
2
+ require 'pronto/rugged/diff'
3
+ require 'pronto/rugged/diff/delta'
4
+ require 'pronto/rugged/diff/patch'
5
+ require 'pronto/rugged/diff/line'
6
+ require 'pronto/rugged/tree'
7
+ require 'pronto/rugged/remote'
8
+ require 'pronto/rugged/repository'
9
+ require 'pronto/rugged/commit'
9
10
 
10
11
  require 'pronto/plugin'
11
12
  require 'pronto/message'
@@ -6,12 +6,12 @@ module Pronto
6
6
  def format(messages)
7
7
  commit_messages = messages.map do |message|
8
8
  repo = github_slug(message)
9
- sha = commit_sha(message)
10
- position = message.line.position
9
+ sha = message.line.commit_sha
10
+ position = message.line.commit_line.position
11
11
  path = message.path
12
12
  body = message.msg
13
13
 
14
- create_commit_comment(repo, sha, position, path, body)
14
+ create_comment(repo, sha, position, path, body)
15
15
  end
16
16
 
17
17
  "#{commit_messages.compact.count} Pronto messages posted to GitHub"
@@ -19,15 +19,16 @@ module Pronto
19
19
 
20
20
  private
21
21
 
22
- def create_commit_comment(repo, sha, position, path, body)
23
- commit_comments = client.commit_comments(repo, sha)
24
- existing_comment = commit_comments.find do |comment|
25
- comment.position = position &&
22
+ def create_comment(repo, sha, position, path, body)
23
+ comments = client.commit_comments(repo, sha)
24
+
25
+ existing_comment = comments.find do |comment|
26
+ comment.position == position &&
26
27
  comment.path == path &&
27
28
  comment.body == body
28
29
  end
29
30
 
30
- if existing_comment.nil?
31
+ unless existing_comment
31
32
  client.create_commit_comment(repo, sha, body, path, nil, position)
32
33
  end
33
34
  end
@@ -43,21 +44,6 @@ module Pronto
43
44
  def github_slug(message)
44
45
  message.repo.remotes.map(&:github_slug).compact.first
45
46
  end
46
-
47
- def commit_sha(message)
48
- blamelines = blame(message).lines
49
- lineno = message.line.new_lineno
50
-
51
- blameline = blamelines.find { |line| line.lineno == lineno }
52
-
53
- blameline.commit.id if blameline
54
- end
55
-
56
- def blame(message)
57
- @blames ||= {}
58
- @blames[message.path] ||= message.repo.blame(message.path)
59
- @blames[message.path]
60
- end
61
47
  end
62
48
  end
63
49
  end
@@ -31,11 +31,11 @@ module Pronto
31
31
  end
32
32
 
33
33
  def run_task(verbose)
34
- return if pull_request_number.nil? || pull_request_number == 'false'
34
+ return if pull_id.nil? || pull_id == 'false'
35
35
 
36
36
  client = Octokit::Client.new
37
37
 
38
- pull_request = client.pull_request(repo_slug, pull_request_number)
38
+ pull_request = client.pull_request(repo_slug, pull_id)
39
39
  formatter = ::Pronto::Formatter::GithubFormatter.new
40
40
 
41
41
  ::Pronto.gem_names.each { |gem_name| require "pronto/#{gem_name}" }
@@ -44,7 +44,7 @@ module Pronto
44
44
 
45
45
  private
46
46
 
47
- def pull_request_number
47
+ def pull_id
48
48
  ENV['TRAVIS_PULL_REQUEST']
49
49
  end
50
50
 
@@ -0,0 +1,9 @@
1
+ module Rugged
2
+ class Commit
3
+ def show
4
+ # TODO: Rugged does not seem to support diffing against multiple parents
5
+ return if parents.count != 1
6
+ diff(parents.first)
7
+ end
8
+ end
9
+ end
@@ -12,12 +12,49 @@ module Rugged
12
12
  line_index + hunk_index + 1
13
13
  end
14
14
 
15
+ def commit
16
+ @commit ||= begin
17
+ repo.lookup(commit_sha) if commit_sha
18
+ end
19
+ end
20
+
21
+ def commit_sha
22
+ @commit_sha ||= begin
23
+ blameline.commit.id if blameline
24
+ end
25
+ end
26
+
27
+ def commit_line
28
+ @commit_line ||= begin
29
+ commit_patch = commit.show.patches.find do |p|
30
+ patch.new_file_full_path == p.new_file_full_path
31
+ end
32
+
33
+ commit_patch.lines.find do |l|
34
+ blameline.oldlineno == l.old_lineno
35
+ end
36
+ end
37
+ end
38
+
15
39
  def ==(other)
16
40
  content == other.content &&
17
41
  line_origin == other.line_origin &&
18
42
  old_lineno == other.old_lineno &&
19
43
  new_lineno == other.new_lineno
20
44
  end
45
+
46
+ private
47
+
48
+ def repo
49
+ patch.diff.tree.repo
50
+ end
51
+
52
+ def blameline
53
+ @blameline ||= begin
54
+ blamelines = repo.blame(patch.new_file_full_path).lines
55
+ blamelines.find { |line| line.lineno == new_lineno }
56
+ end
57
+ end
21
58
  end
22
59
  end
23
60
  end
@@ -1,3 +1,3 @@
1
1
  module Pronto
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pronto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindaugas Mozūras
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-03 00:00:00.000000000 Z
11
+ date: 2013-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rugged
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 2.2.0
47
+ version: 2.3.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 2.2.0
54
+ version: 2.3.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: grit
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +123,7 @@ files:
123
123
  - lib/pronto/message.rb
124
124
  - lib/pronto/plugin.rb
125
125
  - lib/pronto/rake_task/travis_pull_request.rb
126
+ - lib/pronto/rugged/commit.rb
126
127
  - lib/pronto/rugged/diff/delta.rb
127
128
  - lib/pronto/rugged/diff/line.rb
128
129
  - lib/pronto/rugged/diff/patch.rb