   @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)
+  def update(Mix.Dep[scm: scm, app: app, requirement: req, opts: opts,
+                     manager: manager, from: from]) do
+    update({ app, req, opts }, [scm], manager, from)
   end
 
   ## Helpers

    end
  end

  defp update_from(dep, manager) do
    filename = 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

  defp mix_dep(Mix.Dep[manager: nil] = dep, project) do

  defp mix_children(config) do
    scms = Mix.SCM.available
    Mix.Project.recur(config, fn _ ->
      from = current_source(:mix)
      (Mix.project[:deps] || []) |> Enum.map(update(&1, scms, nil, from))
    end) |> List.concat
  end

  defp rebar_children(dir) do
    scms = Mix.SCM.available
    Mix.Rebar.recur(dir, fn config ->
      from = current_source(:rebar)
      Mix.Rebar.deps(config) |> Enum.map(update(&1, scms, :rebar, from))
    end) |> List.concat
  end

  defp update(tuple, scms, manager, from) do
    dep = with_scm_and_status(tuple, scms).from(from)

    if match?({ _, req, _ } when is_regex(req), tuple) and
        not String.ends_with?(from, "rebar.config") do
      Mix.shell.info("[WARNING] Regex version requirement for dependencies is " <>
        "deprecated, please use Mix.Version instead")
    end
