Sha256: 2deaeaf6ec52febf86ca57be158f13e1c28297ff27104ad2d024b0dee6727122

Contents?: true

Size: 1.21 KB

Versions: 11

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

require 'avm/sources/base/subs_paths'
require 'eac_cli/runner_with/subcommands'
require 'eac_ruby_utils/core_ext'

module Avm
  module Sources
    class Base
      module Runners
        # @return [Hash<String, EacCli::Runner>]
        def extra_available_subcommands
          extra_available_subcommands_from_runners_module
        end

        # @return [Hash<String, EacCli::Runner>]
        def extra_available_subcommands_from_runners_module
          self.class.ancestors.reverse.inject({}) do |a, e|
            a.merge(RunnersFromModule.new(e).result)
          end
        end

        class RunnersFromModule
          enable_simple_cache
          common_constructor :the_module

          # @return [Hash<String, EacCli::Runner>]
          def result
            return {} if runners_module.blank?

            ::EacCli::RunnerWith::Subcommands.subcommands_from_module(runners_module)
          end

          def runners_module_uncached
            return nil if the_module.module_parent.blank?

            begin
              the_module.module_parent.const_get('Runners')
            rescue ::NameError
              nil
            end
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
avm-0.26.0 lib/avm/sources/base/runners.rb
eac_tools-0.8.0 sub/avm/lib/avm/sources/base/runners.rb
eac_tools-0.7.0 sub/avm/lib/avm/sources/base/runners.rb
avm-0.25.0 lib/avm/sources/base/runners.rb
eac_tools-0.6.0 sub/avm/lib/avm/sources/base/runners.rb
eac_tools-0.5.0 sub/avm/lib/avm/sources/base/runners.rb
avm-0.24.0 lib/avm/sources/base/runners.rb
eac_tools-0.4.0 sub/avm/lib/avm/sources/base/runners.rb
eac_tools-0.3.0 sub/avm/lib/avm/sources/base/runners.rb
eac_tools-0.2.2 sub/avm/lib/avm/sources/base/runners.rb
avm-0.23.0 lib/avm/sources/base/runners.rb