Browse Source

Add COMPILE_OPTS, only compile .erl files, print absolute path

Sina Samavati 11 years ago
parent
commit
008b050d8e
1 changed files with 20 additions and 14 deletions
  1. 20 14
      src/mad.erl

+ 20 - 14
src/mad.erl

@@ -7,6 +7,8 @@
 -export([update_path/1]).
 -export([init/0]).
 
+-define(COMPILE_OPTS(Inc, Ebin),
+        [report, {i, Inc}, {outdir, Ebin}]).
 
 clone_deps(RebarFile) ->
     case deps(RebarFile) of
@@ -32,13 +34,13 @@ compile_app(Dir) ->
     AbsDir = filename:absname(Dir),
     SrcDir = src(AbsDir),
     IncDir = include(AbsDir),
-    case file:list_dir(SrcDir) of
-        {ok, Files} ->
+    case erl_files(SrcDir) of
+        [] ->
+            ok;
+        Files ->
             EbinDir = ebin(AbsDir),
             exec("mkdir", ["-p", EbinDir]),
-            lists:foreach(compile_fun(SrcDir, EbinDir, IncDir), Files);
-        {error, _} ->
-            ok
+            lists:foreach(compile_fun(SrcDir, EbinDir, IncDir), Files)
     end.
 
 compile_deps([]) ->
@@ -56,11 +58,12 @@ compile_deps([{Name, _, Repo}|T]) ->
     SrcDir = src(get_path(Name2)),
     EbinDir = ebin(get_path(Name2)),
     IncDir = include(get_path(Name2)),
-    case file:list_dir(SrcDir) of
-        {ok, Files} ->
+    case erl_files(SrcDir) of
+        [] ->
+            ok;
+        Files ->
             exec("mkdir", ["-p", EbinDir]),
-            lists:foreach(compile_fun(SrcDir, EbinDir, IncDir), Files);
-        {error, _} -> ok
+            lists:foreach(compile_fun(SrcDir, EbinDir, IncDir), Files)
     end,
 
     %% check dependencies of the dependency
@@ -173,12 +176,12 @@ compile_fun(SrcDir, EbinDir, IncDir) ->
             F1 = filename:join([SrcDir, F]),
             case is_app_src(F1) of
                 false ->
-                    io:format("Compiling ~s~n", [F]),
-                    compile:file(F1, [report, {outdir, EbinDir}, {i, IncDir}]);
+                    io:format("Compiling ~s~n", [F1]),
+                    compile:file(F1, ?COMPILE_OPTS(IncDir, EbinDir));
                 true ->
-                    AppF = app_src_to_app(F1),
-                    io:format("Writing ebin/~s~n", [AppF]),
-                    exec("cp", [F1, filename:join([EbinDir, AppF])])
+                    AppFile = filename:join([EbinDir, app_src_to_app(F1)]),
+                    io:format("Writing ~s~n", [AppFile]),
+                    exec("cp", [F1, AppFile])
             end,
             code:add_path(EbinDir)
     end.
@@ -225,3 +228,6 @@ do_clone_deps([{Name, _, Repo}|T]) ->
             ok
     end,
     do_clone_deps(T).
+
+erl_files(Dir) ->
+    filelib:wildcard(filename:join([Dir, "*.erl"])).