Pārlūkot izejas kodu

ft: 代码修改

master
SisMaker pirms 3 gadiem
vecāks
revīzija
45f5d12cd1
1 mainītis faili ar 32 papildinājumiem un 25 dzēšanām
  1. +32
    -25
      src/eMake.erl

+ 32
- 25
src/eMake.erl Parādīt failu

@ -67,14 +67,15 @@ do_make_files(Worker, Fs, Opts) ->
%io:format("worker:~p~nfs:~p~nopts:~p~n", [Worker, Fs, Opts]),
process(Fs, Worker, lists:member(noexec, Opts), load_opt(Opts)).
%%% Emakefile [{Mods,Opts}]
%%% %%% Mods
%%% %%% Opts Mods 使
readEMakefile(EMakefile, Opts) ->
case file:consult(EMakefile) of
{ok, EMake} ->
transform(EMake, Opts, [], []);
Ret = transform(EMake, Opts, []),
erase(),
Ret;
{error, enoent} ->
%% EMakefile 使 filelib:wildcard("./**/*.erl")
Mods = [filename:rootname(F) || F <- filelib:wildcard("*.erl")],
@ -84,43 +85,49 @@ readEMakefile(EMakefile, Opts) ->
error
end.
transform([{Mod, ModOpts} | Emake], Opts, Files, Already) ->
case expand(Mod, Already) of
transform([], _Opts, Files) ->
lists:reverse(Files);
transform([{Mod, ModOpts} | EMake], Opts, Files) ->
case expand(Mod) of
[] ->
transform(Emake, Opts, Files, Already);
transform(EMake, Opts, Files);
Mods ->
transform(Emake, Opts, [{Mods, ModOpts ++ Opts} | Files], Mods ++ Already)
transform(EMake, Opts, [{Mods, ModOpts ++ Opts} | Files])
end;
transform([Mod | Emake], Opts, Files, Already) ->
case expand(Mod, Already) of
transform([Mod | EMake], Opts, Files) ->
case expand(Mod) of
[] ->
transform(Emake, Opts, Files, Already);
transform(EMake, Opts, Files);
Mods ->
transform(Emake, Opts, [{Mods, Opts} | Files], Mods ++ Already)
end;
transform([], _Opts, Files, _Already) ->
lists:reverse(Files).
transform(EMake, Opts, [{Mods, Opts} | Files])
end.
expand(Mod, Already) when is_atom(Mod) ->
expand(atom_to_list(Mod), Already);
expand(Mods, Already) when is_list(Mods), not is_integer(hd(Mods)) ->
lists:concat([expand(Mod, Already) || Mod <- Mods]);
expand(Mod, Already) ->
expand(Mod) when is_atom(Mod) ->
expand(atom_to_list(Mod));
expand(Mods) when is_list(Mods), not is_integer(hd(Mods)) ->
lists:append([expand(Mod) || Mod <- Mods]);
expand(Mod) ->
case lists:member($*, Mod) of
true ->
Fun = fun(F, Acc) ->
M = filename:rootname(F),
case lists:member(M, Already) of
true -> Acc;
false -> [M | Acc]
case get(M) of
undefined ->
put(M, 1),
[M | Acc];
_ ->
Acc
end
end,
lists:foldl(Fun, [], filelib:wildcard(Mod ++ ".erl"));
false ->
_ ->
Mod2 = filename:rootname(Mod, ".erl"),
case lists:member(Mod2, Already) of
true -> [];
false -> [Mod2]
case get(Mod2) of
undefined ->
put(M, 1),
[Mod2];
_ ->
[]
end
end.

Notiek ielāde…
Atcelt
Saglabāt