refactor(release): bind discarded results of side-effecting release tasks

This commit is contained in:
Moritz 2026-06-02 11:33:14 +02:00
parent fd8e6ac178
commit 5352a635c6

View file

@ -22,7 +22,7 @@ defmodule Mv.Release do
require Logger require Logger
def migrate do def migrate do
load_app() _ = load_app()
for repo <- repos() do for repo <- repos() do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true)) {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
@ -75,14 +75,14 @@ defmodule Mv.Release do
dev_path = Path.join(priv, "repo/seeds_dev.exs") dev_path = Path.join(priv, "repo/seeds_dev.exs")
prev = Code.compiler_options() prev = Code.compiler_options()
Code.compiler_options(ignore_module_conflict: true) _ = Code.compiler_options(ignore_module_conflict: true)
try do try do
Code.eval_file(bootstrap_path) _ = Code.eval_file(bootstrap_path)
IO.puts("✅ Bootstrap seeds completed.") IO.puts("✅ Bootstrap seeds completed.")
if System.get_env("RUN_DEV_SEEDS") == "true" do if System.get_env("RUN_DEV_SEEDS") == "true" do
Code.eval_file(dev_path) _ = Code.eval_file(dev_path)
IO.puts("✅ Dev seeds completed.") IO.puts("✅ Dev seeds completed.")
end end
after after
@ -92,7 +92,7 @@ defmodule Mv.Release do
end end
def rollback(repo, version) do def rollback(repo, version) do
load_app() _ = load_app()
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version)) {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
end end
@ -139,10 +139,11 @@ defmodule Mv.Release do
{:ok, %Role{} = admin_role} -> {:ok, %Role{} = admin_role} ->
case get_user_by_email(email) do case get_user_by_email(email) do
{:ok, %User{} = user} -> {:ok, %User{} = user} ->
user _ =
|> Ash.Changeset.for_update(:update, %{}) user
|> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove) |> Ash.Changeset.for_update(:update, %{})
|> Ash.update!(authorize?: false) |> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove)
|> Ash.update!(authorize?: false)
:ok :ok
@ -189,15 +190,16 @@ defmodule Mv.Release do
defp create_admin_user(email, password, admin_role) do defp create_admin_user(email, password, admin_role) do
case Accounts.create_user(%{email: email}, authorize?: false) do case Accounts.create_user(%{email: email}, authorize?: false) do
{:ok, user} -> {:ok, user} ->
user _ =
|> Ash.Changeset.for_update(:admin_set_password, %{password: password}) user
|> Ash.update!(authorize?: false) |> Ash.Changeset.for_update(:admin_set_password, %{password: password})
|> then(fn u ->
u
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove)
|> Ash.update!(authorize?: false) |> Ash.update!(authorize?: false)
end) |> then(fn u ->
u
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove)
|> Ash.update!(authorize?: false)
end)
:ok :ok
@ -207,15 +209,16 @@ defmodule Mv.Release do
end end
defp update_admin_user(user, password, admin_role) do defp update_admin_user(user, password, admin_role) do
user _ =
|> Ash.Changeset.for_update(:admin_set_password, %{password: password}) user
|> Ash.update!(authorize?: false) |> Ash.Changeset.for_update(:admin_set_password, %{password: password})
|> then(fn u ->
u
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove)
|> Ash.update!(authorize?: false) |> Ash.update!(authorize?: false)
end) |> then(fn u ->
u
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove)
|> Ash.update!(authorize?: false)
end)
:ok :ok
end end