anchor.diff:                                                         deps = ?DEPS,
                                                          example = "rebar deps",
                                                          short_desc = "Install dependencies",
  -                                                       desc = info_help("Install dependencies"),
  +                                                       desc = info("Install dependencies"),
                                                          opts = []}),
       {ok, State1}.
   
  
positive.code: %% Internal functions
  %% ===================================================================
  
  get_packages(State) ->
      RebarDir = rebar_state:get(State, global_rebar_dir, filename:join(os:getenv("HOME"), ".rebar")),
      PackagesFile = filename:join(RebarDir, "packages"),
  
negative.code:     UnbuiltApps = rebar_app_discover:find_unbuilt_apps([DepsDir]),
      FoundApps = rebar_app_discover:find_apps([DepsDir]),
  
      download_missing_deps(State, DepsDir, FoundApps, UnbuiltApps, Deps).
  
  update_src_deps(State, Deps) ->
      DepsDir = get_deps_dir(State),
  
      %% Find available apps to fulfill dependencies
      %% Should only have to do this once, not every iteration
      UnbuiltApps = rebar_app_discover:find_unbuilt_apps([DepsDir]),
      FoundApps = rebar_app_discover:find_apps([DepsDir]),
  
      %% Resolve deps and their dependencies
      Deps1 = handle_src_deps(Deps, UnbuiltApps++FoundApps),
      {State1, Missing} = download_missing_deps(State, DepsDir, FoundApps, UnbuiltApps, Deps1),
      case dict:is_empty(Missing) of
          true ->
              {State1, Deps1};
          false ->
              update_src_deps(State1, Missing)
      end.
  
  handle_src_deps(Deps, Found) ->
      lists:foldl(fun(X, DepsAcc) ->
                          C = rebar_config:consult(rebar_app_info:dir(X)),
                          S = rebar_state:new(rebar_state:new(), C, rebar_app_info:dir(X)),
                          {ParsedDeps, _Goals} = parse_deps(rebar_state:get(S, deps, [])),
                          dict:merge(fun(_K, V1, _V2) -> V1 end, DepsAcc, ParsedDeps)
                  end, Deps, Found).
  
  download_missing_deps(State, DepsDir, Found, Unbuilt, Deps) ->
      Missing =
          dict:filter(fun(Key, _) ->
                              not lists:any(fun(F) ->
                                                    Key =:= to_binary(rebar_app_info:name(F))
                                            end, Found++Unbuilt)
                      end, Deps),
      dict:map(fun(_Key, #dep{name=Name, source=Source}) ->
                       TargetDir = get_deps_dir(DepsDir, Name),
                       case filelib:is_dir(TargetDir) of
                           true ->
                               ok;
                           false ->
                               ?INFO("Fetching ~s ~s~n", [Name
                                                         ,element(2, Source)]),
                               rebar_fetch:download_source(TargetDir, Source),
                               case rebar_app_discover:find_unbuilt_apps([TargetDir]) of
                                   [AppSrc] ->
                                       C = rebar_config:consult(rebar_app_info:dir(AppSrc)),
                                       S = rebar_state:new(rebar_state:new()
                                                          ,C
                                                          ,rebar_app_info:dir(AppSrc)),
                                       rebar_prv_app_builder:build(S, AppSrc);
                                   [] ->
                                       []
                               end
                       end
               end, Missing),
  
      {State, Missing}.
  
  %% set REBAR_DEPS_DIR and ERL_LIBS environment variables
  setup_env(State) ->
  