Skip to content

Commit

Permalink
[rubygems/rubygems] Revert "Merge pull request #7167 from nevinera/ad…
Browse files Browse the repository at this point in the history
…d-json-output-option-to-bundle-outdated"

This reverts commit rubygems/rubygems@a4ac5116b8ea, reversing
changes made to rubygems/rubygems@8a6b180d0ae5.

rubygems/rubygems@a1efe4015d
  • Loading branch information
martinemde authored and matzbot committed Dec 13, 2023
1 parent 5a0cbc9 commit c1f4bfd
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 79 deletions.
1 change: 0 additions & 1 deletion lib/bundler/cli.rb
Expand Up @@ -379,7 +379,6 @@ def add(*gems)
method_option "filter-minor", type: :boolean, banner: "Only list minor newer versions"
method_option "filter-patch", type: :boolean, banner: "Only list patch newer versions"
method_option "parseable", aliases: "--porcelain", type: :boolean, banner: "Use minimal formatting for more parseable output"
method_option "json", type: :boolean, banner: "Produce parseable json output"
method_option "only-explicit", type: :boolean, banner: "Only list gems specified in your Gemfile, not their dependencies"
def outdated(*gems)
require_relative "cli/outdated"
Expand Down
75 changes: 18 additions & 57 deletions lib/bundler/cli/outdated.rb
Expand Up @@ -53,13 +53,13 @@ def run
options[:local] ? definition.resolve_with_cache! : definition.resolve_remotely!
end

if options[:parseable] || options[:json]
if options[:parseable]
Bundler.ui.silence(&definition_resolution)
else
definition_resolution.call
end

Bundler.ui.info "" unless options[:json]
Bundler.ui.info ""

# Loop through the current specs
gemfile_specs, dependency_specs = current_specs.partition do |spec|
Expand Down Expand Up @@ -98,24 +98,27 @@ def run
end

if outdated_gems.empty?
if options[:json]
print_gems_json([])
elsif !options[:parseable]
unless options[:parseable]
Bundler.ui.info(nothing_outdated_message)
end
else
relevant_outdated_gems = if options_include_groups
by_group(outdated_gems, filter: options[:group])
else
outdated_gems
end

if options[:json]
print_gems_json(relevant_outdated_gems)
if options_include_groups
relevant_outdated_gems = outdated_gems.group_by {|g| g[:groups] }.sort.flat_map do |groups, gems|
contains_group = groups.split(", ").include?(options[:group])
next unless options[:groups] || contains_group

gems
end.compact

if options[:parseable]
print_gems(relevant_outdated_gems)
else
print_gems_table(relevant_outdated_gems)
end
elsif options[:parseable]
print_gems(relevant_outdated_gems)
print_gems(outdated_gems)
else
print_gems_table(relevant_outdated_gems)
print_gems_table(outdated_gems)
end

exit 1
Expand Down Expand Up @@ -159,13 +162,6 @@ def retrieve_active_spec(definition, current_spec)
active_specs.last
end

def by_group(gems, filter: nil)
gems.group_by {|g| g[:groups] }.sort.flat_map do |groups_string, grouped_gems|
next if filter && !groups_string.split(", ").include?(filter)
grouped_gems
end.compact
end

def print_gems(gems_list)
gems_list.each do |gem|
print_gem(
Expand All @@ -177,21 +173,6 @@ def print_gems(gems_list)
end
end

def print_gems_json(gems_list)
require "json"
data = gems_list.map do |gem|
gem_data_for(
gem[:current_spec],
gem[:active_spec],
gem[:dependency],
gem[:groups]
)
end

data = { outdated_count: gems_list.count, outdated_gems: data }
Bundler.ui.info data.to_json
end

def print_gems_table(gems_list)
data = gems_list.map do |gem|
gem_column_for(
Expand Down Expand Up @@ -231,26 +212,6 @@ def print_gem(current_spec, active_spec, dependency, groups)
Bundler.ui.info output_message.rstrip
end

def gem_data_for(current_spec, active_spec, dependency, groups)
{
current_spec: spec_data_for(current_spec),
active_spec: spec_data_for(active_spec),
dependency: dependency&.to_s,
groups: (groups || "").split(", "),
}
end

def spec_data_for(spec)
{
name: spec.name,
version: spec.version.to_s,
platform: spec.platform,
source: spec.source.to_s,
required_ruby_version: spec.required_ruby_version.to_s,
required_rubygems_version: spec.required_rubygems_version.to_s,
}
end

def gem_column_for(current_spec, active_spec, dependency, groups)
current_version = "#{current_spec.version}#{current_spec.git_version}"
spec_version = "#{active_spec.version}#{active_spec.git_version}"
Expand Down
21 changes: 0 additions & 21 deletions spec/bundler/bundler/cli_spec.rb
@@ -1,7 +1,6 @@
# frozen_string_literal: true

require "bundler/cli"
require "json"

RSpec.describe "bundle executable" do
it "returns non-zero exit status when passed unrecognized options" do
Expand Down Expand Up @@ -155,26 +154,6 @@ def out_with_macos_man_workaround
end
end

context "with --json" do
let(:flags) { "--json" }

it "prints json output data when there are outdated gems" do
run_command
out_data = JSON.parse(out)
expect(out_data.keys).to contain_exactly("outdated_count", "outdated_gems")
expect(out_data["outdated_count"]).to eq(1)
expect(out_data["outdated_gems"].length).to eq(1)

gem_data = out_data["outdated_gems"].first
expect(gem_data).to include({
"current_spec" => hash_including("name" => "rack", "version" => "0.9.1"),
"active_spec" => hash_including("name" => "rack", "version" => "1.0.0"),
"dependency" => "rack (= 0.9.1)",
"groups" => ["default"],
})
end
end

context "with --parseable" do
let(:flags) { "--parseable" }

Expand Down

0 comments on commit c1f4bfd

Please sign in to comment.