anchor.diff:                      {bare, true},
                       {deps, ?DEPS},
                       {example, "rebar3 plugins upgrade <plugin>"},
  -                    {short_desc, "Upgrade plugins"},
  -                    {desc, "List or upgrade plugins"},
  +                    {short_desc, "Upgrade plugins."},
  +                    {desc, "List or upgrade plugins. Use the -a/--all option to upgrade"
  +                           " all plugins."},
                       {opts, [{plugin, undefined, undefined, string,
                                "Plugin to upgrade"},
                               {all, $a, "all", undefined, "Upgrade all plugins."}]}])),
  
positive.code:                 end,
                  {ok, State},
                  LocalPluginsNames);
          Plugin ->
              upgrade(Plugin, State)
      end.
  
  -spec format_error(any()) -> iolist().
  format_error({not_found, Plugin}) ->
      io_lib:format("Plugin to upgrade not found: ~ts", [Plugin]);
  format_error(Reason) ->
      io_lib:format("~p", [Reason]).
  
  upgrade(Plugin, State) ->
      Profiles = rebar_state:current_profiles(State),
  
negative.code: 
  -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
  do(State) ->
      case handle_args(State) of 
          {false, undefined} -> throw(?PRV_ERROR(no_arg));
          {true, _} -> 
              {_, LocalPluginsNames} = rebar_prv_plugins:list_local_plugins(State),
              lists:foldl(
                  fun (LocalPluginName, {ok, StateAcc}) ->
  