Программно определить версию зависимости в Elixir Mix Task - PullRequest
0 голосов
/ 23 апреля 2020

Есть ли способ программно текущей версии установленной зависимости в пользовательской задаче Mix?

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

Мой шестнадцатеричный пакет зависит от Phoenix, но также поддерживает Phoenix 1.3 , 1.4 и недавно выпущенная версия 1.5.

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

Есть ли "приличный" способ сделать это, или я должен сам разобрать файл mix.lock внутри микс-задачи? Это кажется довольно хрупким, и я не думаю, что мой код пакета должен искать и анализировать файл блокировки более крупного проекта, в который он включен.

1 Ответ

0 голосов
/ 23 апреля 2020

Я не проверял это для ваших точных требований, но вы могли бы сделать что-то вроде этого:

app_version =
  Application.spec(:phoenix)[:vsn]
  |> List.to_string()

Следующий фрагмент также может быть полезным: если у вас есть модуль, но вы не Не знаю имя приложения атома, которому оно принадлежит:

app_name = Application.get_application(SomeApp)

См. Приложение документов для получения дополнительной информации.

Надеюсь, что помогает.

...