class Pixiebox::DockerCompose::Config

Attributes

config[RW]
filename[RW]
package[RW]

Public Class Methods

new(filename) click to toggle source
# File lib/pixiebox/docker_compose/config.rb, line 4
def initialize(filename)
  @config = YAML.load_file(filename)
  @filename = filename
rescue SystemCallError
  raise Pixiebox::Errors::FileNotFoundError, "could not open #{filename}"
end

Public Instance Methods

add_service(service, links) click to toggle source
# File lib/pixiebox/docker_compose/config.rb, line 19
def add_service(service, links)
  service_name = service.keys.first

  services = config['services'].merge! service

  links.each do |link|
    existing_service = services[link]
    if existing_service
      existing_service['links'] = (existing_service['links'] || Array.new).push service_name
      existing_service['links'].uniq!
    end
  end
end
check!(type) click to toggle source
# File lib/pixiebox/docker_compose/config.rb, line 12
def check!(type)
  unless config['services'].keys.include? type
    raise Pixiebox::Errors::ServiceNotInstalled
  end
end
remove_service(service) click to toggle source
# File lib/pixiebox/docker_compose/config.rb, line 34
def remove_service(service)
  service_name = service.keys.first
  services = config['services']

  services.delete(service_name)

  services.each_value do |service|
    if service['links']
      service['links'].delete(service_name)
      service.delete('links') if service['links'].empty?
    end
  end
end
save() click to toggle source
# File lib/pixiebox/docker_compose/config.rb, line 49
def save
  File.open(filename,'w') do |h|
    h.write config.to_yaml
  end
end