From 392533b104a5b991cb0080e145b2966781a57760 Mon Sep 17 00:00:00 2001 From: Matthew Lineen Date: Wed, 26 Apr 2023 13:16:02 -0500 Subject: [PATCH] refactor nested stream calls --- lib/bob/job/docker_checker.ex | 47 ++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/bob/job/docker_checker.ex b/lib/bob/job/docker_checker.ex index 8475234..5645479 100644 --- a/lib/bob/job/docker_checker.ex +++ b/lib/bob/job/docker_checker.ex @@ -52,29 +52,30 @@ defmodule Bob.Job.DockerChecker do def expected_erlang_tags() do refs = erlang_refs() - Stream.flat_map(@builds, fn {os, os_versions} -> - Stream.flat_map(refs, fn ref -> - if build_erlang_ref?(os, ref) do - Stream.flat_map(os_versions, fn os_version -> - if build_erlang_ref?(os, os_version, ref) do - Stream.flat_map(@archs, fn arch -> - if build_erlang_ref?(arch, os, os_version, ref) do - "OTP-" <> erlang = ref - key = {erlang, os, os_diff(os, os_version), arch} - value = {erlang, os, os_version, arch} - [{key, value}] - else - [] - end - end) - else - [] - end - end) - else - [] - end - end) + @builds + |> Stream.flat_map(fn {os, os_versions} -> + Stream.map(os_versions, fn os_version -> {os, os_version} end) + end) + |> Stream.flat_map(fn {os, os_version} -> + Stream.map(refs, fn ref -> {os, os_version, ref} end) + end) + |> Stream.filter(fn {os, _os_version, ref} -> + build_erlang_ref?(os, ref) + end) + |> Stream.filter(fn {os, os_version, ref} -> + build_erlang_ref?(os, os_version, ref) + end) + |> Stream.flat_map(fn {os, os_version, ref} -> + Stream.map(@archs, fn arch -> {os, os_version, ref, arch} end) + end) + |> Stream.filter(fn {os, os_version, ref, arch} -> + build_erlang_ref?(arch, os, os_version, ref) + end) + |> Stream.map(fn {os, os_version, ref, arch} -> + "OTP-" <> erlang = ref + key = {erlang, os, os_diff(os, os_version), arch} + value = {erlang, os, os_version, arch} + {key, value} end) end