Skip to content

Commit 300cc0c

Browse files
committed
Show release date with bundle outdated
1 parent 8f32bfe commit 300cc0c

File tree

6 files changed

+79
-57
lines changed

6 files changed

+79
-57
lines changed

bundler/lib/bundler/cli/outdated.rb

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,11 @@ def print_gem(current_spec, active_spec, dependency, groups)
199199
end
200200

201201
spec_outdated_info = "#{active_spec.name} (newest #{spec_version}, " \
202-
"installed #{current_version}#{dependency_version})"
202+
"installed #{current_version}#{dependency_version}"
203+
204+
release_date = release_date_for(active_spec)
205+
spec_outdated_info += ", released #{release_date}" unless release_date.empty?
206+
spec_outdated_info += ")"
203207

204208
output_message = if options[:parseable]
205209
spec_outdated_info.to_s
@@ -218,6 +222,7 @@ def gem_column_for(current_spec, active_spec, dependency, groups)
218222
dependency = dependency.requirement if dependency
219223

220224
ret_val = [active_spec.name, current_version, spec_version, dependency.to_s, groups.to_s]
225+
ret_val << release_date_for(active_spec)
221226
ret_val << loaded_from_for(active_spec).to_s if Bundler.ui.debug?
222227
ret_val
223228
end
@@ -283,11 +288,28 @@ def print_indented(matrix)
283288
end
284289

285290
def table_header
286-
header = ["Gem", "Current", "Latest", "Requested", "Groups"]
291+
header = ["Gem", "Current", "Latest", "Requested", "Groups", "Release Date"]
287292
header << "Path" if Bundler.ui.debug?
288293
header
289294
end
290295

296+
def release_date_for(spec)
297+
return "" unless spec.respond_to?(:date)
298+
299+
date = spec.date
300+
return "" unless date
301+
302+
return "" unless Gem.const_defined?(:DEFAULT_SOURCE_DATE_EPOCH)
303+
default_date = Time.at(Gem::DEFAULT_SOURCE_DATE_EPOCH).utc
304+
default_date = Time.utc(default_date.year, default_date.month, default_date.day)
305+
306+
date = date.utc if date.respond_to?(:utc)
307+
308+
return "" if date == default_date
309+
310+
date.strftime("%Y-%m-%d")
311+
end
312+
291313
def justify(row, sizes)
292314
row.each_with_index.map do |element, index|
293315
element.ljust(sizes[index])

bundler/lib/bundler/man/bundle-outdated.1

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,42 +61,42 @@ The 3 filtering options do not affect the resolution of versions, merely what ve
6161
If the regular output shows the following:
6262
.IP "" 4
6363
.nf
64-
* Gem Current Latest Requested Groups
65-
* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test
66-
* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default
67-
* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test
64+
* Gem Current Latest Requested Groups Release Date
65+
* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05
66+
* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default 2023\-11\-10
67+
* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test 2022\-08\-19
6868
.fi
6969
.IP "" 0
7070
.P
7171
\fB\-\-filter\-major\fR would only show:
7272
.IP "" 4
7373
.nf
74-
* Gem Current Latest Requested Groups
75-
* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default
74+
* Gem Current Latest Requested Groups Release Date
75+
* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default 2023\-11\-10
7676
.fi
7777
.IP "" 0
7878
.P
7979
\fB\-\-filter\-minor\fR would only show:
8080
.IP "" 4
8181
.nf
82-
* Gem Current Latest Requested Groups
83-
* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test
82+
* Gem Current Latest Requested Groups Release Date
83+
* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test 2022\-08\-19
8484
.fi
8585
.IP "" 0
8686
.P
8787
\fB\-\-filter\-patch\fR would only show:
8888
.IP "" 4
8989
.nf
90-
* Gem Current Latest Requested Groups
91-
* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test
90+
* Gem Current Latest Requested Groups Release Date
91+
* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05
9292
.fi
9393
.IP "" 0
9494
.P
9595
Filter options can be combined\. \fB\-\-filter\-minor\fR and \fB\-\-filter\-patch\fR would show:
9696
.IP "" 4
9797
.nf
98-
* Gem Current Latest Requested Groups
99-
* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test
98+
* Gem Current Latest Requested Groups Release Date
99+
* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05
100100
.fi
101101
.IP "" 0
102102
.P

bundler/lib/bundler/man/bundle-outdated.1.ronn

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,29 +82,29 @@ in the output.
8282

8383
If the regular output shows the following:
8484

85-
* Gem Current Latest Requested Groups
86-
* faker 1.6.5 1.6.6 ~> 1.4 development, test
87-
* hashie 1.2.0 3.4.6 = 1.2.0 default
88-
* headless 2.2.3 2.3.1 = 2.2.3 test
85+
* Gem Current Latest Requested Groups Release Date
86+
* faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05
87+
* hashie 1.2.0 3.4.6 = 1.2.0 default 2023-11-10
88+
* headless 2.2.3 2.3.1 = 2.2.3 test 2022-08-19
8989

9090
`--filter-major` would only show:
9191

92-
* Gem Current Latest Requested Groups
93-
* hashie 1.2.0 3.4.6 = 1.2.0 default
92+
* Gem Current Latest Requested Groups Release Date
93+
* hashie 1.2.0 3.4.6 = 1.2.0 default 2023-11-10
9494

9595
`--filter-minor` would only show:
9696

97-
* Gem Current Latest Requested Groups
98-
* headless 2.2.3 2.3.1 = 2.2.3 test
97+
* Gem Current Latest Requested Groups Release Date
98+
* headless 2.2.3 2.3.1 = 2.2.3 test 2022-08-19
9999

100100
`--filter-patch` would only show:
101101

102-
* Gem Current Latest Requested Groups
103-
* faker 1.6.5 1.6.6 ~> 1.4 development, test
102+
* Gem Current Latest Requested Groups Release Date
103+
* faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05
104104

105105
Filter options can be combined. `--filter-minor` and `--filter-patch` would show:
106106

107-
* Gem Current Latest Requested Groups
108-
* faker 1.6.5 1.6.6 ~> 1.4 development, test
107+
* Gem Current Latest Requested Groups Release Date
108+
* faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05
109109

110110
Combining all three `filter` options would be the same result as providing none of them.

bundler/spec/commands/newgem_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1764,7 +1764,7 @@ def create_temporary_dir(dir)
17641764
it "configures the crate such that `cargo test` works", :ruby_repo, :mri_only do
17651765
env = setup_rust_env
17661766
gem_path = bundled_app(gem_name)
1767-
result = sys_exec("cargo test", env: env, dir: gem_path)
1767+
result = sys_exec("cargo test", env: env, dir: gem_path, timeout: 300)
17681768

17691769
expect(result).to include("1 passed")
17701770
end

0 commit comments

Comments
 (0)