lock_diff 0.1.5 → 0.1.6
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 +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
|
-
[](https://badge.fury.io/rb/lock_diff)
|
4
|
+
[](https://github.com/vividmuimui/lock_diff/tags)
|
5
|
+
[](https://travis-ci.org/vividmuimui/lock_diff)
|
6
|
+
[](https://gemnasium.com/github.com/vividmuimui/lock_diff)
|
7
|
+
[](https://codeclimate.com/github/vividmuimui/lock_diff)
|
8
|
+
[](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
|