Sha256: e376e4632236ab574ba0798d177ad079c836d8210fb4b1e96f167a69b3e26de7
Contents?: true
Size: 1.18 KB
Versions: 2
Compression:
Stored size: 1.18 KB
Contents
require 'thor' module Terminalwire module Thor class Shell < ::Thor::Shell::Basic extend Forwardable # Encapsulates all of the IO resources for a Terminalwire adapter. attr_reader :context, :session def_delegators :context, :stdin, :stdout, :stderr def initialize(context, *, **, &) @context = context @session = Terminalwire::Rails::Session.new(context:) super(*,**,&) end end 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 end end end module ClassMethods def start(given_args = ARGV, config = {}) context = config.delete(:context) config[:shell] = Shell.new(context) if context super(given_args, config) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
terminalwire-0.1.3 | lib/terminalwire/thor.rb |
terminalwire-0.1.2 | lib/terminalwire/thor.rb |