git_diff_parser 2.1.2 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.conventional-changelog.context.js +17 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +0 -3
- data/.travis.yml +11 -9
- data/Gemfile +3 -0
- data/README.md +27 -3
- data/Rakefile +9 -0
- data/bin/setup +14 -6
- data/changelog.md +4 -0
- data/git_diff_parser.gemspec +5 -5
- data/lib/git_diff_parser.rb +5 -0
- data/lib/git_diff_parser/diff_parser.rb +6 -0
- data/lib/git_diff_parser/line.rb +10 -0
- data/lib/git_diff_parser/patch.rb +45 -0
- data/lib/git_diff_parser/patches.rb +11 -0
- data/lib/git_diff_parser/version.rb +1 -1
- data/package.json +11 -0
- metadata +16 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b9c1edf73e6e914929331d565114ba7f3514aba
|
4
|
+
data.tar.gz: 07cf0a06016067f4139ddc4e1b62abb2af88e250
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b18677c9b988875a4eba90a303b72c41943579367e300b7c39d6423dc092f58912cf22df02ffce849c320cd9392cd8177afb7be35c8de67a4d6aae8b483f2b82
|
7
|
+
data.tar.gz: fc63c6812d623d479e6b2e73eebc35f47941f29b5c4d9c8f9bece40d7bcf90a6aa65fd0a5a230420596c1f63de57822a5ba29dea7e4fd328b9f991b59389caa7
|
@@ -0,0 +1,17 @@
|
|
1
|
+
'use strict';
|
2
|
+
var execSync = require('child_process').execSync;
|
3
|
+
var URI = require('urijs');
|
4
|
+
|
5
|
+
var gemspec = JSON.parse(execSync('bundle exec parse-gemspec-cli git_diff_parser.gemspec'));
|
6
|
+
var homepageUrl = gemspec.homepage;
|
7
|
+
var url = new URI(homepageUrl);
|
8
|
+
var host = url.protocol() + '://' + url.authority();
|
9
|
+
var owner = url.pathname().split('/')[1];
|
10
|
+
var repository = url.pathname().split('/')[2];
|
11
|
+
|
12
|
+
module.exports = {
|
13
|
+
version: gemspec.version,
|
14
|
+
host: host,
|
15
|
+
owner: owner,
|
16
|
+
repository: repository
|
17
|
+
};
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
language: ruby
|
1
|
+
language: "ruby"
|
2
2
|
sudo: false
|
3
3
|
rvm:
|
4
|
-
- 1.9
|
5
|
-
- 2.0
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
4
|
+
- "1.9"
|
5
|
+
- "2.0"
|
6
|
+
- "2.1"
|
7
|
+
- "2.2"
|
8
|
+
- "ruby-head"
|
9
|
+
matrix:
|
10
|
+
allow_failures:
|
11
|
+
- rvm: "ruby-head"
|
8
12
|
before_install:
|
9
|
-
- gem update bundler
|
13
|
+
- "gem update bundler"
|
14
|
+
- "bin/setup"
|
10
15
|
notifications:
|
11
16
|
email:
|
12
17
|
- ogataken@gmail.com
|
13
|
-
branches:
|
14
|
-
only:
|
15
|
-
- master
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# GitDiffParser
|
2
2
|
|
3
|
-
[![Gem
|
4
|
-
|
3
|
+
[![Gem version][gem-image]][gem-url] [![Travis-CI Status][travis-image]][travis-url] [![yard docs][docs-image]][docs-url]
|
4
|
+
|
5
|
+
> Parse `git diff` into patches and lines.
|
5
6
|
|
6
|
-
Parser for `git diff`.
|
7
7
|
|
8
8
|
## Examples
|
9
9
|
|
@@ -95,6 +95,17 @@ patch.changed_lines
|
|
95
95
|
# @content="+ body = concat_body(data)\n", @patch_position=13>]
|
96
96
|
```
|
97
97
|
|
98
|
+
|
99
|
+
## API
|
100
|
+
|
101
|
+
And more *[details][docs-url]*.
|
102
|
+
|
103
|
+
|
104
|
+
## Changelog
|
105
|
+
|
106
|
+
[changelog.md](./changelog.md).
|
107
|
+
|
108
|
+
|
98
109
|
## Installation
|
99
110
|
|
100
111
|
Add this line to your application's Gemfile:
|
@@ -111,12 +122,14 @@ Or install it yourself as:
|
|
111
122
|
|
112
123
|
$ gem install git_diff_parser
|
113
124
|
|
125
|
+
|
114
126
|
## Development
|
115
127
|
|
116
128
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
117
129
|
|
118
130
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
119
131
|
|
132
|
+
|
120
133
|
## Contributing
|
121
134
|
|
122
135
|
1. Fork it ( https://github.com/packsaddle/ruby-git_diff_parser/fork )
|
@@ -125,10 +138,13 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
125
138
|
4. Push to the branch (`git push origin my-new-feature`)
|
126
139
|
5. Create a new Pull Request
|
127
140
|
|
141
|
+
|
128
142
|
## License
|
143
|
+
|
129
144
|
### git_diff_parser
|
130
145
|
Copyright (c) 2015 sanemat. [Licensed under the MIT license](./LICENSE)
|
131
146
|
|
147
|
+
|
132
148
|
### original [thoughtbot/hound](https://github.com/thoughtbot/hound)
|
133
149
|
|
134
150
|
Copyright (c) 2014 thoughtbot, inc. [Licensed under the MIT license](./thoughtbot-hound/LICENSE)
|
@@ -136,3 +152,11 @@ Copyright (c) 2014 thoughtbot, inc. [Licensed under the MIT license](./thoughtbo
|
|
136
152
|
* lib/git_diff_parser/line.rb <- app/models/line.rb
|
137
153
|
* lib/git_diff_parser/patch.rb <- app/models/patch.rb
|
138
154
|
* spec/git_diff_parser/patch_spec.rb <- spec/models/patch_spec.rb
|
155
|
+
|
156
|
+
|
157
|
+
[travis-url]: https://travis-ci.org/packsaddle/ruby-git_diff_parser
|
158
|
+
[travis-image]: https://img.shields.io/travis/packsaddle/ruby-git_diff_parser/master.svg?style=flat-square&label=build%20%28linux%29
|
159
|
+
[gem-url]: https://rubygems.org/gems/git_diff_parser
|
160
|
+
[gem-image]: http://img.shields.io/gem/v/git_diff_parser.svg?style=flat-square
|
161
|
+
[docs-url]: http://www.rubydoc.info/gems/git_diff_parser
|
162
|
+
[docs-image]: https://img.shields.io/badge/yard-docs-blue.svg?style=flat-square
|
data/Rakefile
CHANGED
@@ -7,3 +7,12 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
7
7
|
end
|
8
8
|
|
9
9
|
task default: :spec
|
10
|
+
|
11
|
+
require 'yard'
|
12
|
+
require 'yard/rake/yardoc_task'
|
13
|
+
DOC_FILES = ['lib/**/*.rb']
|
14
|
+
DOC_OPTIONS = ['--debug', '--verbose']
|
15
|
+
YARD::Rake::YardocTask.new(:doc) do |t|
|
16
|
+
t.files = DOC_FILES
|
17
|
+
t.options = DOC_OPTIONS if Rake.application.options.trace
|
18
|
+
end
|
data/bin/setup
CHANGED
@@ -1,7 +1,15 @@
|
|
1
|
-
#!/bin/
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
1
|
+
#!/usr/bin/env ruby
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
require 'open3'
|
4
|
+
unless ENV['CI']
|
5
|
+
out, err, status = Open3.capture3(*%w(bundle install))
|
6
|
+
$stdout.puts out
|
7
|
+
$stderr.puts err
|
8
|
+
exit status.exitstatus if !status.exitstatus.nil? && status.exitstatus != 0
|
9
|
+
end
|
10
|
+
unless ENV['CI']
|
11
|
+
out, err, status = Open3.capture3(*%w(npm install))
|
12
|
+
$stdout.puts out
|
13
|
+
$stderr.puts err
|
14
|
+
exit status.exitstatus if !status.exitstatus.nil? && status.exitstatus != 0
|
15
|
+
end
|
data/changelog.md
ADDED
data/git_diff_parser.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['sanemat']
|
10
10
|
spec.email = ['o.gata.ken@gmail.com']
|
11
11
|
|
12
|
-
spec.summary = '
|
13
|
-
spec.description = 'Parse `git diff`
|
12
|
+
spec.summary = 'Parse `git diff` into patches and lines.'
|
13
|
+
spec.description = 'Parse `git diff` into patches and lines.'
|
14
14
|
spec.homepage = 'https://github.com/packsaddle/ruby-git_diff_parser'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
|
-
spec.add_development_dependency 'bundler', '
|
27
|
-
spec.add_development_dependency 'rake', '
|
28
|
-
spec.add_development_dependency 'rspec'
|
26
|
+
spec.add_development_dependency 'bundler', '>= 0'
|
27
|
+
spec.add_development_dependency 'rake', '>= 0'
|
28
|
+
spec.add_development_dependency 'rspec', '>= 0'
|
29
29
|
end
|
data/lib/git_diff_parser.rb
CHANGED
@@ -4,7 +4,12 @@ require 'git_diff_parser/patch'
|
|
4
4
|
require 'git_diff_parser/patches'
|
5
5
|
require 'git_diff_parser/diff_parser'
|
6
6
|
|
7
|
+
# Parse `git diff` into patches and lines
|
7
8
|
module GitDiffParser
|
9
|
+
|
10
|
+
# @param contents [String] `git diff` result.
|
11
|
+
#
|
12
|
+
# @return [Patches<Patch>] parsed patches and lines
|
8
13
|
def self.parse(contents)
|
9
14
|
DiffParser.parse(contents)
|
10
15
|
end
|
@@ -1,5 +1,11 @@
|
|
1
1
|
module GitDiffParser
|
2
|
+
# Parse entire `git diff` into Patches and Patch
|
2
3
|
class DiffParser
|
4
|
+
# Parse entire `git diff` into Patches and Patch
|
5
|
+
#
|
6
|
+
# @param contents [String] `git diff` result
|
7
|
+
#
|
8
|
+
# @return [Patches<Patch>] parsed object
|
3
9
|
def self.parse(contents)
|
4
10
|
body = false
|
5
11
|
file_name = ''
|
data/lib/git_diff_parser/line.rb
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
module GitDiffParser
|
2
|
+
# Parsed line
|
2
3
|
class Line
|
3
4
|
attr_reader :number, :patch_position
|
5
|
+
# @!attribute [r] number
|
6
|
+
# @return [Integer] line number
|
7
|
+
# @!attribute [r] patch_position
|
8
|
+
# @return [Integer] line patch position
|
4
9
|
|
10
|
+
# @param options [Hash] this is not options
|
11
|
+
# @option options [Integer] :number line number (required)
|
12
|
+
# @option options [String] :content content (required)
|
13
|
+
# @option options [Integer] :patch_position patch position (required)
|
5
14
|
def initialize(options = {})
|
6
15
|
fail(ArgumentError('number is required')) unless options[:number]
|
7
16
|
fail(ArgumentError('content is required')) unless options[:content]
|
@@ -11,6 +20,7 @@ module GitDiffParser
|
|
11
20
|
@patch_position = options[:patch_position]
|
12
21
|
end
|
13
22
|
|
23
|
+
# @return [Boolean] true if line changed
|
14
24
|
def changed?
|
15
25
|
true
|
16
26
|
end
|
@@ -1,17 +1,58 @@
|
|
1
1
|
module GitDiffParser
|
2
|
+
# Parsed patch
|
2
3
|
class Patch
|
3
4
|
RANGE_INFORMATION_LINE = /^@@ .+\+(?<line_number>\d+),/
|
4
5
|
MODIFIED_LINE = /^\+(?!\+|\+)/
|
5
6
|
NOT_REMOVED_LINE = /^[^-]/
|
6
7
|
|
7
8
|
attr_accessor :file, :body, :secure_hash
|
9
|
+
# @!attribute [rw] file
|
10
|
+
# @return [String, nil] file path or nil
|
11
|
+
# @!attribute [rw] body
|
12
|
+
# @return [String, nil] patch section in `git diff` or nil
|
13
|
+
# @see #initialize
|
14
|
+
# @!attribute [rw] secure_hash
|
15
|
+
# @return [String, nil] target sha1 hash or nil
|
8
16
|
|
17
|
+
# @param body [String] patch section in `git diff`.
|
18
|
+
# GitHub's pull request file's patch.
|
19
|
+
# GitHub's commit file's patch.
|
20
|
+
#
|
21
|
+
# <<-BODY
|
22
|
+
# @@ -11,7 +11,7 @@ def valid?
|
23
|
+
#
|
24
|
+
# def run
|
25
|
+
# api.create_pending_status(*api_params, 'Hound is working...')
|
26
|
+
# - @style_guide.check(pull_request_additions)
|
27
|
+
# + @style_guide.check(api.pull_request_files(@pull_request))
|
28
|
+
# build = repo.builds.create!(violations: @style_guide.violations)
|
29
|
+
# update_api_status(build)
|
30
|
+
# end
|
31
|
+
# @@ -19,6 +19,7 @@ def run
|
32
|
+
# private
|
33
|
+
#
|
34
|
+
# def update_api_status(build = nil)
|
35
|
+
# + # might not need this after using Rubocop and fetching individual files.
|
36
|
+
# sleep 1
|
37
|
+
# if @style_guide.violations.any?
|
38
|
+
# api.create_failure_status(*api_params, 'Hound does not approve', build_url(build))
|
39
|
+
# BODY
|
40
|
+
#
|
41
|
+
# @param options [Hash] options
|
42
|
+
# @option options [String] :file file path
|
43
|
+
# @option options [String] 'file' file path
|
44
|
+
# @option options [String] :secure_hash target sha1 hash
|
45
|
+
# @option options [String] 'secure_hash' target sha1 hash
|
46
|
+
#
|
47
|
+
# @see https://developer.github.com/v3/repos/commits/#get-a-single-commit
|
48
|
+
# @see https://developer.github.com/v3/pulls/#list-pull-requests-files
|
9
49
|
def initialize(body, options = {})
|
10
50
|
@body = body || ''
|
11
51
|
@file = options[:file] || options['file'] if options[:file] || options['file']
|
12
52
|
@secure_hash = options[:secure_hash] || options['secure_hash'] if options[:secure_hash] || options['secure_hash']
|
13
53
|
end
|
14
54
|
|
55
|
+
# @return [Array<Line>] changed lines
|
15
56
|
def changed_lines
|
16
57
|
line_number = 0
|
17
58
|
|
@@ -35,10 +76,14 @@ module GitDiffParser
|
|
35
76
|
end
|
36
77
|
end
|
37
78
|
|
79
|
+
# @return [Array<Integer>] changed line numbers
|
38
80
|
def changed_line_numbers
|
39
81
|
changed_lines.map(&:number)
|
40
82
|
end
|
41
83
|
|
84
|
+
# @param line_number [Integer] line number
|
85
|
+
#
|
86
|
+
# @return [Integer, nil] patch position
|
42
87
|
def find_patch_position_by_line_number(line_number)
|
43
88
|
target = changed_lines.find { |line| line.number == line_number }
|
44
89
|
return nil unless target
|
@@ -1,26 +1,37 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
module GitDiffParser
|
3
|
+
# The array of patch
|
3
4
|
class Patches < DelegateClass(Array)
|
5
|
+
# @return [Patches<Patch>]
|
4
6
|
def self.[](*ary)
|
5
7
|
new(ary)
|
6
8
|
end
|
7
9
|
|
10
|
+
# @return [Patches<Patch>]
|
8
11
|
def initialize(*args)
|
9
12
|
super Array.new(*args)
|
10
13
|
end
|
11
14
|
|
15
|
+
# @return [Array<String>] file path
|
12
16
|
def files
|
13
17
|
map(&:file)
|
14
18
|
end
|
15
19
|
|
20
|
+
# @return [Array<String>] target sha1 hash
|
16
21
|
def secure_hashes
|
17
22
|
map(&:secure_hash)
|
18
23
|
end
|
19
24
|
|
25
|
+
# @param file [String] file path
|
26
|
+
#
|
27
|
+
# @return [Patch, nil]
|
20
28
|
def find_patch_by_file(file)
|
21
29
|
find { |patch| patch.file == file }
|
22
30
|
end
|
23
31
|
|
32
|
+
# @param secure_hash [String] target sha1 hash
|
33
|
+
#
|
34
|
+
# @return [Patch, nil]
|
24
35
|
def find_patch_by_secure_hash(secure_hash)
|
25
36
|
find { |patch| patch.secure_hash == secure_hash }
|
26
37
|
end
|
data/package.json
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
{
|
2
|
+
"devDependencies": {
|
3
|
+
"conventional-changelog": "0.4.3",
|
4
|
+
"npm-check-updates": "^2.2.3",
|
5
|
+
"urijs": "^1.16.1"
|
6
|
+
},
|
7
|
+
"scripts": {
|
8
|
+
"changelog": "conventional-changelog -i changelog.md --overwrite --preset angular --context .conventional-changelog.context.js",
|
9
|
+
"ncu": "ncu -u"
|
10
|
+
}
|
11
|
+
}
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_diff_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sanemat
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,13 +52,14 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description: Parse `git diff`
|
55
|
+
description: Parse `git diff` into patches and lines.
|
56
56
|
email:
|
57
57
|
- o.gata.ken@gmail.com
|
58
58
|
executables: []
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
+
- ".conventional-changelog.context.js"
|
62
63
|
- ".gitignore"
|
63
64
|
- ".rspec"
|
64
65
|
- ".rubocop.yml"
|
@@ -71,6 +72,7 @@ files:
|
|
71
72
|
- Rakefile
|
72
73
|
- bin/console
|
73
74
|
- bin/setup
|
75
|
+
- changelog.md
|
74
76
|
- git_diff_parser.gemspec
|
75
77
|
- lib/git_diff_parser.rb
|
76
78
|
- lib/git_diff_parser/diff_parser.rb
|
@@ -78,6 +80,7 @@ files:
|
|
78
80
|
- lib/git_diff_parser/patch.rb
|
79
81
|
- lib/git_diff_parser/patches.rb
|
80
82
|
- lib/git_diff_parser/version.rb
|
83
|
+
- package.json
|
81
84
|
- thoughtbot-hound/LICENSE
|
82
85
|
homepage: https://github.com/packsaddle/ruby-git_diff_parser
|
83
86
|
licenses:
|
@@ -102,5 +105,6 @@ rubyforge_project:
|
|
102
105
|
rubygems_version: 2.4.5
|
103
106
|
signing_key:
|
104
107
|
specification_version: 4
|
105
|
-
summary:
|
108
|
+
summary: Parse `git diff` into patches and lines.
|
106
109
|
test_files: []
|
110
|
+
has_rdoc:
|