Skip to content

Commit 2ea46f2

Browse files
committed
Apply HEX_CDN (mirror url) to the default public hex repo only
1 parent 038a9f8 commit 2ea46f2

File tree

5 files changed

+18
-9
lines changed

5 files changed

+18
-9
lines changed

src/rebar3.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ run_aux(State, RawArgs) ->
134134
%% Maybe change the default hex CDN
135135
HexCDN = case os:getenv("HEX_CDN") of
136136
false -> ?DEFAULT_CDN;
137+
[] -> ?DEFAULT_CDN;
137138
CDN -> CDN
138139
end,
139140
State2 = rebar_state:set(State1, rebar_packages_cdn, HexCDN),

src/rebar_hex_repos.erl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ from_state(BaseConfig, State) ->
3434
%% add base config entries that are specific to use by rebar3 and not overridable
3535
Repos1 = merge_with_base_and_auth(Repos, BaseConfig, Auth),
3636
%% merge organizations parent repo options into each oraganization repo
37-
update_organizations(Repos1).
37+
update_organizations(maybe_apply_mirror(Repos1, State)).
3838

3939
-spec get_repo_config(unicode:unicode_binary(), rebar_state:t() | [repo()])
4040
-> {ok, repo()} | error.
@@ -105,6 +105,15 @@ update_organizations(Repos) ->
105105
Repo
106106
end, Repos).
107107

108+
maybe_apply_mirror(Repos, State) ->
109+
lists:map(fun(Repo=#{repo_name := ?PUBLIC_HEX_REPO}) ->
110+
Repo#{repo_url => rebar_state:maybe_default_cdn(State)};
111+
(Repo=#{name := ?PUBLIC_HEX_REPO}) ->
112+
Repo#{repo_url => rebar_state:maybe_default_cdn(State)};
113+
(Repo) ->
114+
Repo
115+
end, Repos).
116+
108117
update_repo_list(R=#{name := N}, [H=#{name := HN} | Rest]) when N =:= HN ->
109118
[maps:merge(R, H) | Rest];
110119
update_repo_list(R, [H | Rest]) ->

src/rebar_packages.erl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,8 @@ parse_checksum(Checksum) ->
243243

244244
update_package(Name, RepoConfig=#{name := Repo}, State) ->
245245
?MODULE:verify_table(State),
246-
CDN = rebar_state:maybe_default_cdn(State),
247-
?DEBUG("Getting package ~ts resource from repo ~ts", [Name, CDN]),
248-
try r3_hex_repo:get_package(get_package_repo_config(RepoConfig#{repo_url => CDN}), Name) of
246+
?DEBUG("Getting package ~ts resource from repo ~ts", [Name, maps:get(repo_url, RepoConfig, undefined)]),
247+
try r3_hex_repo:get_package(get_package_repo_config(RepoConfig), Name) of
249248
{ok, {200, _Headers, Releases}} ->
250249
_ = insert_releases(Name, Releases, Repo, ?PACKAGE_TABLE),
251250
{ok, RegistryDir} = rebar_packages:registry_dir(State),

src/rebar_pkg_resource.erl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,11 @@ store_etag_in_cache(Path, ETag) ->
210210
UpdateETag :: boolean(),
211211
Res :: ok | {unexpected_hash, integer(), integer()} | {fetch_fail, binary(), binary()}
212212
| {bad_registry_checksum, integer(), integer()} | {error, _}.
213-
cached_download(TmpDir, CachePath, Pkg={pkg, Name, Vsn, _OldHash, _Hash, RepoConfig}, State, ETag,
213+
cached_download(TmpDir, CachePath, Pkg={pkg, Name, Vsn, _OldHash, _Hash, RepoConfig}, _State, ETag,
214214
ETagPath, UpdateETag) ->
215-
CDN = rebar_state:maybe_default_cdn(State),
216-
?DEBUG("Downloading package ~ts from repo ~ts", [Name, CDN]),
217-
case request(RepoConfig#{repo_url => CDN}, Name, Vsn, ETag) of
215+
RepoUrl = maps:get(repo_url, RepoConfig, undefined),
216+
?DEBUG("Downloading package ~ts from repo ~ts", [Name, RepoUrl]),
217+
case request(RepoConfig, Name, Vsn, ETag) of
218218
{ok, cached} ->
219219
?DEBUG("Version cached at ~ts is up to date, reusing it", [CachePath]),
220220
serve_from_cache(TmpDir, CachePath, Pkg);

src/rebar_state.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ add_provider(State=#state_t{providers=Providers, allow_provider_overrides=false}
497497
-spec maybe_default_cdn(t()) -> binary().
498498
maybe_default_cdn(State) ->
499499
CDN = rebar_state:get(State, rebar_packages_cdn, ?DEFAULT_CDN),
500-
rebar_utils:to_binary(CDN).
500+
rebar_utils:to_binary(rebar_utils:to_binary(CDN)).
501501

502502
-dialyzer({no_match, create_logic_providers/2}). % we want to be permissive with providers:new/2
503503
create_logic_providers(ProviderModules, State0) ->

0 commit comments

Comments
 (0)