       $ MIX_ENV=prod mix serum.build
   """
 
+  import Serum.IOProxy, only: [put_err: 2]
   alias Serum.Result
-  import Serum.IOProxy, only: [put_err: 2]
 
   defstruct module: nil,
             name: "",

    name = module.name()
    version = Version.parse!(module.version())

    unless Version.match?(@serum_version, module.serum()) do
      msg =
        "The theme \"#{name}\" is not compatible with " <>
          "the current version of Serum(#{@serum_version}). " <>
          "This theme may not work as intended."

      put_err(:warn, msg)
    end

    result = %__MODULE__{
      module: module,

      msg = "#{ex_name} while loading theme (module: #{mod_name}): #{ex_msg}"

      {:error, msg}
  end

  @spec validate_serum_version(binary(), Version.requirement()) :: :ok
  defp validate_serum_version(name, requirement) do
    if Version.match?(@serum_version, requirement) do
      :ok
    else
      msg =
        "The theme \"#{name}\" is not compatible with " <>
          "the current version of Serum(#{@serum_version}). " <>
          "This theme may not work as intended."

      put_err(:warn, msg)
    end
  end

  @doc false
