fix: only import modules we can build docs for

This commit is contained in:
Zach Daniel 2023-01-18 09:13:12 -05:00
parent 053d5746cb
commit 65d4c4f8d1

View file

@ -340,44 +340,48 @@ defmodule Utils do
def build_function(_, _, _, _, _, _), do: []
def build_module(module, category, order) do
{:docs_v1, _, :elixir, _, docs, _, defs} = Code.fetch_docs(module)
case Code.fetch_docs(module) do
{:docs_v1, _, :elixir, _, docs, _, defs} ->
module_doc =
case docs do
%{"en" => en} ->
en
module_doc =
case docs do
%{"en" => en} ->
en
_ ->
""
end
_ ->
""
end
module_info =
try do
module.module_info(:compile)
rescue
_ ->
nil
end
module_info =
try do
module.module_info(:compile)
rescue
_ ->
nil
end
file = file(module_info[:source])
file = file(module_info[:source])
types = Types.for_module(module)
callbacks = Types.callbacks_for_module(module)
typespecs = Types.specs_for_module(module)
types = Types.for_module(module)
callbacks = Types.callbacks_for_module(module)
typespecs = Types.specs_for_module(module)
{:ok, %{
name: inspect(module),
doc: module_doc,
file: file,
order: order,
category: category,
functions:
defs
|> Enum.with_index()
|> Enum.flat_map(fn {definition, i} ->
build_function(definition, file, types, callbacks, typespecs, i)
end)
}}
_ ->
:error
end
%{
name: inspect(module),
doc: module_doc,
file: file,
order: order,
category: category,
functions:
defs
|> Enum.with_index()
|> Enum.flat_map(fn {definition, i} ->
build_function(definition, file, types, callbacks, typespecs, i)
end)
}
end
def build_mix_task(mix_task, category, order) do
@ -632,9 +636,14 @@ acc =
modules
|> Enum.with_index()
|> Enum.reduce(acc, fn {module, order}, acc ->
Map.update!(acc, :modules, fn modules ->
[Utils.build_module(module, category, order) | modules]
end)
case Utils.build_module(module, category, order) do
{:ok, built} ->
Map.update!(acc, :modules, fn modules ->
[built | modules]
end)
_ ->
acc
end
end)
end)