mad_release.erl 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. -module(mad_release).
  2. -description("MAD precompiled binary packages").
  3. -copyright('Synrc Research Center, s.r.o').
  4. -compile(export_all).
  5. % depot releases for synrc.com/apps
  6. contains(X,String,Acc) ->
  7. case string:str(String,atom_to_list(X)) > 0 of true -> [{X}|Acc]; _ -> [] end.
  8. wildcards(Depot,X,Pattern) ->
  9. mad_repl:wildcards([Depot++atom_to_list(X)++Pattern]).
  10. atomlist(TARGETS) ->
  11. string:join(lists:map(fun(X) -> atom_to_list(X) end,TARGETS),",").
  12. depot_release(Name) ->
  13. mad_plan:main([]),
  14. TARGETS = [beam,ling],
  15. HOSTS = [mac,bsd,windows],
  16. Depot = "/Users/5HT/depot/synrc/synrc.com/apps/",
  17. {ok,Apps} = file:consult(Depot++"index.txt"),
  18. Files = lists:flatten([[
  19. lists:foldl(fun(A,Acc) -> [{A}|Acc] end,
  20. [], wildcards(Depot,X,lists:concat(["/ebin/**/*.{app,",atomlist(TARGETS),"}"]))),
  21. lists:foldl(fun(B,Acc)->[contains(P,B,Acc)||P<-HOSTS] end,
  22. [], wildcards(Depot,X,"/{bin,priv}/**/*")) ]
  23. || {_,[X],_} <- lists:flatten(Apps) ]),
  24. io:format("DEPOT Apps: ~p~n",[Files]),
  25. {ok,Name}.
  26. release([]) -> release(["script"]);
  27. release(["depot"]) -> release(["depot", "sample"]);
  28. release(["beam"]) -> release(["beam", "sample"]);
  29. release(["ling"]) -> release(["ling", "sample"]);
  30. release(["script"]) -> release(["script","sample"]);
  31. release(["ling",N]) -> mad_ling:ling(N);
  32. release(["script",N]) -> mad_bundle:main(N);
  33. release(["depot",N]) -> mad_release:depot_release(N);
  34. release(["beam",N]) -> mad_systools:beam_release(N);
  35. release([X]) -> release(["script",X]).