moonglum/exogenesis

View on GitHub
lib/exogenesis/support/ship.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'ostruct'
require 'forwardable'
require 'exogenesis/support/spacesuit'

class Ship
  extend Forwardable

  def initialize(raw_config)
    config = OpenStruct.new(raw_config)
    @package_managers = []
    config.passengers.each do |passenger_name|
      passenger = Passenger.by_name(passenger_name).new(config)
      @package_managers << Spacesuit.new(passenger)
    end
  end

  def_delegator :@package_managers, :each

  def clean
    each(&:clean)
  end

  def up
    each(&:up)
  end

  def down
    each(&:down)
  end
end