def store_config config
      required = Set.new([:name, :parameters, :output])
      missing = required - config.keys
      raise TargetLoadError.new("Required keys are missing from target definition: #{missing.to_a.join(",")}") unless missing.empty?
      config.each_pair do |param, data|
        case param
        when :name
          raise TargetLoadError.new('Target name must be a string') unless data.is_a? String
          @name = data
        when :shortname
          raise TargetLoadError.new('Target shortname must be a string') unless data.is_a? String
          @shortname = data
        when :parameters
          self.generate_parameters data
        when :output
          raise TargetLoadError.new('Target output must be a hash') unless data.is_a?(Hash)
          @output = data
        end
      end
    end
def store_config config
      required = Set.new([:name, :parameters, :output])
      missing = required - config.keys
      raise TargetLoadError.new("Required keys are missing from target definition: #{missing.to_a.join(",")}") unless missing.empty?
      config.each_pair do |param, data|
        case param
        when :name
          raise TargetLoadError.new('Target name must be a string') unless data.is_a? String
          @name = data
        when :shortname
          raise TargetLoadError.new('Target shortname must be a string') unless data.is_a? String
          @shortname = data
        when :parameters
          self.generate_parameters data
        when :output
          raise TargetLoadError.new('Target output must be a hash') unless data.is_a?(Hash)
          @output = data
        end
      end
    end
store the values in +:config+, checking they are valid