     end
   end
 
-  defp update_from(dep, manager) do
-    filename = case manager do
+  defp current_source(manager) do
+    case manager do
       :mix   -> "mix.exs"
       :rebar -> "rebar.config"
-      nil    -> nil
-    end
-    path = if filename, do: Path.absname(filename), else: File.cwd!
-    dep.from(path)
+    end |> Path.absname
   end
 
   defp mix_dep(Mix.Dep[manager: nil] = dep, project) do

  @doc """
  Receives a dependency and update its status.
  """
  def update(Mix.Dep[scm: scm, app: app, requirement: req, opts: opts]) do
    update({ app, req, opts }, [scm], nil)
  end

  ## Helpers

  def children() do
    # Don't run recursively for the top-level project
    scms = Mix.SCM.available
    from = current_source(:mix)
    (Mix.project[:deps] || []) |> Enum.map(update(&1, scms, nil, from))
  end

  @doc """
