module Terminalwire::Thor

def self.included(base)

def self.included(base)
  base.extend ClassMethods
  # I have to do this in a block to deal with some of Thor's DSL
  base.class_eval do
    extend Forwardable
    protected
    no_commands do
      def_delegators :shell,
        :context, :session
      def_delegators :context,
        :stdout, :stdin, :stderr, :browser
      def_delegators :stdout,
        :puts, :print
      def_delegators :stdin,
        :gets, :getpass
      # Feels more naturual to call `client.files` etc. from
      # the serve since it's more apparent that it's a client.
      alias :client :context
    end
  end
end