anchor.diff:  %%====================================================================
   %% API
   %%====================================================================
  +do(undefined, _, Options) ->
  +    do(help, [], Options);
  +do(Target, Rest, Options) ->
  +    Result = do_task(Target,
  +                     find_start_dir(Options),
  +                     setup_config_overrides(Options, Rest)),
  +    case sin_state:get_run_errors(Result) of
  +        [] ->
  +            {ok, Result};
  +        _ ->
  +            {error, Result}
  +    end.
  +
   %% @doc run the specified task with a full project dir
   -spec do_task_full(sin_config:config(), sin_state:state(), task_name()) -> ok.
   do_task_full(Config0, State0, Task) when is_atom(Task) ->
  
positive.code: main(Args) ->
      manual_start(),
      case getopt:parse(option_spec_list(), Args) of
          {ok, {Options, NonOptArgs}} ->
              do_build(Options, NonOptArgs);
          {error, {Reason, Data}} ->
              io:format("Error: ~s ~p~n~n", [Reason, Data]),
              usage(),
  
negative.code:             NewState
      end.
  
  usage(OptSpecList) ->
      getopt:usage(OptSpecList, "", "[command] [option1 option2]....",
                   [{"var=value",
  