class Devkitkat::Config

Constants

DEFAULT_APPLICATION_NAME
DEVKITKAT_FILE_NAME
HIDDEN_SERVICES

Attributes

devkitkat_yml[R]
kit_root[R]

Public Class Methods

new(kit_root) click to toggle source
# File lib/devkitkat/config.rb, line 11
def initialize(kit_root)
  @kit_root = kit_root
  @devkitkat_yml = load_config
end

Public Instance Methods

all_services() click to toggle source
# File lib/devkitkat/config.rb, line 16
def all_services
  services + HIDDEN_SERVICES
end
application() click to toggle source
# File lib/devkitkat/config.rb, line 64
def application
  devkitkat_yml.fetch('application', DEFAULT_APPLICATION_NAME)
end
machine_driver() click to toggle source
# File lib/devkitkat/config.rb, line 40
def machine_driver
  devkitkat_yml.dig('machine', 'driver') || 'none'
end
machine_extra_hosts() click to toggle source
# File lib/devkitkat/config.rb, line 52
def machine_extra_hosts
  devkitkat_yml.dig('machine', 'extra_hosts')
end
machine_extra_write_accesses() click to toggle source
# File lib/devkitkat/config.rb, line 60
def machine_extra_write_accesses
  devkitkat_yml.dig('machine', 'extra_write_accesses')
end
machine_image() click to toggle source
# File lib/devkitkat/config.rb, line 48
def machine_image
  devkitkat_yml.dig('machine', 'image')
end
machine_location() click to toggle source
# File lib/devkitkat/config.rb, line 44
def machine_location
  devkitkat_yml.dig('machine', 'location') || 'local'
end
machine_network_mode() click to toggle source
# File lib/devkitkat/config.rb, line 56
def machine_network_mode
  devkitkat_yml.dig('machine', 'network_mode')
end
resolve!(target, exclude: nil) click to toggle source
# File lib/devkitkat/config.rb, line 20
def resolve!(target, exclude: nil)
  services = if target.nil? || target == 'system'
              %w[system]
            elsif target == 'all'
              all_services
            elsif group = find_group(target)
              services_for_group(group)
            elsif services = find_comma_separated_services(target)
              services
            elsif service = find_service(target)
              [service]
            else
              raise_error(target)
            end

  services = services - exclude if exclude

  services
end
service_hash(name) click to toggle source
# File lib/devkitkat/config.rb, line 72
def service_hash(name)
  devkitkat_yml.dig('services', name) || {}
end
variables() click to toggle source
# File lib/devkitkat/config.rb, line 68
def variables
  devkitkat_yml.fetch('variables', {})
end

Private Instance Methods

config_path() click to toggle source
# File lib/devkitkat/config.rb, line 114
def config_path
  File.join(kit_root, DEVKITKAT_FILE_NAME)
end
find_comma_separated_services(target) click to toggle source
# File lib/devkitkat/config.rb, line 98
def find_comma_separated_services(target)
  return unless target.include?(',')

  target.split(',').map do |t|
    find_service(t).tap do |service|
      raise_error(t) unless service
    end
  end
end
find_group(target) click to toggle source
# File lib/devkitkat/config.rb, line 90
def find_group(target)
  groups.find { |group| group == target }
end
find_service(target) click to toggle source
# File lib/devkitkat/config.rb, line 94
def find_service(target)
  services.find { |service| service == target }
end
groups() click to toggle source
# File lib/devkitkat/config.rb, line 82
def groups
  devkitkat_yml['groups']&.keys || []
end
load_config() click to toggle source
# File lib/devkitkat/config.rb, line 108
def load_config
  File.read(config_path).yield_self do |content|
    YAML.load(content)
  end
end
raise_error(target) click to toggle source
# File lib/devkitkat/config.rb, line 118
def raise_error(target)
  raise ArgumentError, "The target name #{target} couldn't be resolved"
end
services() click to toggle source
# File lib/devkitkat/config.rb, line 78
def services
  devkitkat_yml['services']&.keys || []
end
services_for_group(group) click to toggle source
# File lib/devkitkat/config.rb, line 86
def services_for_group(group)
  devkitkat_yml.dig('groups', group) || []
end