From bb8af6ddec20f44599f7cd0c3e626996a3206dad Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Fri, 5 Oct 2018 07:13:56 -0600 Subject: support tuples in overlay_vars so rebar3 can pass variables (#672) --- src/rlx_config.erl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/rlx_config.erl') diff --git a/src/rlx_config.erl b/src/rlx_config.erl index ee58db5..b341ae7 100644 --- a/src/rlx_config.erl +++ b/src/rlx_config.erl @@ -303,8 +303,9 @@ list_of_overlay_vars_files(undefined) -> []; list_of_overlay_vars_files([]) -> []; -list_of_overlay_vars_files([H | _]=FileNames) when erlang:is_list(H) -> - FileNames; +list_of_overlay_vars_files([H | _]=Vars) when erlang:is_list(H) ; + is_tuple(H) -> + Vars; list_of_overlay_vars_files(FileName) when is_list(FileName) -> [FileName]. @@ -328,7 +329,8 @@ merge_configs([{Key, Value} | CliTerms], ConfigTerms) -> end; overlay_vars -> case lists:keyfind(overlay_vars, 1, ConfigTerms) of - {_, [H | _] = Vars} when is_list(H) -> + {_, [H | _] = Vars} when is_list(H) ; + is_tuple(H) -> MergedValue = Vars ++ Value, merge_configs(CliTerms, lists:keyreplace(overlay_vars, 1, ConfigTerms, {Key, MergedValue})); {_, Vars} when is_list(Vars) -> -- cgit v1.2.3 From 64871e4cb37b2f52c0956b81bbdf1e500977fd01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andra=CC=81s=20Boroska?= Date: Mon, 31 Dec 2018 11:20:55 +0100 Subject: fix handling of default_release in config When no release specified in cli, prevent overwriting default_release in relx config. --- src/rlx_config.erl | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/rlx_config.erl') diff --git a/src/rlx_config.erl b/src/rlx_config.erl index b341ae7..4160bba 100644 --- a/src/rlx_config.erl +++ b/src/rlx_config.erl @@ -339,6 +339,9 @@ merge_configs([{Key, Value} | CliTerms], ConfigTerms) -> false -> merge_configs(CliTerms, ConfigTerms++[{Key, Value}]) end; + default_release when Value =:= {undefined, undefined} -> + %% No release specified in cli. Prevent overwriting default_release in ConfigTerms. + merge_configs(CliTerms, lists:keymerge(1, ConfigTerms, [{Key, Value}])); _ -> merge_configs(CliTerms, lists:reverse(lists:keystore(Key, 1, lists:reverse(ConfigTerms), {Key, Value}))) end. -- cgit v1.2.3 From 441000c7b0730e96673dfe705a185b82229b30ea Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sun, 12 May 2019 13:32:45 -0600 Subject: add support for git ref and file content as app version --- src/rlx_config.erl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/rlx_config.erl') diff --git a/src/rlx_config.erl b/src/rlx_config.erl index 4160bba..f86f593 100644 --- a/src/rlx_config.erl +++ b/src/rlx_config.erl @@ -346,6 +346,16 @@ merge_configs([{Key, Value} | CliTerms], ConfigTerms) -> merge_configs(CliTerms, lists:reverse(lists:keystore(Key, 1, lists:reverse(ConfigTerms), {Key, Value}))) end. +parse_vsn(Vsn) when Vsn =:= git ; Vsn =:= "git" -> + {ok, V} = ec_git_vsn:vsn(ec_git_vsn:new()), + V; +parse_vsn({git, short}) -> + git_ref("--short"); +parse_vsn({git, long}) -> + git_ref(""); +parse_vsn({file, File}) -> + {ok, Vsn} = file:read_file(File), + binary_to_list(rlx_string:trim(Vsn, both, "\n")); parse_vsn(Vsn) when Vsn =:= semver ; Vsn =:= "semver" -> {ok, V} = ec_git_vsn:vsn(ec_git_vsn:new()), V; @@ -357,3 +367,20 @@ parse_vsn({cmd, Command}) -> V; parse_vsn(Vsn) -> Vsn. + +git_ref(Arg) -> + case os:cmd("git rev-parse " ++ Arg ++ " HEAD") of + String -> + Vsn = rlx_string:trim(String, both, "\n"), + case length(Vsn) =:= 40 orelse length(Vsn) =:= 7 of + true -> + Vsn; + false -> + %% if the result isn't exactly either 40 or 7 characters then + %% it must have failed + {ok, Dir} = file:get_cwd(), + ec_cmd_log:warn("Getting ref of git repo failed in ~ts. " + "Falling back to version 0", [Dir]), + {plain, "0"} + end + end. -- cgit v1.2.3