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

  The manifest is used to check if the lockfile
  itself is up to date.
  """
  def manifest(path \\ Mix.Project.manifest_path) do
    Path.join(path, @manifest)
  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
