bundleup 0.9.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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