module SmtpMock::Cli::Resolver
Constants
- DOWNLOAD_SCRIPT
- USE_CASE
Public Instance Methods
resolve(command_line_args)
click to toggle source
# File lib/smtp_mock/cli/resolver.rb, line 11 def resolve(command_line_args) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize opt_parser = ::OptionParser.new do |parser| parser.banner = SmtpMock::Cli::Resolver::USE_CASE parser.on('-s', '--sudo', 'Run command as sudo') { self.sudo = true } parser.on('-iPATH', '--install=PATH', 'Install smtpmock to the existing path') do |argument| self.install_path = argument return self.message = 'smtpmock is already installed' if ::File.exist?(binary_path) install_to(install_path) ::Kernel.system("#{as_sudo}ln -s #{binary_path} #{SmtpMock::Dependency::SYMLINK}") self.message = 'smtpmock was installed successfully' end parser.on('-u', '--uninstall', 'Uninstall smtpmock') do return if not_installed? # rubocop:disable Lint/NonLocalExitFromIterator ::Kernel.system("#{as_sudo}unlink #{SmtpMock::Dependency::SYMLINK}") ::Kernel.system("rm #{current_smtpmock_path}") self.message = 'smtpmock was uninstalled successfully' end parser.on('-g', '--upgrade', 'Upgrade to latest version of smtpmock') do return if not_installed? # rubocop:disable Lint/NonLocalExitFromIterator install_to(current_smtpmock_path[%r{(.+)/.+}, 1]) self.message = 'smtpmock was upgraded successfully' end parser.on('-h', '--help', 'Prints help') { self.message = parser.to_s } self.success = true end opt_parser.parse(command_line_args) # TODO: add error handler end
Private Instance Methods
as_sudo()
click to toggle source
# File lib/smtp_mock/cli/resolver.rb, line 59 def as_sudo return 'sudo ' if sudo end
binary_path()
click to toggle source
# File lib/smtp_mock/cli/resolver.rb, line 51 def binary_path "#{install_path}/smtpmock" end
current_smtpmock_path()
click to toggle source
# File lib/smtp_mock/cli/resolver.rb, line 63 def current_smtpmock_path @current_smtpmock_path ||= SmtpMock::Dependency.smtpmock_path_by_symlink end
install_to(install_path)
click to toggle source
# File lib/smtp_mock/cli/resolver.rb, line 55 def install_to(install_path) ::Kernel.system("cd #{install_path} && curl -sL #{SmtpMock::Cli::Resolver::DOWNLOAD_SCRIPT} | bash") end
not_installed?()
click to toggle source
# File lib/smtp_mock/cli/resolver.rb, line 67 def not_installed? return false unless current_smtpmock_path.empty? self.message = 'smtpmock not installed yet' true end