lock_diff 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/README.md +7 -2
- data/exe/lock_diff +3 -16
- data/exe/lock_diff_for_tachikoma +3 -15
- data/lib/lock_diff/formatter/github_markdown.rb +1 -1
- data/lib/lock_diff/gem/diff_info.rb +13 -1
- data/lib/lock_diff/gem/gem.rb +0 -8
- data/lib/lock_diff/gem/version.rb +19 -2
- data/lib/lock_diff/github/change_log_url_finder.rb +3 -2
- data/lib/lock_diff/github/client.rb +4 -4
- data/lib/lock_diff/option_parser.rb +48 -0
- data/lib/lock_diff/version.rb +1 -1
- data/lib/lock_diff.rb +2 -2
- metadata +4 -3
- data/.circleci/config.yml +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5daade500e51cc434beb8931d9ff6b12d7dde3e
|
4
|
+
data.tar.gz: 8a33731e03a14c8768bae59dd80bf7d84f3f228f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 123148022cfa87ba4b0b125f4656c779a33f87dcd52f7e1e5ca4e10fc534a35ce82c92dacd539a40060ae45471197973cc7cdf679efaac99f901d0b78fd285b9
|
7
|
+
data.tar.gz: 2ad1171f41b5a751685780d886e54b9cb9d8857d4f92735c938c17f5b603b60ada2e24b6b58764a08fb6211f103ddc77720f35ff03c3a21d0ba62c6cc42f92c0
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# LockDiff
|
2
2
|
|
3
|
-
[![
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/lock_diff.svg)](https://badge.fury.io/rb/lock_diff)
|
4
|
+
[![GitHub tag](https://img.shields.io/github/tag/vividmuimui/lock_diff.svg)](https://github.com/vividmuimui/lock_diff/tags)
|
5
|
+
[![Build Status](https://travis-ci.org/vividmuimui/lock_diff.svg?branch=master)](https://travis-ci.org/vividmuimui/lock_diff)
|
6
|
+
[![Dependency Status](https://gemnasium.com/badges/github.com/vividmuimui/lock_diff.svg)](https://gemnasium.com/github.com/vividmuimui/lock_diff)
|
7
|
+
[![Code Climate](https://codeclimate.com/github/vividmuimui/lock_diff/badges/gpa.svg)](https://codeclimate.com/github/vividmuimui/lock_diff)
|
8
|
+
[![Issue Count](https://codeclimate.com/github/vividmuimui/lock_diff/badges/issue_count.svg)](https://codeclimate.com/github/vividmuimui/lock_diff)
|
4
9
|
|
5
10
|
This gem detects changes to your package manager (e.g. Gemfile) and generates a Markdown-formatted diff including:
|
6
11
|
|
@@ -69,7 +74,7 @@ When used in conjunction with [tachikoma](https://rubygems.org/gems/tachikoma),
|
|
69
74
|
#### Command line
|
70
75
|
|
71
76
|
```sh
|
72
|
-
$
|
77
|
+
$ lock_diff_for_tachikoma
|
73
78
|
Usage: lock_diff_for_tachikoma [options]
|
74
79
|
-r, --repository=REPOSITORY required. Like as "user/repository"
|
75
80
|
--post-comment=true or false default=false
|
data/exe/lock_diff
CHANGED
@@ -1,20 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "lock_diff"
|
4
|
-
require "
|
4
|
+
require "lock_diff/option_parser"
|
5
5
|
|
6
|
-
options =
|
7
|
-
|
8
|
-
}
|
9
|
-
opt = OptionParser.new
|
10
|
-
|
11
|
-
opt.on('-r', '--repository=REPOSITORY', 'required. Like as "user/repository"') { |v| options[:repository] = v }
|
12
|
-
opt.on('-n', '--number=PULL_REQUEST_NUMBER', 'required') { |v| options[:number] = v }
|
13
|
-
opt.on('--post-comment=true or false', '(default=false. Print result to stdout when false.)') { |v| options[:post_comment] = v }
|
14
|
-
opt.parse!
|
15
|
-
|
16
|
-
unless options[:repository] && options[:number]
|
17
|
-
$stdout.puts opt.help
|
18
|
-
else
|
19
|
-
LockDiff.run(options)
|
20
|
-
end
|
6
|
+
options = LockDiff::OptionParser.parse(ARGV, require_flags: %i(repository number))
|
7
|
+
LockDiff.run(options)
|
data/exe/lock_diff_for_tachikoma
CHANGED
@@ -1,19 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "lock_diff"
|
4
|
-
require "
|
4
|
+
require "lock_diff/option_parser"
|
5
5
|
|
6
|
-
options =
|
7
|
-
|
8
|
-
}
|
9
|
-
opt = OptionParser.new
|
10
|
-
|
11
|
-
opt.on('-r', '--repository=REPOSITORY', 'required. Like as "user/repository"') { |v| options[:repository] = v }
|
12
|
-
opt.on('--post-comment=true or false', '(default=false. Print result to stdout when false.)') { |v| options[:post_comment] = v }
|
13
|
-
opt.parse!
|
14
|
-
|
15
|
-
unless options[:repository]
|
16
|
-
$stdout.puts opt.help
|
17
|
-
else
|
18
|
-
LockDiff.run_by_latest_tachikoma(options)
|
19
|
-
end
|
6
|
+
options = LockDiff::OptionParser.parse(ARGV, require_flags: %i(repository))
|
7
|
+
LockDiff.run_by_latest_tachikoma(options)
|
@@ -4,7 +4,7 @@ module LockDiff
|
|
4
4
|
extend Forwardable
|
5
5
|
|
6
6
|
attr_reader :old_version, :new_version
|
7
|
-
def_delegators :@gem, :name, :url
|
7
|
+
def_delegators :@gem, :name, :url
|
8
8
|
|
9
9
|
def self.by(old_spec:, new_spec:)
|
10
10
|
gem = Gem.new(new_spec.name)
|
@@ -26,6 +26,18 @@ module LockDiff
|
|
26
26
|
@old_version.version != @new_version.version
|
27
27
|
end
|
28
28
|
|
29
|
+
def change_log_url
|
30
|
+
@change_log_url ||= Github::ChangeLogUrlFinder.new(
|
31
|
+
repository: @gem.repository,
|
32
|
+
github_url: @gem.github_url,
|
33
|
+
ref: @new_version.ref
|
34
|
+
).call
|
35
|
+
end
|
36
|
+
|
37
|
+
def change_log_name
|
38
|
+
File.basename(change_log_url)
|
39
|
+
end
|
40
|
+
|
29
41
|
def diff_url
|
30
42
|
return unless @gem.github_url && @old_version.ref && @new_version.ref
|
31
43
|
"#{@gem.github_url}/compare/#{@old_version.ref}...#{@new_version.ref}"
|
data/lib/lock_diff/gem/gem.rb
CHANGED
@@ -15,18 +15,10 @@ module LockDiff
|
|
15
15
|
@ruby_gem.github_url || @ruby_gem.homepage_url
|
16
16
|
end
|
17
17
|
|
18
|
-
def change_log_url
|
19
|
-
@change_log_url ||= Github::ChangeLogUrlFinder.new(repository: repository, github_url: @ruby_gem.github_url).call
|
20
|
-
end
|
21
|
-
|
22
18
|
def repository
|
23
19
|
Github::RepositoryNameDetector.new(@ruby_gem.github_url).call
|
24
20
|
end
|
25
21
|
|
26
|
-
def tag_names
|
27
|
-
@tag_names ||= LockDiff.client.tag_names(repository)
|
28
|
-
end
|
29
|
-
|
30
22
|
end
|
31
23
|
end
|
32
24
|
end
|
@@ -15,18 +15,35 @@ module LockDiff
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_s
|
18
|
-
|
18
|
+
revision || version.to_s
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def git_tag
|
24
|
+
return @git_tag if defined? @git_tag
|
25
|
+
@git_tag = find_tag(limit: 4, per_page: 50)
|
26
|
+
end
|
27
|
+
|
28
|
+
def find_tag(page: 1, limit:, per_page:)
|
29
|
+
return nil if page > limit
|
30
|
+
|
24
31
|
version_str = version.to_s
|
25
|
-
@gem.
|
32
|
+
fetched_tags = LockDiff.client.tag_names(@gem.repository, page: page, per_page: per_page)
|
33
|
+
tag = fetched_tags.find do |tag_name|
|
26
34
|
tag_name == version_str ||
|
27
35
|
tag_name == "v#{version_str}" ||
|
28
36
|
tag_name == "#{@gem.name}-#{version_str}"
|
29
37
|
end
|
38
|
+
|
39
|
+
if tag
|
40
|
+
return tag
|
41
|
+
else
|
42
|
+
LockDiff.logger.debug { "Not found tag of #{@gem.name}, #{version_str} by page: #{page}, per_page: #{per_page}"}
|
43
|
+
unless fetched_tags.count < per_page
|
44
|
+
find_tag(page: page + 1, limit: limit, per_page: per_page)
|
45
|
+
end
|
46
|
+
end
|
30
47
|
end
|
31
48
|
|
32
49
|
end
|
@@ -10,9 +10,10 @@ module LockDiff
|
|
10
10
|
news
|
11
11
|
)
|
12
12
|
|
13
|
-
def initialize(repository:, github_url:)
|
13
|
+
def initialize(repository:, github_url:, ref:)
|
14
14
|
@repository = repository
|
15
15
|
@github_url = github_url
|
16
|
+
@ref = ref
|
16
17
|
end
|
17
18
|
|
18
19
|
def call
|
@@ -22,7 +23,7 @@ module LockDiff
|
|
22
23
|
private
|
23
24
|
|
24
25
|
def find_change_log_url
|
25
|
-
Github.client.contents(@repository).
|
26
|
+
Github.client.contents(@repository, ref: @ref).
|
26
27
|
select(&:file?).
|
27
28
|
find { |content|
|
28
29
|
name = content.name.downcase.delete('_')
|
@@ -40,16 +40,16 @@ module LockDiff
|
|
40
40
|
@client.releases(repository).empty?
|
41
41
|
end
|
42
42
|
|
43
|
-
def contents(repository)
|
43
|
+
def contents(repository, options = {})
|
44
44
|
return [] unless repository
|
45
|
-
@client.contents(repository).map do |content|
|
45
|
+
@client.contents(repository, options).map do |content|
|
46
46
|
Content.new(content)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
def tag_names(repository)
|
50
|
+
def tag_names(repository, options = {})
|
51
51
|
return [] unless repository
|
52
|
-
@client.tags(repository).map(&:name)
|
52
|
+
@client.tags(repository, options).map(&:name)
|
53
53
|
end
|
54
54
|
|
55
55
|
def add_comment(repository, number, comment)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "optparse"
|
2
|
+
|
3
|
+
module LockDiff
|
4
|
+
class OptionParser
|
5
|
+
class << self
|
6
|
+
def parse(args, require_flags:)
|
7
|
+
new(require_flags).parse(args)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(require_flags)
|
12
|
+
@require_flags = require_flags
|
13
|
+
end
|
14
|
+
|
15
|
+
def parse(args)
|
16
|
+
options = {
|
17
|
+
post_comment: false
|
18
|
+
}
|
19
|
+
opt = ::OptionParser.new
|
20
|
+
|
21
|
+
opt.separator("Require flags")
|
22
|
+
if @require_flags.include? :repository
|
23
|
+
opt.on('-r', '--repository=REPOSITORY', 'Like as "user/repository"') { |v| options[:repository] = v }
|
24
|
+
end
|
25
|
+
if @require_flags.include? :number
|
26
|
+
opt.on('-n', '--number=PULL_REQUEST_NUMBER') { |v| options[:number] = v }
|
27
|
+
end
|
28
|
+
|
29
|
+
opt.separator("\nOptional flags")
|
30
|
+
opt.on('--post-comment=true or false', 'Print result to stdout when false. (default is false)') { |v| options[:post_comment] = v }
|
31
|
+
opt.on("-v", "--verbose", "Run verbosely") { |v| LockDiff.logger.level = :debug }
|
32
|
+
opt.on_tail("--version", "Show version") do
|
33
|
+
$stdout.puts LockDiff::VERSION
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
opt.parse!(args)
|
37
|
+
|
38
|
+
if @require_flags.all? { |flag| options.has_key?(flag) }
|
39
|
+
options
|
40
|
+
else
|
41
|
+
puts options
|
42
|
+
$stdout.puts opt.help
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
data/lib/lock_diff/version.rb
CHANGED
data/lib/lock_diff.rb
CHANGED
@@ -28,7 +28,7 @@ module LockDiff
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def run_by_latest_tachikoma(repository:, post_comment: false)
|
31
|
-
pr = Github.client.latest_pull_request(repository
|
31
|
+
pr = Github.client.latest_pull_request(repository).
|
32
32
|
find { |pull_request| pull_request.head_ref.include?("tachikoma") }
|
33
33
|
if pr
|
34
34
|
run(repository: repository, number: pr.number, post_comment: post_comment)
|
@@ -41,5 +41,5 @@ module LockDiff
|
|
41
41
|
self.client_class = Github
|
42
42
|
self.formatter = Formatter::GithubMarkdown
|
43
43
|
self.strategy = Gem
|
44
|
-
self.logger = Logger.new($stdout)
|
44
|
+
self.logger = Logger.new($stdout, level: :info)
|
45
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lock_diff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vividmuimui
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -118,9 +118,9 @@ executables:
|
|
118
118
|
extensions: []
|
119
119
|
extra_rdoc_files: []
|
120
120
|
files:
|
121
|
-
- ".circleci/config.yml"
|
122
121
|
- ".gitignore"
|
123
122
|
- ".rspec"
|
123
|
+
- ".travis.yml"
|
124
124
|
- CODE_OF_CONDUCT.md
|
125
125
|
- Gemfile
|
126
126
|
- LICENSE.txt
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- lib/lock_diff/github/github_url_detector.rb
|
149
149
|
- lib/lock_diff/github/pull_request.rb
|
150
150
|
- lib/lock_diff/github/repository_name_detector.rb
|
151
|
+
- lib/lock_diff/option_parser.rb
|
151
152
|
- lib/lock_diff/pull_request.rb
|
152
153
|
- lib/lock_diff/version.rb
|
153
154
|
- lock_diff.gemspec
|
data/.circleci/config.yml
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
version: 2
|
2
|
-
jobs:
|
3
|
-
build:
|
4
|
-
working_directory: ~/lock_diff
|
5
|
-
docker:
|
6
|
-
- image: circleci/ruby:2.4.1-node
|
7
|
-
steps:
|
8
|
-
- checkout
|
9
|
-
|
10
|
-
# Restore bundle cache
|
11
|
-
- type: cache-restore
|
12
|
-
key: bundle-cache-{{ checksum "Gemfile.lock" }}
|
13
|
-
|
14
|
-
# Bundle install dependencies
|
15
|
-
- run: bundle install --path vendor/bundle
|
16
|
-
|
17
|
-
# Store bundle cache
|
18
|
-
- type: cache-save
|
19
|
-
key: bundle-cache-{{ checksum "Gemfile.lock" }}
|
20
|
-
paths:
|
21
|
-
- vendor/bundle
|
22
|
-
|
23
|
-
# Run rspec in parallel
|
24
|
-
- type: shell
|
25
|
-
command: |
|
26
|
-
bundle exec rspec --profile 10 \
|
27
|
-
--format RspecJunitFormatter \
|
28
|
-
--out /tmp/test-results/rspec.xml \
|
29
|
-
--format progress \
|
30
|
-
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
|
31
|
-
|
32
|
-
# Save artifacts
|
33
|
-
- type: store_test_results
|
34
|
-
path: /tmp/test-results
|