@@ -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 ] )
0 commit comments