Sha256: 9e01ccfca739dcce19f864a2cfbccaa77b0048351127499f86f45c609653fd03

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

module Chronicle
  module ETL
    module CLI
      # CLI commands for working with ETL connectors
      class Connectors < SubcommandBase
        default_task 'list'
        namespace :connectors

        desc "install NAME", "Installs connector NAME"
        def install(name)
          Chronicle::ETL::Registry.install_connector(name)
        end

        desc "list", "Lists available connectors"
        # Display all available connectors that chronicle-etl has access to
        def list
          Chronicle::ETL::Registry.load_all!

          connector_info = Chronicle::ETL::Registry.connectors.map do |connector_registration|
            {
              identifier: connector_registration.identifier,
              phase: connector_registration.phase,
              description: connector_registration.descriptive_phrase,
              provider: connector_registration.provider,
              core: connector_registration.built_in? ? '✓' : '',
              class: connector_registration.klass_name
            }
          end

          connector_info = connector_info.sort_by do |a|
            [a[:core].to_s, a[:provider], a[:phase], a[:identifier]]
          end

          headers = connector_info.first.keys.map do |key|
            key.to_s.upcase.bold
          end

          table = TTY::Table.new(headers, connector_info.map(&:values))
          puts table.render(indent: 0, padding: [0, 2])
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chronicle-etl-0.3.1 lib/chronicle/etl/cli/connectors.rb
chronicle-etl-0.3.0 lib/chronicle/etl/cli/connectors.rb