lib/sym/app/commands/password_protect_key.rb
require 'sym/app/commands/base_command'
module Sym
module App
module Commands
class PasswordProtectKey < BaseCommand
required_options %i(key interactive), :password
incompatible_options %i(examples help version bash_support)
try_after :generate_key, :encrypt, :decrypt
def execute
retries ||= 0
raise Sym::Errors::NoPrivateKeyFound.new("Unable to resolve private key from argument '#{opts[:key]}'") if self.key.nil?
the_key = self.key
if opts[:password]
encrypted_key, password = encrypt_with_password(the_key)
add_password_to_the_cache(encrypted_key, password)
the_key = encrypted_key
end
add_to_keychain_if_needed(the_key)
the_key
rescue Sym::Errors::PasswordsDontMatch, Sym::Errors::PasswordTooShort => e
stderr.puts e.message.bold
retry if (retries += 1) < 3
end
end
end
end
end