Sha256: 262db904525daf74e17843a21408461f8e5fe4e6ccab0b1603d109d7ab8e3cb4

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

# typed: strict
# frozen_string_literal: true

module Packwerk
  module Commands
    extend T::Sig
    extend ActiveSupport::Autoload

    autoload :BaseCommand
    autoload :CheckCommand
    autoload :HelpCommand
    autoload :InitCommand
    autoload :LazyLoadedEntry
    autoload :UpdateTodoCommand
    autoload :UsesParseRun
    autoload :ValidateCommand
    autoload :VersionCommand

    class << self
      extend T::Sig

      sig { params(name: String, aliases: T::Array[String]).void }
      def register(name, aliases: [])
        registry << LazyLoadedEntry.new(name, aliases: aliases)
      end

      sig { params(name_or_alias: String).returns(T.nilable(T.class_of(BaseCommand))) }
      def for(name_or_alias)
        registry
          .find { |command| command.matches_command?(name_or_alias) }
          &.command_class
      end

      sig { returns(T::Array[LazyLoadedEntry]) }
      def all
        registry.dup
      end

      private

      sig { returns(T::Array[LazyLoadedEntry]) }
      def registry
        @registry ||= T.let([], T.nilable(T::Array[LazyLoadedEntry]))
      end
    end

    register("init")
    register("check")
    register("update-todo", aliases: ["update"])
    register("validate")
    register("version")
    register("help")
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

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