lib/ruby_fly/commands/status.rb in ruby_fly-0.38.0.pre.2 vs lib/ruby_fly/commands/status.rb in ruby_fly-0.38.0.pre.3

- old
+ new

@@ -1,62 +1,60 @@ +# frozen_string_literal: true + require 'lino' require_relative 'base' require_relative 'mixins/environment' +require_relative 'mixins/required_params' module RubyFly module Commands class Status < Base include Mixins::Environment + include Mixins::RequiredParams def initialize(*args) super(*args) @stdout = StringIO.new unless - (defined?(@stdout) && @stdout.respond_to?(:string)) + defined?(@stdout) && @stdout.respond_to?(:string) @stderr = StringIO.new unless - (defined?(@stderr) && @stderr.respond_to?(:string)) + defined?(@stderr) && @stderr.respond_to?(:string) end def configure_command(builder, opts) builder = super(builder, opts) - - missing_params = [ - :target - ].select { |param| opts[param].nil? } - - unless missing_params.empty? - description = missing_params.map { |p| "'#{p}'" }.join(', ') - raise( - ArgumentError, - "Error: #{description} required but not provided.") - end - - target = opts[:target] - builder .with_subcommand('status') do |sub| - sub = sub.with_option('-t', target) + sub = with_target(sub, opts[:target]) sub end end def do_around(opts, &block) - begin - block.call(opts) - rescue Open4::SpawnError => e - raise e unless e.status.exitstatus == 1 - end + block.call(opts) + rescue Open4::SpawnError => e + raise e unless e.status.exitstatus == 1 end - def do_after(opts) + def do_after(_opts) output = stdout.string error = stderr.string return :logged_in if output =~ /logged in successfully/ return :logged_out if error =~ /logged out/ return :session_expired if error =~ /please login again/ return :unknown_target if error =~ /error: unknown target/ :unknown_status end + + private + + def required_params + %i[target] + end + + def with_target(sub, target) + sub.with_option('-t', target) + end end end -end \ No newline at end of file +end