summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAgrim Mittal <agrimmittal97@gmail.com>2018-06-01 16:52:04 +0530
committerAgrim Mittal <agrimmittal97@gmail.com>2018-06-28 15:35:16 +0530
commit16ac04d9cacd2e509faf0ed53d5b46ad0e537a1f (patch)
treebd526750b330c7a9e390157e4d6a615d0ba8b0df /lib
parent88d46bb8974141020776d889d36ce9818f1c8f1b (diff)
downloadbundler-16ac04d9cacd2e509faf0ed53d5b46ad0e537a1f.tar.gz
Add partial gem removal logic
Prevent bundler from quiting when a gem is not found in gemfile and proceed to remove those present.
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/injector.rb21
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/bundler/injector.rb b/lib/bundler/injector.rb
index 8bf963d462..740b12f24a 100644
--- a/lib/bundler/injector.rb
+++ b/lib/bundler/injector.rb
@@ -69,8 +69,11 @@ module Bundler
# remove gems from each gemfiles we have
definition.gemfiles.each do |path|
- # print success for removed gems
- evaluate_gemfile(path).each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep, false, true)} was removed." }
+ deps = evaluate_gemfile(path)
+
+ show_warning("No gems were removed from the gemfile.") if deps.empty?
+
+ deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep, false, true)} was removed." }
end
end
@@ -167,8 +170,8 @@ module Bundler
deleted_dep = builder.dependencies.find {|d| d.name == gem_name }
if deleted_dep.nil?
- Bundler.ui.warn "`#{gem_name}` is not specified in Gemfile so not removed."
- return []
+ show_warning "`#{gem_name}` is not specified in Gemfile so not removed."
+ next
end
builder.dependencies.delete(deleted_dep)
@@ -208,8 +211,8 @@ module Bundler
SharedHelpers.filesystem_access(gemfile_path) {|g| File.open(g, "w") {|file| file.puts contents } }
end
- # @param [Pathname] gemfile_path The Gemfile from which to remove dependencies.
- # @param [String] block_name Name of block name to look for.
+ # @param [Array] gemfile Array of gemfile contents.
+ # @param [String] block_name Name of block name to look for.
def remove_nested_blocks(gemfile, block_name)
nested_blocks = 0
@@ -256,10 +259,14 @@ module Bundler
errored_deps = builder.dependencies & removed_deps
# warn user regarding those gems
- Bundler.ui.warn "#{errored_deps.map(&:name).join(", ")} could not be removed." unless errored_deps.empty?
+ show_warning "#{errored_deps.map(&:name).join(", ")} could not be removed." unless errored_deps.empty?
# return actual removed dependencies
removed_deps - errored_deps
end
+
+ def show_warning(message)
+ Bundler.ui.info Bundler.ui.add_color(message, :yellow)
+ end
end
end