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.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/exe/bundleup +7 -1
- data/lib/bundleup.rb +19 -5
- data/lib/bundleup/backup.rb +26 -0
- data/lib/bundleup/cli.rb +96 -62
- data/lib/bundleup/colors.rb +56 -0
- data/lib/bundleup/commands.rb +40 -0
- data/lib/bundleup/gemfile.rb +9 -2
- data/lib/bundleup/logger.rb +64 -0
- data/lib/bundleup/pin_report.rb +37 -0
- data/lib/bundleup/report.rb +34 -0
- data/lib/bundleup/shell.rb +35 -0
- data/lib/bundleup/update_report.rb +63 -0
- data/lib/bundleup/version.rb +1 -1
- metadata +27 -112
- data/.github/release-drafter.yml +0 -17
- data/.github/workflows/push.yml +0 -12
- data/.gitignore +0 -8
- data/.rubocop.yml +0 -47
- data/.travis.yml +0 -16
- data/CHANGELOG.md +0 -1
- data/CODE_OF_CONDUCT.md +0 -49
- data/CONTRIBUTING.md +0 -29
- data/Gemfile +0 -4
- data/Rakefile +0 -93
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/bundleup.gemspec +0 -30
- data/lib/bundleup/bundle_commands.rb +0 -31
- data/lib/bundleup/console.rb +0 -99
- data/lib/bundleup/gem_status.rb +0 -59
- data/lib/bundleup/upgrade.rb +0 -60
- data/sample.png +0 -0
@@ -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
|
data/lib/bundleup/version.rb
CHANGED
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.
|
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-
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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/
|
30
|
+
- lib/bundleup/backup.rb
|
123
31
|
- lib/bundleup/cli.rb
|
124
|
-
- lib/bundleup/
|
125
|
-
- lib/bundleup/
|
32
|
+
- lib/bundleup/colors.rb
|
33
|
+
- lib/bundleup/commands.rb
|
126
34
|
- lib/bundleup/gemfile.rb
|
127
|
-
- lib/bundleup/
|
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
|
-
|
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.
|
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.
|
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.
|
data/.github/release-drafter.yml
DELETED
@@ -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
|
data/.github/workflows/push.yml
DELETED
data/.gitignore
DELETED
data/.rubocop.yml
DELETED
@@ -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
|