summaryrefslogtreecommitdiff
path: root/src/rebar_packages.erl
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2015-08-23 16:44:58 +1200
committerFred Hebert <mononcqc@ferd.ca>2015-08-23 16:44:58 +1200
commit691662c794401b1061164710cd35c9a1000e80a1 (patch)
tree9efe522403b2fb9fd284e6e6af488a4a6b7fa846 /src/rebar_packages.erl
parent070e9d329bcbae9a7912b7cd84af0a97bc1c3c19 (diff)
parent391959dae8540a96c1945082f3b62fbe46914800 (diff)
Merge pull request #740 from tsloughter/hex_output
use 'default' for default hex repo path in cache and include in info messages
Diffstat (limited to 'src/rebar_packages.erl')
-rw-r--r--src/rebar_packages.erl27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/rebar_packages.erl b/src/rebar_packages.erl
index f6993c5..3352323 100644
--- a/src/rebar_packages.erl
+++ b/src/rebar_packages.erl
@@ -4,6 +4,7 @@
,close_packages/0
,load_and_verify_version/1
,deps/3
+ ,registry_dir/1
,package_dir/1
,registry_checksum/2
,find_highest_matching/4
@@ -34,7 +35,7 @@ close_packages() ->
catch ets:delete(?PACKAGE_TABLE).
load_and_verify_version(State) ->
- RegistryDir = package_dir(State),
+ RegistryDir = registry_dir(State),
case ets:file2tab(filename:join(RegistryDir, ?INDEX_FILE)) of
{ok, _} ->
case ets:lookup_element(?PACKAGE_TABLE, package_index_version, 2) of
@@ -57,13 +58,25 @@ deps(Name, Vsn, State) ->
throw(?PRV_ERROR({missing_package, ec_cnv:to_binary(Name), ec_cnv:to_binary(Vsn)}))
end.
-package_dir(State) ->
+registry_dir(State) ->
CacheDir = rebar_dir:global_cache_dir(State),
- CDN = rebar_state:get(State, rebar_packages_cdn, ?DEFAULT_CDN),
- {ok, {_, _, Host, _, Path, _}} = http_uri:parse(CDN),
- CDNHostPath = lists:reverse(string:tokens(Host, ".")),
- CDNPath = tl(filename:split(Path)),
- PackageDir = filename:join([CacheDir, "hex"] ++ CDNHostPath ++ CDNPath ++ ["packages"]),
+ case rebar_state:get(State, rebar_packages_cdn, ?DEFAULT_CDN) of
+ ?DEFAULT_CDN ->
+ RegistryDir = filename:join([CacheDir, "hex", "default"]),
+ ok = filelib:ensure_dir(filename:join(RegistryDir, "placeholder")),
+ RegistryDir;
+ CDN ->
+ {ok, {_, _, Host, _, Path, _}} = http_uri:parse(CDN),
+ CDNHostPath = lists:reverse(string:tokens(Host, ".")),
+ CDNPath = tl(filename:split(Path)),
+ RegistryDir = filename:join([CacheDir, "hex"] ++ CDNHostPath ++ CDNPath),
+ ok = filelib:ensure_dir(filename:join(RegistryDir, "placeholder")),
+ RegistryDir
+ end.
+
+package_dir(State) ->
+ RegistryDir = registry_dir(State),
+ PackageDir = filename:join([RegistryDir, "packages"]),
ok = filelib:ensure_dir(filename:join(PackageDir, "placeholder")),
PackageDir.