Sha256: 57d8b5d14941f5277d94c287b9668be8279814e112f14f1ad15e7916fcf8d32a

Contents?: true

Size: 924 Bytes

Versions: 4

Compression:

Stored size: 924 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module Packwerk
  module Commands
    class LazyLoadedEntry
      extend T::Sig

      sig { returns(String) }
      attr_reader :name

      sig { params(name: String, aliases: T::Array[String]).void }
      def initialize(name, aliases: [])
        @name = name
        @aliases = aliases
      end

      sig { returns(T.class_of(BaseCommand)) }
      def command_class
        classname = @name.sub(" ", "_").underscore.classify + "Command"
        Commands.const_get(classname) # rubocop:disable Sorbet/ConstantsFromStrings
      end

      sig { returns(String) }
      def description
        command_class.description
      end

      sig { params(name_or_alias: String).returns(T::Boolean) }
      def matches_command?(name_or_alias)
        @name == name_or_alias || @aliases.include?(name_or_alias)
      end
    end

    private_constant :LazyLoadedEntry
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
packwerk-3.2.2 lib/packwerk/commands/lazy_loaded_entry.rb
packwerk-3.2.1 lib/packwerk/commands/lazy_loaded_entry.rb
packwerk-3.2.0 lib/packwerk/commands/lazy_loaded_entry.rb
packwerk-3.1.0 lib/packwerk/commands/lazy_loaded_entry.rb