rebar.config.script 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. %% -*- mode: erlang -*-
  2. Patch = fun (Key, Value, Config) ->
  3. case lists:keysearch(Key, 1, Config) of
  4. {value, {_, Org}} ->
  5. lists:keyreplace(Key, 1, Config, {Key, Org ++ Value});
  6. false ->
  7. [{Key, Value}|Config]
  8. end
  9. end,
  10. Merge = fun (NewCfg) ->
  11. PatchCfg =
  12. case os:getenv("EXTRA_CONFIG") of
  13. false ->
  14. NewCfg;
  15. File ->
  16. {ok, ExtraCfg} = file:consult(File),
  17. NewCfg ++ ExtraCfg
  18. end,
  19. lists:foldl(
  20. fun ({K, V}, C) -> Patch(K, V, C) end,
  21. CONFIG, PatchCfg)
  22. end,
  23. application:load(syntax_tools),
  24. case application:get_key(syntax_tools, vsn) of
  25. {ok, Vsn} when "1.7" > Vsn ->
  26. Deps = [{merl, ".*",
  27. {git, "git://github.com/erlydtl/merl.git", "750b09d44425f435ff579a4d28bf5844bb5b4ef1"},
  28. [raw]}],
  29. PreHooks =
  30. [{"(linux|darwin|solaris)", compile, "make -C \"$REBAR_DEPS_DIR/merl\" all -W test"},
  31. {"(freebsd|netbsd|openbsd)", compile, "gmake -C \"$REBAR_DEPS_DIR/merl\" all"},
  32. {"win32", compile, "make -C \"%REBAR_DEPS_DIR%/merl\" all -W test"},
  33. {"(linux|darwin|solaris)", eunit, "make -C \"$REBAR_DEPS_DIR/merl\" test"},
  34. {"(freebsd|netbsd|openbsd)", eunit, "gmake -C \"$REBAR_DEPS_DIR/merl\" test"},
  35. {"win32", eunit, "make -C \"%REBAR_DEPS_DIR%/merl\" test"}],
  36. Merge([{deps, Deps},
  37. {pre_hooks, PreHooks},
  38. {erl_opts, [{d, 'MERL_DEP'}]}]);
  39. _ ->
  40. Merge([])
  41. end.