Пользовательская задача смешивания не запускает компиляцию при запуске - PullRequest
1 голос
/ 07 июня 2019

У меня есть задание на микс. однако он отлично работает, но не вызывает компиляцию, когда он вызывается, как другие задачи микширования. Я могу запустить компиляцию вручную, но это очень расстраивает, так как я почти всегда забываю сделать это, и мне нужно выполнить задачу один или два раза, прежде чем я пойму, почему я не вижу своих изменений.

Вот "мое" задание, чего мне не хватает?

defmodule Mix.Tasks.Return do
  @moduledoc """
  Task for processing returns
  """
  use Mix.Task
  require Logger
  alias Returns

  @shortdoc "Check for returns and process"

  def run(args) do
    args
    |> get_return_file_name()
    |> Returns.process()
    |> Kernel.inspect()
    |> Logger.info()
  end

  defp get_file_name(nil), do: get_file_name([])
  defp get_file_name([]), do: get_default_file_name()
  defp get_file_name([filename]), do: filename

  defp get_default_file_name() do
    DateTime.utc_now() 
    |> DateTime.to_string()   
    |> String.split(" ")  
    |> List.first()
    |> (fn date -> "default-#{date}.txt" end).()
  end
end

1 Ответ

3 голосов
/ 07 июня 2019

Вы должны явно указать в своей задаче, что вы хотите скомпилировать.

@impl true
def run(args) do
  ...
  Mix.Task.run("compile")
  ...

Пара примеров: app.tree, app.start и phx.routes.

Это потому, что не все задачи микширования требуют этапа компиляции. Например, mix deps.get не компилирует проект перед извлечением зависимостей, иначе у вас может быть много ошибок / предупреждений об отсутствующих модулях. Все зависимости должны вызываться вручную, не существует неявного механизма для вызова цепочек задач в соответствии с некоторыми «внутренними правилами», встроенными в mix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...