anchor.diff:              build_out_app_src(Env, App)
       end.
   
  -%%--------------------------------------------------------------------
   %% @doc
   %% Builds out the app descriptor for the app.
  -%% @spec (BuildRef, Env, App) -> ok
  -%% @end
  -%%--------------------------------------------------------------------
  +%% @end
  +-spec build_out_app_src(env(), App::string()) -> ok.
   build_out_app_src(Env, App) ->
       ProjDir = get_env(project_dir, Env),
       AppEbin = filename:join([ProjDir, "lib", App, "ebin"]),
  
positive.code:     get_application_names(Env2).
  
  
  %%--------------------------------------------------------------------
  %% @spec get_application_names() -> AppNames.
  %% @doc
  %%  Queries the user for a list of application names. The user
  %% can choose to skip this part.
  %% @end
  %%--------------------------------------------------------------------
  get_application_names(Env) ->
      ewl_talk:say("Please specify the names of the OTP apps"
  		 " that will be developed under this project. One application to a"
  		 " line. Finish with a blank line."),
      get_application_names(Env, ewl_talk:ask("app"), []).
  
  get_application_names(Env, [], Acc) ->
      Env2 = [{apps, Acc} | Env],
      build_out_project(Env2);
  
negative.code:     sin_skel:sysconfig(Env, ConfigFile),
      all_done().
  
  %% @doc
  %%  Prints out a nice error message if everything was ok.
  %% @end
  -spec all_done() -> ok.
  all_done() ->
      ewl_talk:say("Project was created, you should be good to go!").
  
  
  %% @doc
  %% Helper function that makes the specified directory and all parent
  %% directories.
  %% @end
  -spec make_dir(DirName::string()) -> ok.
  make_dir(DirName) ->
      filelib:ensure_dir(DirName),
      is_made(DirName, file:make_dir(DirName)),
      DirName.
  
  %% @doc
  %% Helper function that makes sure a directory is made by testing
  %% the output of file:make_dir().
  %% @end
  -spec is_made(DirName::string(), {error, eexist} | ok) -> ok.
  is_made(DirName, {error, eexist})->
      ewl_talk:say("~s exists ok.", [DirName]);
  is_made(DirName, ok) ->
     ewl_talk:say("~s created ok.", [DirName]).
  
  %% @doc
  %%  Get the value from the environment.
  %% @end
  -spec get_env(Key::string(), env()) -> ok.
  get_env(Name, Env) ->
      {value, {Name, Value}} = lists:keysearch(Name, 1, Env),
      Value.
  