diff options
Diffstat (limited to 'src/rebar_hex_repos.erl')
-rw-r--r-- | src/rebar_hex_repos.erl | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/rebar_hex_repos.erl b/src/rebar_hex_repos.erl index ebee191..def5f49 100644 --- a/src/rebar_hex_repos.erl +++ b/src/rebar_hex_repos.erl @@ -21,7 +21,8 @@ api_key => binary(), repo_url => binary(), repo_public_key => binary(), - repo_verify => binary()}. + repo_verify => binary(), + repo_verify_origin => binary()}. from_state(BaseConfig, State) -> HexConfig = rebar_state:get(State, hex, []), @@ -67,17 +68,20 @@ repos(HexConfig) -> merge_repos(RepoList ++ [HexDefaultConfig]) end. +%% merge repos must add a field repo_name to work with hex_core 0.4.0 -spec merge_repos([repo()]) -> [repo()]. merge_repos(Repos) -> lists:foldl(fun(R=#{name := Name}, ReposAcc) -> %% private organizations include the parent repo before a : case rebar_string:split(Name, <<":">>) of [Repo, Org] -> + %% hex_core uses repo_name for parent update_repo_list(R#{name => Name, + repo_name => Repo, organization => Org, parent => Repo}, ReposAcc); _ -> - update_repo_list(R, ReposAcc) + update_repo_list(R#{repo_name => Name}, ReposAcc) end end, [], Repos). @@ -104,7 +108,13 @@ update_repo_list(R, []) -> default_repo() -> HexDefaultConfig = hex_core:default_config(), - HexDefaultConfig#{name => ?PUBLIC_HEX_REPO}. + HexDefaultConfig#{name => ?PUBLIC_HEX_REPO, repo_verify_origin => repo_verify_origin()}. + +repo_verify_origin() -> + case os:getenv("REBAR_NO_VERIFY_REPO_ORIGIN") of + "1" -> false; + _ -> true + end. repo_list([]) -> []; |