aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bundler/cli/clean.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/cli/clean.rb')
-rw-r--r--lib/bundler/cli/clean.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/bundler/cli/clean.rb b/lib/bundler/cli/clean.rb
new file mode 100644
index 0000000000..5eba09c6bc
--- /dev/null
+++ b/lib/bundler/cli/clean.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+module Bundler
+ class CLI::Clean
+ attr_reader :options
+
+ def initialize(options)
+ @options = options
+ end
+
+ def run
+ require_path_or_force unless options[:"dry-run"]
+ Bundler.load.clean(options[:"dry-run"])
+ end
+
+ protected
+
+ def require_path_or_force
+ if !Bundler.settings[:path] && !options[:force]
+ Bundler.ui.error "Cleaning all the gems on your system is dangerous! " \
+ "If you're sure you want to remove every system gem not in this " \
+ "bundle, run `bundle clean --force`."
+ exit 1
+ end
+ end
+ end
+end