Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 27 additions & 2 deletions src/rebar_hex_repos.erl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
auth_config/1,
remove_from_auth_config/2,
update_auth_config/2,
format_error/1]).
format_error/1,
anon_repo_config/1,
format_repo/1
]).

-ifdef(TEST).
%% exported for test purposes
Expand All @@ -24,7 +27,9 @@
repo_key => binary(),
repo_public_key => binary(),
repo_verify => binary(),
repo_verify_origin => binary()}.
repo_verify_origin => binary(),
mirror_of => _ % legacy field getting stripped
}.

from_state(BaseConfig, State) ->
HexConfig = rebar_state:get(State, hex, []),
Expand All @@ -50,6 +55,26 @@ get_repo_config(RepoName, State) ->
#{repos := Repos} = rebar_resource_v2:find_resource_state(pkg, Resources),
get_repo_config(RepoName, Repos).

-spec anon_repo_config(repo()) ->
#{api_url := _, name := _, repo_name => _, repo_organization => _,
repo_url := _, repo_verify => _, repo_verify_origin => _,
mirror_of => _}.
anon_repo_config(Map) ->
maps:with([name, repo_name, api_url, repo_url, repo_organization,
mirror_of, repo_verify, repo_verify_origin], Map).

-spec format_repo(repo()) -> unicode:chardata().
format_repo(RepoConfig) ->
Name = maps:get(name, RepoConfig, undefined),
case get({?MODULE, format_repo, Name}) of
undefined ->
put({?MODULE, format_repo, Name}, true),
Anon = anon_repo_config(RepoConfig),
io_lib:format("~ts (~p)", [Name, Anon]);
true ->
io_lib:format("~ts", [Name])
end.

merge_with_base_and_auth(Repos, BaseConfig, Auth) ->
[maps:merge(maps:merge(Repo, BaseConfig),
maps:get(maps:get(name, Repo), Auth, #{})) || Repo <- Repos].
Expand Down
4 changes: 2 additions & 2 deletions src/rebar_packages.erl
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ parse_checksum(Checksum) ->

update_package(Name, RepoConfig=#{name := Repo}, State) ->
?MODULE:verify_table(State),
?DEBUG("Getting definition for package ~ts from repo ~ts via repo_url ~ts",
[Name, maps:get(name, RepoConfig, undefined), maps:get(repo_url, RepoConfig, undefined)]),
?DEBUG("Getting definition for package ~ts from repo ~ts",
[Name, rebar_hex_repos:format_repo(RepoConfig)]),
try r3_hex_repo:get_package(get_package_repo_config(RepoConfig), Name) of
{ok, {200, _Headers, Releases}} ->
_ = insert_releases(Name, Releases, Repo, ?PACKAGE_TABLE),
Expand Down
10 changes: 7 additions & 3 deletions src/rebar_pkg_resource.erl
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,8 @@ store_etag_in_cache(Path, ETag) ->
| {bad_registry_checksum, integer(), integer()} | {error, _}.
cached_download(TmpDir, CachePath, Pkg={pkg, Name, Vsn, _OldHash, _Hash, RepoConfig}, _State, ETag,
ETagPath, UpdateETag) ->
?DEBUG("Making request to get package ~ts tarball from repo ~ts via repo_url ~ts",
[Name, maps:get(name, RepoConfig, undefined), maps:get(repo_url, RepoConfig, undefined)]),
?DEBUG("Making request to get package ~ts from repo ~ts",
[Name, rebar_hex_repos:format_repo(RepoConfig)]),
case request(RepoConfig, Name, Vsn, ETag) of
{ok, cached} ->
?DEBUG("Version cached at ~ts is up to date, reusing it", [CachePath]),
Expand Down Expand Up @@ -280,7 +280,7 @@ maybe_old_registry_checksum(Hash) -> list_to_integer(binary_to_list(Hash), 16).
Binary :: binary(),
Res :: ok | {error,_}.
serve_from_download(TmpDir, CachePath, Package, Binary) ->
?DEBUG("Writing ~p to cache at ~ts", [Package, CachePath]),
?DEBUG("Writing ~p to cache at ~ts", [catch anon(Package), CachePath]),
file:write_file(CachePath, Binary),
serve_from_memory(TmpDir, Binary, Package).

Expand All @@ -293,3 +293,7 @@ maybe_store_etag_in_cache(false = _UpdateETag, _Path, _ETag) ->
ok;
maybe_store_etag_in_cache(true = _UpdateETag, Path, ETag) ->
store_etag_in_cache(Path, ETag).

anon({pkg, PkgName, PkgVsn, OldHash, Hash, RepoConfig}) ->
{pkg, PkgName, PkgVsn, OldHash, Hash,
rebar_hex_repos:anon_repo_config(RepoConfig)}.