From e12295849da2aac67cb7266f165a054a0a0ca5b7 Mon Sep 17 00:00:00 2001 From: Colin Dean Date: Sun, 6 Jul 2014 11:41:03 -0400 Subject: Adds JSON output to `outdated` command After some musing on brunophilipe/Cakebrew#71, I thought it would be useful to let Cakebrew and other tools grab the outdated formulae version information using a method more elegant than regex. Closes Homebrew/homebrew#30693. Signed-off-by: Jack Nagel --- Library/Homebrew/cmd/outdated.rb | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) (limited to 'Library/Homebrew/cmd') diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index 6ae5254e5..10fa36953 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -3,14 +3,10 @@ require 'keg' module Homebrew def outdated - formulae = ARGV.resolved_formulae.any? ? ARGV.resolved_formulae : Formula.installed - - outdated = outdated_brews(formulae) do |f, versions| - if ($stdout.tty? || ARGV.verbose?) && !ARGV.flag?("--quiet") - puts "#{f.full_name} (#{versions*', '} < #{f.pkg_version})" - else - puts f.full_name - end + if ARGV.json == "v1" + outdated = print_outdated_json + else + outdated = print_outdated end Homebrew.failed = ARGV.resolved_formulae.any? && outdated.any? end @@ -37,4 +33,30 @@ module Homebrew end end.compact end + + def formulae_to_check + ARGV.resolved_formulae.any? ? ARGV.resolved_formulae : Formula.installed + end + + def print_outdated + outdated_brews(formulae_to_check) do |f, versions| + if ($stdout.tty? || ARGV.verbose?) && !ARGV.flag?("--quiet") + puts "#{f.full_name} (#{versions*', '} < #{f.pkg_version})" + else + puts f.full_name + end + end + end + + def print_outdated_json + json = [] + outdated = outdated_brews(formulae_to_check) do |f, versions| + json << {:name => f.name, + :installed_versions => versions.collect(&:to_s), + :current_version => f.pkg_version.to_s} + end + puts Utils::JSON.dump(json) + + outdated + end end -- cgit v1.2.3