Просмотр исходного кода

fix optional deps_dir fetching

Maxim Sokhatsky 11 лет назад
Родитель
Сommit
e9c4ad3ea5
5 измененных файлов с 28 добавлено и 64 удалено
  1. BIN
      mad
  2. 3 8
      src/mad.erl
  3. 20 31
      src/mad_compile.erl
  4. 2 9
      src/mad_deps.erl
  5. 3 16
      src/mad_utils.erl

+ 3 - 8
src/mad.erl

@@ -1,11 +1,6 @@
 -module(mad).
-
--export([main/1]).
--export(['fetch-deps'/3]).
--export([compile/3]).
--export(['compile-app'/3]).
--export(['compile-deps'/3]).
-
+-copyright('Sina Samavati').
+-export([main/1,'fetch-deps'/3,compile/3,'compile-app'/3,'compile-deps'/3]).
 
 main([]) ->
     help();
@@ -61,7 +56,7 @@ compile(Cwd, ConfigFile, Conf) ->
 'compile-app'(Cwd, ConfigFile, Conf) ->
     %% check sub_dirs if they have something to be compiled
     Dirs = [mad_utils:sub_dirs(Cwd, ConfigFile, Conf)] ++ [Cwd],
-    mad_compile:foreach(fun mad_compile:app/2, Dirs, ConfigFile).
+    mad_compile:foreach(fun mad_compile:app/3, Dirs, Conf, ConfigFile).
 
 'compile-deps'(Cwd, ConfigFile, Conf) ->
     mad_compile:deps(Cwd, Conf, ConfigFile, get_value(deps, Conf, [])).

+ 20 - 31
src/mad_compile.erl

@@ -1,47 +1,36 @@
 -module(mad_compile).
-
--export([deps/3]).
--export([app/2]).
--export([foreach/3]).
-
-%% internal
--export([erl_files/1]).
--export([app_src_files/1]).
--export([is_app_src/1]).
--export([app_src_to_app/1]).
--export([erl_to_beam/2]).
--export([is_compiled/2]).
-
+-copyright('Sina Samavati').
+-export([deps/4,app/3,foreach/4]).
+-export([erl_files/1,app_src_files/1,is_app_src/1,app_src_to_app/1,erl_to_beam/2,is_compiled/2]).
 -define(COMPILE_OPTS(Inc, Ebin, Opts),
         [report, {i, Inc}, {outdir, Ebin}] ++ Opts).
 
 -type directory() :: string().
 -type filename() :: string().
 
-
 %% compile dependencies
--spec deps(directory(), filename(), [mad_deps:dependency()]) -> ok.
-deps(_, _, []) ->
+-spec deps(directory(), any(), filename(), [mad_deps:dependency()]) -> ok.
+deps(_, _, _, []) ->
     ok;
-deps(Cwd, ConfigFile, [H|T]) ->
+deps(Cwd, Conf, ConfigFile, [H|T]) ->
     {Name, _} = mad_deps:name_and_repo(H),
     case get(Name) of
         compiled ->
             ok;
         _ ->
-            dep(Cwd, ConfigFile, Name)
+            dep(Cwd, Conf, ConfigFile, Name)
     end,
-    deps(Cwd, ConfigFile, T).
+    deps(Cwd, Conf, ConfigFile, T).
 
 %% compile a dependency
--spec dep(directory(), filename(), string()) -> ok.
-dep(Cwd, ConfigFile, Name) ->
+-spec dep(directory(), any(), filename(), string()) -> ok.
+dep(Cwd, _Conf, ConfigFile, Name) ->
     %% check dependencies of the dependency
     DepPath = filename:join([Cwd, "deps", Name]),
     DepConfigFile = filename:join(DepPath, ConfigFile),
     Conf = mad_utils:consult(DepConfigFile),
     Conf1 = mad_utils:script(DepConfigFile, Conf),
-    deps(Cwd, ConfigFile, mad_utils:get_value(deps, Conf1, [])),
+    deps(Cwd, Conf, ConfigFile, mad_utils:get_value(deps, Conf1, [])),
 
     %% add lib_dirs to path
     LibDirs = mad_utils:lib_dirs(DepPath, Conf1),
@@ -49,7 +38,7 @@ dep(Cwd, ConfigFile, Name) ->
 
     %% compile sub_dirs and add them to path
     SubDirs = mad_utils:sub_dirs(DepPath, ConfigFile, Conf),
-    foreach(fun app/2, SubDirs, ConfigFile),
+    foreach(fun app/3, SubDirs, Conf, ConfigFile),
 
     SrcDir = mad_utils:src(DepPath),
     Files = sort(erl_files(SrcDir)) ++ app_src_files(SrcDir),
@@ -70,10 +59,10 @@ dep(Cwd, ConfigFile, Name) ->
             ok
     end.
 
--spec app(directory(), filename()) -> ok.
-app(Dir, ConfigFile) ->
+-spec app(directory(), any(), filename()) -> ok.
+app(Dir, Conf, ConfigFile) ->
     ConfigFile1 = filename:join(Dir, ConfigFile),
-    Conf = mad_utils:consult(ConfigFile1),
+%    Conf = mad_utils:consult(ConfigFile1),
     Conf1 = mad_utils:script(ConfigFile1, Conf),
     SrcDir = mad_utils:src(Dir),
     Files = sort(erl_files(SrcDir)) ++ app_src_files(SrcDir),
@@ -194,13 +183,13 @@ sort_by_priority([H|T], High, Medium, Low) ->
         end,
     sort_by_priority(T, High2, Medium2, Low2).
 
--spec foreach(fun((directory(), filename()) -> ok), [filename()], filename()) ->
+-spec foreach(fun((directory(), filename()) -> ok), [filename()], any(), filename()) ->
                      ok.
-foreach(_, [], _) ->
+foreach(_, [], _, _) ->
     ok;
-foreach(Fun, [Dir|T], ConfigFile) ->
-    Fun(Dir, ConfigFile),
-    foreach(Fun, T, ConfigFile).
+foreach(Fun, [Dir|T], Config, ConfigFile) ->
+    Fun(Dir, Config, ConfigFile),
+    foreach(Fun, T, Config, ConfigFile).
 
 -spec is_behaviour(file:name()) -> boolean().
 is_behaviour(File) ->

+ 2 - 9
src/mad_deps.erl

@@ -1,12 +1,6 @@
 -module(mad_deps).
-
--export([repos_path/0]).
--export([path/2]).
--export([fetch/4]).
--export([name_and_repo/1]).
--export([checkout_to/1]).
--export([get_publisher/1]).
-
+-copyright('Sina Samavati').
+-export([repos_path/0,path/2,fetch/4,name_and_repo/1,checkout_to/1,get_publisher/1]).
 -define(REPOS_PATH, filename:join([mad_utils:home(), ".mad", "repos"])).
 
 -type directory() :: string().
@@ -18,7 +12,6 @@
 -type dependency() :: {name(), string(), repo()}.
 -export_type([dependency/0]).
 
-
 -spec repos_path() -> directory().
 repos_path() ->
     %% ~/.mad/repos

+ 3 - 16
src/mad_utils.erl

@@ -1,20 +1,7 @@
 -module(mad_utils).
-
--export([cwd/0]).
--export([exec/2]).
--export([home/0]).
--export([consult/1]).
--export([src/1]).
--export([include/1]).
--export([ebin/1]).
--export([deps/1]).
--export([get_value/3]).
--export([script/2]).
--export([sub_dirs/3]).
--export([lib_dirs/2]).
--export([https_to_git/1]).
--export([git_to_https/1]).
--export([last_modified/1]).
+-copyright('Sina Samavati').
+-export([cwd/0,exec/2,home/0,consult/1,src/1,include/1,ebin/1,deps/1,get_value/3,
+         script/2,sub_dirs/3,lib_dirs/2,https_to_git/1,git_to_https/1,last_modified/1]).
 
 -type directory() :: string().