anchor.diff:  -spec deps(string()) -> [{app(), [deps_overlay()]}].
   deps(_Profile) ->
     [ {emqx_dashboard, [{re, "emqx_.*"}]}
  +  , {emqx_management, [{re, "emqx_.*"}]}
  +  , {{re, "emqx_.*"}, [emqx]}
  +  , {{re, "emqx_auth_.*"}, [emqx_passwd]}
     ].
   
   main([Profile | _]) ->
  
positive.code:   io:format(standard_error, "~s", [usage()]),
    erlang:halt(1).
  
  inject(Profile) ->
    LibDir = lib_dir(Profile),
    AppNames = list_apps(LibDir),
    lists:foreach(fun({App, Deps}) -> inject(App, Deps, LibDir, AppNames) end, deps(Profile)).
  
  %% list the profile/lib dir to get all apps
  list_apps(LibDir) ->
  
negative.code: 
  ebin_dir(LibDir, AppName) -> filename:join([LibDir, AppName, "ebin"]).
  
  inject(App0, DepsToAdd, LibDir) ->
    App = str(App0),
    AppEbinDir = ebin_dir(LibDir, App),
    [AppFile0] = filelib:wildcard("*.app", AppEbinDir),
  