Sha256: 71040a0edcccf517383c3ed60a3e66ccda6acaf77da7f615ef4368caeacfbef9

Contents?: true

Size: 1.38 KB

Versions: 20

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module Karafka
  # Karafka framework Cli
  class Cli < Thor
    # Description of topics flow (incoming/outgoing)
    class Flow < Base
      desc 'Print application data flow (incoming => outgoing)'

      # Print out all defined routes in alphabetical order
      def call
        topics.each do |topic|
          any_topics = !topic.responder&.topics.nil?
          log_messages = []

          if any_topics
            log_messages << "#{topic.name} =>"

            topic.responder.topics.each_value do |responder_topic|
              features = []
              features << (responder_topic.required? ? 'always' : 'conditionally')

              log_messages << format(responder_topic.name, "(#{features.join(', ')})")
            end
          else
            log_messages << "#{topic.name} => (nothing)"
          end

          Karafka.logger.info(log_messages.join("\n"))
        end
      end

      private

      # @return [Array<Karafka::Routing::Topic>] all topics sorted in alphabetical order
      def topics
        Karafka::App.consumer_groups.map(&:topics).flatten.sort_by(&:name)
      end

      # Formats a given value with label in a nice way
      # @param label [String] label describing value
      # @param value [String] value that should be printed
      def format(label, value)
        "  - #{label}:                #{value}"
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
karafka-1.4.15 lib/karafka/cli/flow.rb
karafka-1.4.14 lib/karafka/cli/flow.rb
karafka-1.4.13 lib/karafka/cli/flow.rb
karafka-1.4.12 lib/karafka/cli/flow.rb
karafka-1.4.11 lib/karafka/cli/flow.rb
karafka-1.4.10 lib/karafka/cli/flow.rb
karafka-1.4.9 lib/karafka/cli/flow.rb
karafka-1.4.8 lib/karafka/cli/flow.rb
karafka-1.4.7 lib/karafka/cli/flow.rb
karafka-1.4.6 lib/karafka/cli/flow.rb
karafka-1.4.5 lib/karafka/cli/flow.rb
karafka-1.4.4 lib/karafka/cli/flow.rb
karafka-1.4.3 lib/karafka/cli/flow.rb
karafka-1.4.2 lib/karafka/cli/flow.rb
karafka-1.4.1 lib/karafka/cli/flow.rb
karafka-1.4.0 lib/karafka/cli/flow.rb
karafka-1.4.0.rc2 lib/karafka/cli/flow.rb
karafka-1.4.0.rc1 lib/karafka/cli/flow.rb
karafka-1.3.7 lib/karafka/cli/flow.rb
karafka-1.3.6 lib/karafka/cli/flow.rb