Sha256: d25b25f1cab3ef474b93344f6cb0a00b04eac18910b02bc4224fcbbc9a7a8117

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

require 'eac_cli/definition'
require 'eac_cli/docopt/runner_extension'
require 'eac_cli/parser'
require 'eac_ruby_utils/core_ext'

module EacCli
  module Runner
    require_sub __FILE__
    extend ::ActiveSupport::Concern

    included do
      extend ClassMethods
      include InstanceMethods
      ::EacCli::Docopt::RunnerExtension.check(self)
    end

    module ClassMethods
      def create(*context_args)
        r = new
        r.context = ::EacCli::Runner::Context.new(*context_args)
        r
      end

      def runner_definition(&block)
        @runner_definition ||= ::EacCli::Definition.new
        @runner_definition.instance_eval(&block) if block
        @runner_definition
      end
    end

    module InstanceMethods
      def context
        return @context if @context

        raise 'Context was required, but was not set yet'
      end

      def context=(new_context)
        @context = new_context
        @parsed = nil
      end

      def parsed
        @parsed ||= ::EacCli::Parser.new(self.class.runner_definition).parse(context.argv)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
eac_cli-0.5.0 lib/eac_cli/runner.rb
ehbrs-tools-0.13.1 vendor/eac_cli/lib/eac_cli/runner.rb