Sha256: 2a6028d7d381c5b30634df8c503ac94cfb3ea5b6294e45ba02ef977ceb28a951

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

module Kontena::Cli::Stacks
  module YAML
    class Opto::Resolvers::ServiceLink < Opto::Resolver
      include Kontena::Cli::Common

      def resolve
        message = hint['prompt']
        name_filter = hint['name']
        image_filter = hint['image']
        raise "prompt missing" unless message

        services = client.get("grids/#{current_grid}/services")['services']
        services = filter_by_image(services, image_filter) if image_filter
        services = filter_by_name(services, name_filter) if name_filter
        prompt.select(message) do |menu|
          menu.choice "<none>", nil unless option.required?
          services.each do |s|
            if s.dig('stack', 'name') == 'null'
              name = s['name']
            else
              name = "#{s.dig('stack', 'name')}/#{s['name']}"
            end
            menu.choice name, "#{s.dig('stack', 'name')}/#{s['name']}"
          end
        end
      end

      def filter_by_image(services, image)
        services.select { |s|
          s['image'].include?(image)
        }
      end

      def filter_by_name(services, name)
        services.select { |s|
          s['name'].include?(name)
        }
      end

      def stack
        ENV['STACK']
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kontena-cli-1.1.0 lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb
kontena-cli-1.1.0.rc2 lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb