bundleup 0.9.0 → 2.0.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.
@@ -0,0 +1,37 @@
1
+ module Bundleup
2
+ class PinReport < Report
3
+ def initialize(gem_versions:, outdated_gems:, gem_comments:)
4
+ super()
5
+ @gem_versions = gem_versions
6
+ @outdated_gems = outdated_gems
7
+ @gem_comments = gem_comments
8
+ end
9
+
10
+ def title
11
+ return "Note that this gem is being held back:" if rows.count == 1
12
+
13
+ "Note that the following gems are being held back:"
14
+ end
15
+
16
+ def rows
17
+ outdated_gems.keys.sort.map do |gem|
18
+ meta = outdated_gems[gem]
19
+ current_version = gem_versions[gem]
20
+ newest_version = meta[:newest]
21
+ pin = meta[:pin]
22
+
23
+ [gem, current_version, "→", newest_version, *pin_reason(gem, pin)]
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :gem_versions, :outdated_gems, :gem_comments
30
+
31
+ def pin_reason(gem, pin)
32
+ notes = Colors.gray(gem_comments[gem].to_s)
33
+ pin_operator, pin_version = pin.split(" ", 2)
34
+ [":", "pinned at", pin_operator.rjust(2), pin_version, notes]
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,34 @@
1
+ require "forwardable"
2
+
3
+ module Bundleup
4
+ class Report
5
+ extend Forwardable
6
+ def_delegators :rows, :empty?
7
+
8
+ def to_s
9
+ [
10
+ title,
11
+ tableize(rows).map { |row| row.join(" ").rstrip }.join("\n"),
12
+ ""
13
+ ].join("\n\n")
14
+ end
15
+
16
+ private
17
+
18
+ def tableize(rows)
19
+ widths = max_length_of_each_column(rows)
20
+ rows.map do |row|
21
+ row.zip(widths).map do |value, width|
22
+ padding = " " * (width - Colors.strip(value).length)
23
+ "#{value}#{padding}"
24
+ end
25
+ end
26
+ end
27
+
28
+ def max_length_of_each_column(rows)
29
+ Array.new(rows.first.count) do |i|
30
+ rows.map { |values| Colors.strip(values[i]).length }.max
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ require "forwardable"
2
+ require "open3"
3
+
4
+ module Bundleup
5
+ class Shell
6
+ extend Forwardable
7
+ def_delegators :Bundleup, :logger
8
+
9
+ def capture(command, raise_on_error: true)
10
+ stdout, stderr, status = capture3(command)
11
+ raise ["Failed to execute: #{command}", stdout, stderr].compact.join("\n") if raise_on_error && !status.success?
12
+
13
+ stdout
14
+ end
15
+
16
+ def run(command)
17
+ capture(command)
18
+ true
19
+ end
20
+
21
+ def run?(command)
22
+ _, _, status = capture3(command)
23
+ status.success?
24
+ end
25
+
26
+ private
27
+
28
+ def capture3(command)
29
+ command = Array(command)
30
+ logger.while_spinning("running: #{command.join(' ')}") do
31
+ Open3.capture3(*command)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,63 @@
1
+ module Bundleup
2
+ class UpdateReport < Report
3
+ def initialize(old_versions:, new_versions:)
4
+ super()
5
+ @old_versions = old_versions
6
+ @new_versions = new_versions
7
+ end
8
+
9
+ def title
10
+ return "This gem will be updated:" if rows.count == 1
11
+
12
+ "The following gems will be updated:"
13
+ end
14
+
15
+ def rows
16
+ gem_names.each_with_object([]) do |gem, rows|
17
+ old = old_versions[gem]
18
+ new = new_versions[gem]
19
+ next if old == new
20
+
21
+ row = [gem, old || "(new)", "→", new || "(removed)"]
22
+
23
+ color = color_for_gem(gem)
24
+ rows << row.map { |col| Colors.public_send(color, col) }
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :old_versions, :new_versions
31
+
32
+ def gem_names
33
+ (old_versions.keys | new_versions.keys).sort
34
+ end
35
+
36
+ def color_for_gem(gem)
37
+ old_version = old_versions[gem]
38
+ new_version = new_versions[gem]
39
+
40
+ return :blue if old_version.nil?
41
+ return :red if new_version.nil? || major_upgrade?(old_version, new_version)
42
+ return :yellow if minor_upgrade?(old_version, new_version)
43
+
44
+ :plain
45
+ end
46
+
47
+ def major_upgrade?(old_version, new_version)
48
+ major(new_version) != major(old_version)
49
+ end
50
+
51
+ def minor_upgrade?(old_version, new_version)
52
+ minor(new_version) != minor(old_version)
53
+ end
54
+
55
+ def major(version)
56
+ version.split(".", 2)[0]
57
+ end
58
+
59
+ def minor(version)
60
+ version.split(".", 3)[1]
61
+ end
62
+ end
63
+ end
@@ -1,3 +1,3 @@
1
1
  module Bundleup
2
- VERSION = "0.9.0".freeze
2
+ VERSION = "2.0.0".freeze
3
3
  end
metadata CHANGED
@@ -1,100 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundleup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-05 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '5.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '5.0'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest-reporters
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.1'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.1'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '13.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '13.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 0.78.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 0.78.0
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop-performance
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 1.5.2
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 1.5.2
97
- description:
11
+ date: 2020-09-03 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Use `bundleup` whenever you want to update the locked Gemfile dependencies
14
+ of a Ruby project. It shows exactly what gems will be updated with color output
15
+ that calls attention to significant semver changes. Bundleup will also let you know
16
+ when a version "pin" in your Gemfile is preventing an update. Bundleup is a standalone
17
+ tool that leverages standard Bundler output and does not patch code or use Bundler
18
+ internals.
98
19
  email:
99
20
  - bundleup@mattbrictson.com
100
21
  executables:
@@ -102,36 +23,30 @@ executables:
102
23
  extensions: []
103
24
  extra_rdoc_files: []
104
25
  files:
105
- - ".github/release-drafter.yml"
106
- - ".github/workflows/push.yml"
107
- - ".gitignore"
108
- - ".rubocop.yml"
109
- - ".travis.yml"
110
- - CHANGELOG.md
111
- - CODE_OF_CONDUCT.md
112
- - CONTRIBUTING.md
113
- - Gemfile
114
26
  - LICENSE.txt
115
27
  - README.md
116
- - Rakefile
117
- - bin/console
118
- - bin/setup
119
- - bundleup.gemspec
120
28
  - exe/bundleup
121
29
  - lib/bundleup.rb
122
- - lib/bundleup/bundle_commands.rb
30
+ - lib/bundleup/backup.rb
123
31
  - lib/bundleup/cli.rb
124
- - lib/bundleup/console.rb
125
- - lib/bundleup/gem_status.rb
32
+ - lib/bundleup/colors.rb
33
+ - lib/bundleup/commands.rb
126
34
  - lib/bundleup/gemfile.rb
127
- - lib/bundleup/upgrade.rb
35
+ - lib/bundleup/logger.rb
36
+ - lib/bundleup/pin_report.rb
37
+ - lib/bundleup/report.rb
38
+ - lib/bundleup/shell.rb
39
+ - lib/bundleup/update_report.rb
128
40
  - lib/bundleup/version.rb
129
- - sample.png
130
41
  homepage: https://github.com/mattbrictson/bundleup
131
42
  licenses:
132
43
  - MIT
133
- metadata: {}
134
- post_install_message:
44
+ metadata:
45
+ bug_tracker_uri: https://github.com/mattbrictson/bundleup/issues
46
+ changelog_uri: https://github.com/mattbrictson/bundleup/releases
47
+ source_code_uri: https://github.com/mattbrictson/bundleup
48
+ homepage_uri: https://github.com/mattbrictson/bundleup
49
+ post_install_message:
135
50
  rdoc_options: []
136
51
  require_paths:
137
52
  - lib
@@ -139,15 +54,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
54
  requirements:
140
55
  - - ">="
141
56
  - !ruby/object:Gem::Version
142
- version: 2.4.0
57
+ version: 2.5.0
143
58
  required_rubygems_version: !ruby/object:Gem::Requirement
144
59
  requirements:
145
60
  - - ">="
146
61
  - !ruby/object:Gem::Version
147
62
  version: '0'
148
63
  requirements: []
149
- rubygems_version: 3.1.2
150
- signing_key:
64
+ rubygems_version: 3.1.4
65
+ signing_key:
151
66
  specification_version: 4
152
67
  summary: A friendlier command-line interface for Bundler’s `update` and `outdated`
153
68
  commands.
@@ -1,17 +0,0 @@
1
- name-template: "$NEXT_PATCH_VERSION"
2
- tag-template: "v$NEXT_PATCH_VERSION"
3
- categories:
4
- - title: "⚠️ Breaking Changes"
5
- label: "⚠️ Breaking"
6
- - title: "✨ New Features"
7
- label: "✨ Feature"
8
- - title: "🐛 Bug Fixes"
9
- label: "🐛 Bug Fix"
10
- - title: "📚 Documentation"
11
- label: "📚 Docs"
12
- - title: "🏠 Housekeeping"
13
- label: "🏠 Housekeeping"
14
- change-template: "- $TITLE (#$NUMBER) @$AUTHOR"
15
- no-changes-template: "- No changes"
16
- template: |
17
- $CHANGES
@@ -1,12 +0,0 @@
1
- on: push
2
- name: Push
3
- jobs:
4
- draftRelease:
5
- name: Draft Release
6
- runs-on: ubuntu-latest
7
- steps:
8
- - uses: actions/checkout@master
9
- - name: Draft Release
10
- uses: toolmantim/release-drafter@v5.2.0
11
- env:
12
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
@@ -1,47 +0,0 @@
1
- require:
2
- - rubocop-performance
3
-
4
- AllCops:
5
- TargetRubyVersion: 2.4
6
- Exclude:
7
- - "*.gemspec"
8
- - "vendor/**/*"
9
-
10
- Layout/SpaceAroundEqualsInParameterDefault:
11
- EnforcedStyle: no_space
12
-
13
- Metrics/AbcSize:
14
- Exclude:
15
- - "test/**/*"
16
-
17
- Metrics/MethodLength:
18
- Exclude:
19
- - "test/**/*"
20
-
21
- Metrics/ClassLength:
22
- Exclude:
23
- - "test/**/*"
24
-
25
- Naming/MemoizedInstanceVariableName:
26
- Enabled: false
27
-
28
- Style/BarePercentLiterals:
29
- EnforcedStyle: percent_q
30
-
31
- Style/ClassAndModuleChildren:
32
- Enabled: false
33
-
34
- Style/Documentation:
35
- Enabled: false
36
-
37
- Style/DoubleNegation:
38
- Enabled: false
39
-
40
- Style/FrozenStringLiteralComment:
41
- Enabled: false
42
-
43
- Style/HashSyntax:
44
- EnforcedStyle: ruby19
45
-
46
- Style/StringLiterals:
47
- EnforcedStyle: double_quotes