summaryrefslogtreecommitdiff
path: root/lib/rubygems/commands/signout_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/commands/signout_command.rb')
-rw-r--r--lib/rubygems/commands/signout_command.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/rubygems/commands/signout_command.rb b/lib/rubygems/commands/signout_command.rb
new file mode 100644
index 0000000000..2452e8cae1
--- /dev/null
+++ b/lib/rubygems/commands/signout_command.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+require 'rubygems/command'
+
+class Gem::Commands::SignoutCommand < Gem::Command
+
+ def initialize
+ super 'signout', 'Sign out from all the current sessions.'
+ end
+
+ def description # :nodoc:
+ 'The `signout` command is used to sign out from all current sessions,'\
+ ' allowing you to sign in using a different set of credentials.'
+ end
+
+ def usage # :nodoc:
+ program_name
+ end
+
+ def execute
+ credentials_path = Gem.configuration.credentials_path
+
+ if !File.exist?(credentials_path) then
+ alert_error 'You are not currently signed in.'
+ elsif !File.writable?(credentials_path) then
+ alert_error "File '#{Gem.configuration.credentials_path}' is read-only."\
+ ' Please make sure it is writable.'
+ else
+ Gem.configuration.unset_api_key!
+ say 'You have successfully signed out from all sessions.'
+ end
+ end
+
+end