Current section

Files

Jump to
igniter lib igniter upgrades.ex
Raw

lib/igniter/upgrades.ex

defmodule Igniter.Upgrades do
@moduledoc """
Utilities for running upgrades.
"""
@doc "Run all upgrades from `from` to `to`."
def run(igniter, from, to, upgrade_map, opts) do
upgrade_map
|> Enum.filter(fn {version, _} ->
Version.match?(version, "> #{from} and <= #{to}")
end)
|> Enum.sort_by(&elem(&1, 0), &Version.compare/2)
|> Enum.flat_map(&elem(&1, 1))
|> Enum.reduce(igniter, fn upgrade, igniter ->
upgrade.(igniter, opts)
end)
end
end