     case File.read(lockfile()) do
       {:ok, info} ->
         assert_no_merge_conflicts_in_lockfile(lockfile(), info)
+
         case Code.eval_string(info, [], file: lockfile()) do
-          {lock, _binding} when is_map(lock)  -> lock
+          {lock, _binding} when is_map(lock) -> lock
           {_, _binding} -> %{}
         end
+
       {:error, _} ->
         %{}
     end

    unless map == read() do
      lines =
        for {app, rev} <- Enum.sort(map), rev != nil do
          ~s(  "#{app}": #{inspect rev, limit: :infinity},\n)
        end
      File.write! lockfile(), ["%{\n", lines, "}\n"]
      touch_manifest()
    end
    :ok
  end

  defp lockfile do
    Mix.Project.config[:lockfile]
  end

  defp assert_no_merge_conflicts_in_lockfile(lockfile, info) do
    if String.contains?(info, ~w(<<<<<<< ======= >>>>>>>)) do
      Mix.raise "Your #{lockfile} contains merge conflicts. Please resolve the conflicts " <>
                "and run the command again"
    end
  end
end

  Touches the manifest file to force recompilation.
  """
  def touch_manifest do
    path = Mix.Project.manifest_path()
    File.mkdir_p!(path)
    File.touch!(manifest(path))
  end
