The support\nitrogen escript replaces keywords anywhere in the path, not just the filename and content.
For example, I do all my development under d:\development\projects[projectname].
when executing "nitrogen create testproject" it gets up to creating the Makefile (the first thing that uses nitrogen_file:copy_file/3) and fails.
Instead of "d:/development/PROJECTS/testproject/Makefile"
it tries to create "d:/development/testprojectS/testproject/Makefile"
The following patch corrects the problem by passing along the DestDir param to copy_file/4 (which is a simple modification from copy_file/3, which is no longer used)
diff -u d:\development\erlang\nitrogen\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\src\project/nitrogen_file.erl src\project/nitrogen_file.erl
--- d:\development\erlang\nitrogen\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\src\project/nitrogen_file.erl 2009-05-03 07:43:24 +1000
+++ src\project/nitrogen_file.erl 2009-09-20 18:07:18 +1000
@@ -4,7 +4,7 @@
% See MIT-LICENSE for licensing information.
-module(nitrogen_file).
-include_lib("kernel/include/file.hrl").
--export([create_page/2, copy_file/2, copy_file/3]).
+-export([create_page/2, copy_file/2, copy_file/3, copy_file/4]).
create_page(Url, Dir) ->
SrcFile = nitrogen_project:src_path("priv/skel/PAGE.erl"),
@@ -27,7 +27,17 @@
ok = file:write_file(ParsedDestFile, list_to_binary(Contents)),
file:write_file_info(ParsedDestFile, Mode).
+copy_file(SrcFile, DestFile, Changes, DestRoot) ->
+ ParsedDestFile = filename:join(DestRoot, replace_content(Changes, DestFile)),
+ io:format("Creating file: ~p~n", [filename:basename(ParsedDestFile)]),
+ {ok, Mode} = file:read_file_info(SrcFile),
+ {ok, Bin} = file:read_file(SrcFile),
+ Contents = replace_content(Changes, binary_to_list(Bin)),
+ ok = file:write_file(ParsedDestFile, list_to_binary(Contents)),
+ file:write_file_info(ParsedDestFile, Mode).
+
+
%% Internal Functions
url_to_file(Dir, Url) ->
Tokens = string:tokens(Url, "/"),
diff -u d:\development\erlang\nitrogen\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\src\project/nitrogen_project.erl src\project/nitrogen_project.erl
--- d:\development\erlang\nitrogen\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\rklophaus-nitrogen-19b6f15aecead6e0cb0d1de9317551bf1ef735ab\src\project/nitrogen_project.erl 2009-05-03 07:43:24 +1000
+++ src\project/nitrogen_project.erl 2009-09-20 18:04:58 +1000
@@ -38,13 +38,13 @@
copy_template_files(Name, DestDir) ->
Changes = [{"PROJECT", Name},{"PAGE", "web_index"}],
FileList = [
- { "priv/skel/Makefile", filename:join(DestDir, "Makefile")},
- { "priv/skel/Emakefile", filename:join(DestDir, "Emakefile")},
- { "priv/skel/template.html", filename:join(DestDir, "wwwroot/template.html")},
- { "priv/skel/start.sh", filename:join(DestDir, "start.sh")},
- { "priv/skel/PAGE.erl", filename:join(DestDir, "src/pages/web_index.erl")},
- { "priv/skel/PROJECT.app", filename:join(DestDir, "ebin/PROJECT.app")},
- { "priv/skel/PROJECT_app.erl", filename:join(DestDir, "src/PROJECT_app.erl")}
+ { "priv/skel/Makefile", "Makefile"},
+ { "priv/skel/Emakefile", "Emakefile"},
+ { "priv/skel/template.html", "wwwroot/template.html"},
+ { "priv/skel/start.sh", "start.sh"},
+ { "priv/skel/PAGE.erl", "src/pages/web_index.erl"},
+ { "priv/skel/PROJECT.app", "ebin/PROJECT.app"},
+ { "priv/skel/PROJECT_app.erl", "src/PROJECT_app.erl"}
],
- [ nitrogen_file:copy_file(src_path(Src), Dest, Changes) || {Src,Dest} <- FileList ].
+ [ nitrogen_file:copy_file(src_path(Src), Dest, Changes, DestDir) || {Src,Dest} <- FileList ].