anchor.diff:  %%--------------------------------------------------------------------
   %% @doc
   %%  Run the build task. {@link sin_erl_builder}
  -%% @spec build() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -build() ->
  -    build([]).
  +%% @spec build(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +build(StartDir) ->
  +    build(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  Run the build with the specified args. {@link sin_erl_builder}
  -%% @spec build(Args) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -build(Args) ->
  -    do_task(build, Args).
  +%% @spec build(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +build(StartDir, Args) ->
  +    do_task(build, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  Run the analyze task. {@link sin_analyze}
  -%% @spec analyze() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -analyze() ->
  -    analyze([]).
  +%% @spec analyze(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +analyze(StartDir) ->
  +    analyze(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  Run the analyze task. {@link sin_analyze}
  -%% @spec analyze(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -analyze(Args) ->
  -    do_task(analyze, Args).
  +%% @spec analyze(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +analyze(StartDir, Args) ->
  +    do_task(analyze, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the doc task. {@link sin_edoc}
  -%% @spec doc() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -doc() ->
  -    doc([]).
  +%% @spec doc(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +doc(StartDir) ->
  +    doc(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the doc task. {@link sin_edoc}
  -%% @spec doc() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -doc(Args) ->
  -    do_task(doc, Args).
  +%% @spec doc(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +doc(StartDir, Args) ->
  +    do_task(doc, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the shell task. {@link sin_shell}
  -%% @spec shell() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -shell() ->
  -    shell([]).
  +%% @spec shell(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +shell(StartDir) ->
  +    shell(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the shell task. {@link sin_shell}
  -%% @spec shell(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -shell(Args) ->
  -   do_task(shell, Args).
  +%% @spec shell(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +shell(StartDir, Args) ->
  +   do_task(shell, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  Run the gen task. {@link sin_gen}
  -%% @spec gen() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -gen() ->
  -    gen([]).
  +%% @spec gen(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +gen(StartDir) ->
  +    gen(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  Run the gen task. {@link sin_gen}
  -%% @spec gen(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -gen(Args) ->
  -    do_task(singen, gen, Args).
  +%% @spec gen(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +gen(StartDir, Args) ->
  +    do_task(singen, gen, StartDir, Args).
   
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the clean task. {@link sin_clean}
  -%% @spec clean() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -clean() ->
  -    clean([]).
  +%% @spec clean(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +clean(StartDir) ->
  +    clean(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the clean task. {@link sin_clean}
  -%% @spec clean(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -clean(Args) ->
  -    do_task(clean, Args).
  +%% @spec clean(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +clean(StartDir, Args) ->
  +    do_task(clean, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the help task. {@link sin_help}
  -%% @spec help() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -help() ->
  -    help([]).
  +%% @spec help(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +help(StartDir) ->
  +    help(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the help task. {@link sin_help}
  -%% @spec help(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -help(Args) ->
  -    do_task(sinhelp, help, Args).
  +%% @spec help(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +help(StartDir, Args) ->
  +    do_task(sinhelp, help, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the depends task. {@link sin_depends}
  -%% @spec depends() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -depends() ->
  -    depends([]).
  +%% @spec depends(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +depends(StartDir) ->
  +    depends(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the depends task. {@link sin_depends}
  -%% @spec depends(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -depends(Args) ->
  -    do_task(depends, Args).
  +%% @spec depends(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +depends(StartDir, Args) ->
  +    do_task(depends, StartDir, Args).
   
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the test task. {@link sin_test}
  -%% @spec test() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -test() ->
  -    test([]).
  +%% @spec test(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +test(StartDir) ->
  +    test(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the test task. {@link sin_test}
  -%% @spec test(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -test(Args) ->
  -    do_task(test, Args).
  +%% @spec test(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +test(StartDir, Args) ->
  +    do_task(test, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the release task. {@link sin_release_builder}
  -%% @spec release() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -release() ->
  -    release([]).
  +%% @spec release(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +release(StartDir) ->
  +    release(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the release task. {@link sin_release_builder}
  -%% @spec release(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -release(Args) ->
  -    do_task(release, Args).
  +%% @spec release(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +release(StartDir, Args) ->
  +    do_task(release, StartDir, Args).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the dist task. {@link sin_dist_builder}
  -%% @spec dist() -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -dist() ->
  -    dist([]).
  +%% @spec dist(StartDir::startdir()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +dist(StartDir) ->
  +    dist(StartDir, []).
   
   %%--------------------------------------------------------------------
   %% @doc
   %%  run the dist task. {@link sin_dist_builder}
  -%% @spec dist(Args::list()) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  -dist(Args) ->
  -    do_task(dist, Args).
  +%% @spec dist(StartDir::startdir(), Args::args()) -> ok
  +%% @end
  +%%--------------------------------------------------------------------
  +dist(StartDir, Args) ->
  +    do_task(dist, StartDir, Args).
   
   
   %%--------------------------------------------------------------------
  
positive.code: -module(sinan).
  
  %% API
  -export([build/0, build/1,
           analyze/1, analyze/0,
           doc/1, doc/0,
           shell/0, shell/1,
           gen/1, gen/0,
           clean/0, clean/1,
           help/0, help/1,
           depends/0, depends/1,
           test/0, test/1,
           release/0, release/1,
           dist/0, dist/1,
           do_task/2,
           do_task/3,
           start/0]).
  
  %%====================================================================
  
negative.code: %% @spec do_task(Task, Args) -> ok
  %% @end
  %%--------------------------------------------------------------------
  do_task(Task, StartDir, Args) when is_atom(Task) ->
      do_task(sinan, StartDir, Task, Args).
  
  %%--------------------------------------------------------------------
  %% @doc
  