Skip to content

Commit 46de64d

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

File tree

5 files changed

+20
-11
lines changed

5 files changed

+20
-11
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_override_default_repo_url(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_override_default_repo_url(Repos, State) ->
109+
lists:map(fun(Repo=#{repo_name := ?PUBLIC_HEX_REPO}) ->
110+
Repo#{repo_url => rebar_state:default_hex_repo_url_override(State)};
111+
(Repo=#{name := ?PUBLIC_HEX_REPO}) ->
112+
Repo#{repo_url => rebar_state:default_hex_repo_url_override(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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
all_checkout_deps/1,
3636
namespace/1, namespace/2,
3737

38-
maybe_default_cdn/1,
38+
default_hex_repo_url_override/1,
3939

4040
deps_names/1,
4141

@@ -494,8 +494,8 @@ add_provider(State=#state_t{providers=Providers, allow_provider_overrides=false}
494494
State#state_t{providers=[Provider | Providers]}
495495
end.
496496

497-
-spec maybe_default_cdn(t()) -> binary().
498-
maybe_default_cdn(State) ->
497+
-spec default_hex_repo_url_override(t()) -> binary().
498+
default_hex_repo_url_override(State) ->
499499
CDN = rebar_state:get(State, rebar_packages_cdn, ?DEFAULT_CDN),
500500
rebar_utils:to_binary(CDN).
501501

0 commit comments

Comments
 (0)