module Podjumper::JumpInfo
Public Class Methods
load(args)
click to toggle source
# File lib/podjumper/jump_info.rb, line 15 def load(args) args = args.dup namespace = disambiguate_namespace(args.shift) pod = disambiguate_pod(namespace, args.shift) container = disambiguate_container(pod, args.shift) new(namespace, pod, container) end
load_rails_from_subdomain(subdomain)
click to toggle source
# File lib/podjumper/jump_info.rb, line 39 def load_rails_from_subdomain(subdomain) pod = Pod.where(subdomain: subdomain).first new(pod.namespace, pod, pod.container('rails')) end
load_upto_namespace(args)
click to toggle source
# File lib/podjumper/jump_info.rb, line 32 def load_upto_namespace(args) args = args.dup namespace = disambiguate_namespace(args.shift) new(namespace, nil, nil) end
load_upto_pod(args)
click to toggle source
# File lib/podjumper/jump_info.rb, line 24 def load_upto_pod(args) args = args.dup namespace = disambiguate_namespace(args.shift) pod = disambiguate_pod(namespace, args.shift) new(namespace, pod, nil) end
Private Class Methods
cli()
click to toggle source
# File lib/podjumper/jump_info.rb, line 79 def cli @cli ||= HighLine.new end
disambiguate(choices, query: nil, title: nil, &choice_name)
click to toggle source
# File lib/podjumper/jump_info.rb, line 63 def disambiguate(choices, query: nil, title: nil, &choice_name) choice_name ||= :itself matches = matching_choices(choices, query, &choice_name) if matches.count == 1 matches.first else puts title if title cli.ask_for_choice(matches, &choice_name) end end
disambiguate_container(pod, query)
click to toggle source
# File lib/podjumper/jump_info.rb, line 59 def disambiguate_container(pod, query) disambiguate(pod.container_names, query: query, title: "Containers in pod #{pod.name.inspect}") end
disambiguate_namespace(query)
click to toggle source
# File lib/podjumper/jump_info.rb, line 46 def disambiguate_namespace(query) disambiguate(namespaces, query: query, title: 'Namespaces') end
disambiguate_pod(namespace, query)
click to toggle source
# File lib/podjumper/jump_info.rb, line 50 def disambiguate_pod(namespace, query) all_pods = Pod.where(namespace: namespace) subdomains = all_pods.map(&:subdomain).uniq subdomain = disambiguate(subdomains, query: query, title: "Subdomains in namespace #{namespace.inspect}") pods = all_pods.select { |pod| pod.subdomain == subdomain } disambiguate(pods, title: "Pods in #{namespace} with subdomain #{subdomain.inspect}", &:name) end
matching_choices(choices, query) { |c| ... }
click to toggle source
# File lib/podjumper/jump_info.rb, line 74 def matching_choices(choices, query) return choices if query.nil? choices.select { |c| yield(c) =~ /#{query}/ } end