mirror of
https://github.com/ash-project/igniter.git
synced 2024-09-19 21:12:54 +12:00
fix: ensure no timeout on task async streams
This commit is contained in:
parent
6a86e2d5f6
commit
5bf53c8c07
2 changed files with 45 additions and 36 deletions
|
@ -108,9 +108,12 @@ defmodule Igniter do
|
||||||
end)
|
end)
|
||||||
|
|
||||||
paths
|
paths
|
||||||
|> Task.async_stream(fn path ->
|
|> Task.async_stream(
|
||||||
read_ex_source!(path)
|
fn path ->
|
||||||
end)
|
read_ex_source!(path)
|
||||||
|
end,
|
||||||
|
timeout: :infinity
|
||||||
|
)
|
||||||
|> Enum.reduce(igniter, fn {:ok, source}, igniter ->
|
|> Enum.reduce(igniter, fn {:ok, source}, igniter ->
|
||||||
%{igniter | rewrite: Rewrite.put!(igniter.rewrite, source)}
|
%{igniter | rewrite: Rewrite.put!(igniter.rewrite, source)}
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -130,12 +130,15 @@ defmodule Igniter.Code.Module do
|
||||||
|
|
||||||
igniter
|
igniter
|
||||||
|> Map.get(:rewrite)
|
|> Map.get(:rewrite)
|
||||||
|> Task.async_stream(fn source ->
|
|> Task.async_stream(
|
||||||
{source
|
fn source ->
|
||||||
|> Rewrite.Source.get(:quoted)
|
{source
|
||||||
|> Zipper.zip()
|
|> Rewrite.Source.get(:quoted)
|
||||||
|> move_to_defmodule(module_name), source}
|
|> Zipper.zip()
|
||||||
end)
|
|> move_to_defmodule(module_name), source}
|
||||||
|
end,
|
||||||
|
timeout: :infinity
|
||||||
|
)
|
||||||
|> Enum.find_value({:error, igniter}, fn
|
|> Enum.find_value({:error, igniter}, fn
|
||||||
{:ok, {{:ok, zipper}, source}} ->
|
{:ok, {{:ok, zipper}, source}} ->
|
||||||
{:ok, {igniter, source, zipper}}
|
{:ok, {igniter, source, zipper}}
|
||||||
|
@ -155,36 +158,39 @@ defmodule Igniter.Code.Module do
|
||||||
matching_modules =
|
matching_modules =
|
||||||
igniter
|
igniter
|
||||||
|> Map.get(:rewrite)
|
|> Map.get(:rewrite)
|
||||||
|> Task.async_stream(fn source ->
|
|> Task.async_stream(
|
||||||
source
|
fn source ->
|
||||||
|> Rewrite.Source.get(:quoted)
|
source
|
||||||
|> Zipper.zip()
|
|> Rewrite.Source.get(:quoted)
|
||||||
|> Zipper.traverse([], fn zipper, acc ->
|
|> Zipper.zip()
|
||||||
case zipper.node do
|
|> Zipper.traverse([], fn zipper, acc ->
|
||||||
{:defmodule, _, [_, _]} ->
|
case zipper.node do
|
||||||
{:ok, mod_zipper} = Igniter.Code.Function.move_to_nth_argument(zipper, 0)
|
{:defmodule, _, [_, _]} ->
|
||||||
|
{:ok, mod_zipper} = Igniter.Code.Function.move_to_nth_argument(zipper, 0)
|
||||||
|
|
||||||
module_name =
|
module_name =
|
||||||
mod_zipper
|
mod_zipper
|
||||||
|> Igniter.Code.Common.expand_alias()
|
|> Igniter.Code.Common.expand_alias()
|
||||||
|> Zipper.node()
|
|> Zipper.node()
|
||||||
|> Igniter.Code.Module.to_module_name()
|
|> Igniter.Code.Module.to_module_name()
|
||||||
|
|
||||||
with module_name when not is_nil(module_name) <- module_name,
|
with module_name when not is_nil(module_name) <- module_name,
|
||||||
{:ok, do_zipper} <- Igniter.Code.Common.move_to_do_block(zipper),
|
{:ok, do_zipper} <- Igniter.Code.Common.move_to_do_block(zipper),
|
||||||
true <- predicate.(module_name, do_zipper) do
|
true <- predicate.(module_name, do_zipper) do
|
||||||
{zipper, [module_name | acc]}
|
{zipper, [module_name | acc]}
|
||||||
else
|
else
|
||||||
_ ->
|
_ ->
|
||||||
{zipper, acc}
|
{zipper, acc}
|
||||||
end
|
end
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
{zipper, acc}
|
{zipper, acc}
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|> elem(1)
|
|> elem(1)
|
||||||
end)
|
end,
|
||||||
|
timeout: :infinity
|
||||||
|
)
|
||||||
|> Enum.flat_map(fn {:ok, v} ->
|
|> Enum.flat_map(fn {:ok, v} ->
|
||||||
v
|
v
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in a new issue