class ChefCLI::Policyfile::SolutionDependencies

def add_cookbook_dep_from_lock_data(name_and_version, deps_list)

def add_cookbook_dep_from_lock_data(name_and_version, deps_list)
  unless name_and_version.is_a?(String)
    show = "#{name_and_version.inspect} => #{deps_list.inspect}"
    msg = %Q{lockfile cookbook_dependencies entries must be of the form "$COOKBOOK_NAME ($VERSION)" => [ $dependency, ...] (got: #{show}) }
    raise InvalidLockfile, msg
  end
  unless Cookbook.valid_str?(name_and_version)
    msg = %Q{lockfile cookbook_dependencies entry keys must be of the form "$COOKBOOK_NAME ($VERSION)" (got: #{name_and_version.inspect}) }
    raise InvalidLockfile, msg
  end
  unless deps_list.is_a?(Array)
    msg = %Q{lockfile cookbook_dependencies entry values must be an Array like [ [ "$COOKBOOK_NAME", "$CONSTRAINT" ], ... ] (got: #{deps_list.inspect}) }
    raise InvalidLockfile, msg
  end
  deps_list.each do |entry|
    unless entry.is_a?(Array) && entry.size == 2
      msg = %Q{lockfile solution_dependencies dependencies entry must be like [ "$COOKBOOK_NAME", "$CONSTRAINT" ] (got: #{entry.inspect})}
      raise InvalidLockfile, msg
    end
    dep_name, constraint = entry
    unless dep_name.is_a?(String) && !dep_name.empty?
      msg = "malformed lockfile solution_dependencies dependencies entry. Cookbook name portion must be a string (got: #{entry.inspect})"
      raise InvalidLockfile, msg
    end
    unless constraint.is_a?(String) && !constraint.empty?
      msg = "malformed lockfile solution_dependencies dependencies entry. Version constraint portion must be a string (got: #{entry.inspect})"
      raise InvalidLockfile, msg
    end
  end
  cookbook = Cookbook.parse(name_and_version)
  add_cookbook_obj_dep(cookbook, deps_list)
end