Skip to content

Commit 6188bab

Browse files
committed
Add some docs
1 parent 944d5d1 commit 6188bab

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed

lib/hex/mix.ex

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
defmodule Hex.Mix do
2+
@moduledoc """
3+
Utility functions around Mix dependencies.
4+
"""
5+
6+
@doc """
7+
Returns `true` if the version and requirement match.
8+
9+
See `Version.match?/2`.
10+
"""
11+
@spec version_match?(String.t, String.t) :: boolean
212
def version_match?(_version, nil), do: true
313
def version_match?(version, req), do: Version.match?(version, req)
414

15+
@doc """
16+
Converts a list of dependencies to a requests to the resolver. Skips
17+
dependencies overriding with another SCM (but include dependencies
18+
overriding with Hex) and dependencies that are not Hex packages.
19+
"""
20+
@spec deps_to_requests([Mix.Dep.t]) :: [{String.t, String.t}]
521
def deps_to_requests(deps) do
622
overridden =
723
for %Mix.Dep{app: app, scm: scm, opts: opts} <- deps,
@@ -13,25 +29,43 @@ defmodule Hex.Mix do
1329
do: {"#{app}", req}
1430
end
1531

32+
@doc """
33+
Returns the names of all given overriding dependencies.
34+
"""
35+
@spec deps_to_overridden([Mix.Dep.t]) :: [String.t]
1636
def deps_to_overridden(deps) do
1737
for %Mix.Dep{app: app, top_level: true, opts: opts} <- deps,
1838
opts[:override],
1939
do: "#{app}"
2040
end
2141

42+
@doc """
43+
Normalises a dependency definition to its 3-tuple form.
44+
"""
45+
@spec dep(tuple) :: {String.t, String.t, Keyword.t}
2246
def dep({app, opts}) when is_list(opts),
2347
do: {app, nil, opts}
2448
def dep({app, req}) when is_binary(req),
2549
do: {app, req, []}
2650
def dep({app, req, opts}),
2751
do: {app, req, opts}
2852

53+
@doc """
54+
Takes all Hex packages from the lock and returns them
55+
as `{name, version}` tuples.
56+
"""
57+
@spec from_lock(%{}) :: %{}
2958
def from_lock(lock) do
3059
for {name, {:package, version}} <- lock,
3160
into: %{},
3261
do: {"#{name}", version}
3362
end
3463

64+
@doc """
65+
Takes a map of `{name, version}` and returns them as a
66+
lock of Hex packages.
67+
"""
68+
@spec to_lock(%{}) :: %{}
3569
def to_lock(result) do
3670
for {name, version} <- result,
3771
into: %{},

lib/hex/parallel.ex

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
defmodule Hex.Parallel do
2+
@moduledoc """
3+
Run a number of jobs (with an upper bound) in parallel and
4+
await their finish.
5+
"""
6+
27
use GenServer
38

49
def start_link(name, opts) do
510
GenServer.start_link(__MODULE__, new_state(opts), name: name)
611
end
712

13+
@doc """
14+
"""
15+
@spec run(GenServer.server, any, (() -> any)) :: :ok
816
def run(name, id, fun) do
917
GenServer.cast(name, {:run, id, fun})
1018
end
1119

20+
@doc """
21+
"""
22+
@spec await(GenServer.server, timeout) :: any
1223
def await(name, id, timeout \\ :infinity) do
1324
GenServer.call(name, {:await, id}, timeout)
1425
end

lib/hex/remote_converger.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ defmodule Hex.RemoteConverger do
143143
# Remove dependencies from the lock if:
144144
# 1. They are defined as git or path in mix.exs
145145
# 2. If the requirement in mix.exs does not match the locked version
146-
# 3. If it's a child of another Hex package
146+
# 3. If it's a child of another Hex package being updated
147147

148148
unlock =
149149
Enum.flat_map(deps, fn

lib/hex/resolver.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ defmodule Hex.Resolver do
2525
end
2626

2727
defp locked({name, version}, {activated, pending, optional}, info) do
28-
# Make sure to add children of locked dependencies, they may have been
29-
# overridden before and not been included in the lock
28+
# Make sure to add children of locked dependencies, they may be missing
29+
# from the lock for multiple reasons
3030

3131
{new_pending, new_optional} = get_deps(name, version, info)
3232
pending = pending ++ new_pending

0 commit comments

Comments
 (0)