aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/cli.rb12
-rw-r--r--lib/bundler/cli/viz.rb3
-rw-r--r--spec/commands/viz_spec.rb34
3 files changed, 43 insertions, 6 deletions
diff --git a/lib/bundler/cli.rb b/lib/bundler/cli.rb
index 0bd82fd1..e652bfd6 100644
--- a/lib/bundler/cli.rb
+++ b/lib/bundler/cli.rb
@@ -359,14 +359,14 @@ module Bundler
Viz requires the ruby-graphviz gem (and its dependencies).
The associated gems must also be installed via 'bundle install'.
D
- method_option :file, :type => :string, :default => "gem_graph", :aliases => "-f", :banner => "The name to use for the generated file. see format option"
- method_option :format, :type => :string, :default => "png", :aliases => "-F", :banner => "This is output format option. Supported format is png, jpg, svg, dot ..."
- method_option :requirements, :type => :boolean, :default => false, :aliases => "-r", :banner => "Set to show the version of each required dependency."
- method_option :version, :type => :boolean, :default => false, :aliases => "-v", :banner => "Set to show each gem version."
- method_option :without, :type => :array, :default => [], :banner => "Exclude gems that are part of the specified named group."
+ method_option :file, :type => :string, :default => "gem_graph", :aliases => "-f", :desc => "The name to use for the generated file. see format option"
+ method_option :format, :type => :string, :default => "png", :aliases => "-F", :desc => "This is output format option. Supported format is png, jpg, svg, dot ..."
+ method_option :requirements, :type => :boolean, :default => false, :aliases => "-R", :desc => "Set to show the version of each required dependency."
+ method_option :version, :type => :boolean, :default => false, :aliases => "-v", :desc => "Set to show each gem version."
+ method_option :without, :type => :array, :default => [], :aliases => "-W", :banner => "GROUP[ GROUP...]", :desc => "Exclude gems that are part of the specified named group."
def viz
require "bundler/cli/viz"
- Viz.new(options).run
+ Viz.new(options.dup).run
end
desc "gem GEM [OPTIONS]", "Creates a skeleton for creating a rubygem"
diff --git a/lib/bundler/cli/viz.rb b/lib/bundler/cli/viz.rb
index 7ccd306d..75e6afff 100644
--- a/lib/bundler/cli/viz.rb
+++ b/lib/bundler/cli/viz.rb
@@ -8,7 +8,10 @@ module Bundler
def run
require "graphviz"
+
+ options[:without] = options[:without].join(":").tr(" ", ":").split(":")
output_file = File.expand_path(options[:file])
+
graph = Graph.new(Bundler.load, output_file, options[:version], options[:requirements], options[:format], options[:without])
graph.viz
rescue LoadError => e
diff --git a/spec/commands/viz_spec.rb b/spec/commands/viz_spec.rb
index c6805688..20dc9175 100644
--- a/spec/commands/viz_spec.rb
+++ b/spec/commands/viz_spec.rb
@@ -32,4 +32,38 @@ describe "bundle viz", :ruby => "1.9.3", :if => Bundler.which("dot") do
bundle "viz", :env => { "RUBYOPT" => "-I #{graphviz_lib}" }
expect(out).to include("gem_graph.png")
end
+
+ context "--without option" do
+ it "one group" do
+ install_gemfile <<-G
+ source "file://#{gem_repo1}"
+ gem "activesupport"
+
+ group :rails do
+ gem "rails"
+ end
+ G
+
+ bundle "viz --without=rails", :env => { "RUBYOPT" => "-I #{graphviz_lib}" }
+ expect(out).to include("gem_graph.png")
+ end
+
+ it "two groups" do
+ install_gemfile <<-G
+ source "file://#{gem_repo1}"
+ gem "activesupport"
+
+ group :rack do
+ gem "rack"
+ end
+
+ group :rails do
+ gem "rails"
+ end
+ G
+
+ bundle "viz --without=rails:rack", :env => { "RUBYOPT" => "-I #{graphviz_lib}" }
+ expect(out).to include("gem_graph.png")
+ end
+ end
end