unwrappr 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac46367aac21e83d32adc4e911daae5b8048f65a8939895e47de3e5ae94e7faf
4
- data.tar.gz: 7e3ad4f274d8dea952ddbbb2012256f90da27dae015974b3df19fd17d8fa5f6a
3
+ metadata.gz: 197b63d85c71cc3d7701f8f22cd1a0c305bf07a6eade0c5e7c8ca52ec0538bb3
4
+ data.tar.gz: 07546ef3c1f66c5a6e9dd632d0f1ac07a5bae6c56897ec6908b9f5ae360dc682
5
5
  SHA512:
6
- metadata.gz: e837150f75105603329e612b5f351c358aee257e898cdcb2f402de7df1b451f5427d44e005f2d0923c696ef5914d42e62b5d1d9ccfd44bb9d62138f5aa51e485
7
- data.tar.gz: 450af0d234ca5dc144553c17a76a43f3e3a025ffe30ba0c8e6d9dc5e4a75abbcfbd0bc6c452c995ac25f93aa46a73aaeda5eec4b081f54e429e476786eefa20b
6
+ metadata.gz: c0eb4bed6b570378cc213667250f9fbca23e3a25ac84779d8ec2d54ebe4c7fb1cd601c1bac84a92ebff2861a52950f9c048f7c79fb947001c259289ca54272bd
7
+ data.tar.gz: 2ccbd4e9c68b2d38746b5a88bd37730f1bd211d65d94ceed575b6573e151d733cc7dae0dc4331dd9381d1b8084a05d92d932ad6800d83e726ed456dc4bcce2f1
data/CHANGELOG.md CHANGED
@@ -6,7 +6,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- [Unreleased]: https://github.com/envato/unwrappr/compare/v0.5.0...HEAD
9
+ [Unreleased]: https://github.com/envato/unwrappr/compare/v0.6.0...HEAD
10
+
11
+ ## [0.6.0] 2021-05-12
12
+
13
+ ### Add
14
+ - Allow specification of Gemfile lock files to annotate. ([#86])
15
+
16
+ [0.6.0]: https://github.com/envato/unwrappr/compare/v0.5.0..v0.6.0
17
+ [#86]: https://github.com/envato/unwrappr/pull/86
10
18
 
11
19
  ## [0.5.0] 2021-01-04
12
20
 
data/lib/unwrappr/cli.rb CHANGED
@@ -17,6 +17,13 @@ module Unwrappr
17
17
  DESCRIPTION
18
18
  attribute_name: :base_branch)
19
19
 
20
+ option ['-f', '--lock-file'],
21
+ 'LOCK_FILE1 [-f LOCK_FILE2] [-f LOCK_FILE3] [-f ...]',
22
+ 'The Gemfile.lock files to annotate. Useful when working with multiple lock files.',
23
+ multivalued: true,
24
+ default: ['Gemfile.lock'],
25
+ attribute_name: :lock_files
26
+
20
27
  option ['-v', '--version'], :flag, 'Show version' do
21
28
  puts "unwrappr v#{Unwrappr::VERSION}"
22
29
  exit(0)
@@ -25,7 +32,7 @@ module Unwrappr
25
32
  subcommand 'all', 'run bundle update, push to github, '\
26
33
  'create a pr and annotate changes' do
27
34
  def execute
28
- Unwrappr.run_unwapper_in_pwd(base_branch: base_branch)
35
+ Unwrappr.run_unwapper_in_pwd(base_branch: base_branch, lock_files: lock_files)
29
36
  end
30
37
  end
31
38
 
@@ -42,7 +49,8 @@ module Unwrappr
42
49
  def execute
43
50
  LockFileAnnotator.annotate_github_pull_request(
44
51
  repo: repo,
45
- pr_number: pr.to_i
52
+ pr_number: pr.to_i,
53
+ lock_files: lock_files
46
54
  )
47
55
  end
48
56
  end
@@ -68,24 +76,24 @@ module Unwrappr
68
76
  )
69
77
  end
70
78
 
71
- Dir.chdir(repo) { Unwrappr.run_unwapper_in_pwd(base_branch: base_branch) }
79
+ Dir.chdir(repo) { Unwrappr.run_unwapper_in_pwd(base_branch: base_branch, lock_files: lock_files) }
72
80
  end
73
81
  end
74
82
  end
75
83
  end
76
84
 
77
- def self.run_unwapper_in_pwd(base_branch:)
78
- return unless lockfile_present?
85
+ def self.run_unwapper_in_pwd(base_branch:, lock_files:)
86
+ return unless any_lockfile_present?(lock_files)
79
87
 
80
88
  puts "Doing the unwrappr thing in #{Dir.pwd}"
81
89
 
82
90
  GitCommandRunner.create_branch!(base_branch: base_branch)
83
91
  BundlerCommandRunner.bundle_update!
84
92
  GitCommandRunner.commit_and_push_changes!
85
- GitHub::Client.make_pull_request!
93
+ GitHub::Client.make_pull_request!(lock_files)
86
94
  end
87
95
 
88
- def self.lockfile_present?
89
- GitCommandRunner.file_exist?('Gemfile.lock')
96
+ def self.any_lockfile_present?(lock_files)
97
+ lock_files.any? { |lock_file| GitCommandRunner.file_exist?(lock_file) }
90
98
  end
91
99
  end
@@ -12,8 +12,8 @@ module Unwrappr
12
12
  @github_token = nil
13
13
  end
14
14
 
15
- def make_pull_request!
16
- create_and_annotate_pull_request
15
+ def make_pull_request!(lock_files)
16
+ create_and_annotate_pull_request(lock_files)
17
17
  rescue Octokit::ClientError => e
18
18
  raise "Failed to create and annotate pull request: #{e}"
19
19
  end
@@ -27,7 +27,7 @@ module Unwrappr
27
27
  [m[:org], m[:repo]].join('/')
28
28
  end
29
29
 
30
- def create_and_annotate_pull_request
30
+ def create_and_annotate_pull_request(lock_files)
31
31
  pr = git_client.create_pull_request(
32
32
  repo_name_and_org,
33
33
  repo_default_branch,
@@ -35,7 +35,7 @@ module Unwrappr
35
35
  'Automated Bundle Update',
36
36
  pull_request_body
37
37
  )
38
- annotate_pull_request(pr.number)
38
+ annotate_pull_request(pr.number, lock_files)
39
39
  end
40
40
 
41
41
  def repo_default_branch
@@ -50,10 +50,11 @@ module Unwrappr
50
50
  BODY
51
51
  end
52
52
 
53
- def annotate_pull_request(pr_number)
53
+ def annotate_pull_request(pr_number, lock_files)
54
54
  LockFileAnnotator.annotate_github_pull_request(
55
55
  repo: repo_name_and_org,
56
56
  pr_number: pr_number,
57
+ lock_files: lock_files,
57
58
  client: git_client
58
59
  )
59
60
  end
@@ -9,9 +9,10 @@ module Unwrappr
9
9
  # Implements the `lock_file_diff_source` interface as defined by the
10
10
  # LockFileAnnotator.
11
11
  class PrSource
12
- def initialize(repo, pr_number, client)
12
+ def initialize(repo, pr_number, lock_files, client)
13
13
  @repo = repo
14
14
  @pr_number = pr_number
15
+ @lock_files = lock_files
15
16
  @client = client
16
17
  end
17
18
 
@@ -33,7 +34,7 @@ module Unwrappr
33
34
  @lock_file_diffs ||= @client
34
35
  .pull_request_files(@repo, @pr_number)
35
36
  .select do |file|
36
- File.basename(file.filename) == 'Gemfile.lock'
37
+ @lock_files.include?(File.basename(file.filename))
37
38
  end
38
39
  end
39
40
 
@@ -18,10 +18,10 @@ module Unwrappr
18
18
  class LockFileAnnotator
19
19
  # rubocop:disable Metrics/MethodLength
20
20
  def self.annotate_github_pull_request(
21
- repo:, pr_number:, client: Octokit.client
21
+ repo:, pr_number:, lock_files:, client: Octokit.client
22
22
  )
23
23
  new(
24
- lock_file_diff_source: Github::PrSource.new(repo, pr_number, client),
24
+ lock_file_diff_source: Github::PrSource.new(repo, pr_number, lock_files, client),
25
25
  annotation_sink: Github::PrSink.new(repo, pr_number, client),
26
26
  annotation_writer: Writers::Composite.new(
27
27
  Writers::Title,
@@ -54,6 +54,8 @@ module Unwrappr
54
54
 
55
55
  def annotate
56
56
  @lock_file_diff_source.each_file do |lock_file_diff|
57
+ puts "Annotating #{lock_file_diff.filename}"
58
+
57
59
  lock_file_diff.each_gem_change do |gem_change|
58
60
  gem_change_info = @gem_researcher.research(gem_change, {})
59
61
  message = @annotation_writer.write(gem_change, gem_change_info)
@@ -21,7 +21,9 @@ module Unwrappr
21
21
  private
22
22
 
23
23
  def specs_versions(lock_file)
24
- Hash[lock_file.specs.map { |s| [s.name.to_sym, s.version.to_s] }]
24
+ lock_file.specs.each_with_object({}) do |s, memo|
25
+ memo[s.name.to_sym] = s.version.to_s
26
+ end
25
27
  end
26
28
  end
27
29
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Unwrappr
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unwrappr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emilyn Escabarte
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2021-01-04 00:00:00.000000000 Z
15
+ date: 2021-05-12 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
292
  - !ruby/object:Gem::Version
293
293
  version: '2.7'
294
294
  requirements: []
295
- rubygems_version: 3.2.3
295
+ rubygems_version: 3.2.11
296
296
  signing_key:
297
297
  specification_version: 4
298
298
  summary: A tool to unwrap your gems and see what's changed easily