v-yarotsky/taketo

View on GitHub
lib/taketo/commands.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Taketo

  module Commands
    autoload :SSHOptions,  'taketo/commands/ssh_options'
    autoload :SSHCommand,  'taketo/commands/ssh_command'
    autoload :MoshCommand, 'taketo/commands/mosh_command'

    class CommandNotFoundError < StandardError; end

    def self.[](name)
      commands_map = {
        :ssh  => SSHCommand,
        :mosh => MoshCommand,
      }
      commands_map.fetch(name) do
        raise CommandNotFoundError,
          "Command #{name.inspect} not found. Available commands are: #{commands_map.keys.join(", ")}"
      end
    end
  end

end