Mix.SCM поведение
Этот модуль предоставляет вспомогательные функции и определяет поведение, необходимое для любого менеджера исходного кода (SCM), используемого Mix.
Краткое описание
Типы
Функции
- append(mod)
Добавляет указанный SCM-модуль в список доступных SCM.
- available()
Возвращает все доступные SCM. Каждый SCM будет проверен в порядке очереди, пока не будет найден совпадающий.
- prepend(mod)
Добавляет указанный SCM-модуль в начало списка доступных SCM.
Обратные вызовы
- accepts_options(app, opts)
Функция поведения, принимающая список ключевых слов
optsи должна возвращать обновлённый список в случае, если SCM использует доступные опции. Например, когда разработчик указывает зависимость:- checked_out?(opts)
Функция поведения, возвращающая булево значение, если зависимость доступна.
- checkout(opts)
Функция поведения, выполняющая проверку зависимостей.
- equal?(opts1, opts2)
Принимает две опции и должна вернуть
true, если они ссылаются на один и тот же репозиторий. Опции гарантированно принадлежат одному и тому же SCM.- fetchable?()
Возвращает булево значение, если зависимость может быть загружена или должна быть доступна предварительно в файловой системе.
- format(opts)
Возвращает строку, представляющую SCM. Используется при выводе зависимости, а не для проверки, поэтому количество информации должно быть лаконичным и легко различимым.
- format_lock(opts)
Возвращает строку, представляющую SCM. Используется при выводе зависимости, а не для проверки, поэтому количество информации должно быть лаконичным и легко различимым.
- lock_status(opts)
Эта функция поведения проверяет состояние блокировки. В частности, она проверяет, совпадает ли ревизия, хранящаяся в блокировке, с текущим репозиторием.
- managers(opts)
Возвращает доступных менеджеров для зависимости. Это может быть использовано, если SCM обладает дополнительными знаниями о зависимости, в противном случае должно возвращать пустой список.
- update(opts)
Эта функция поведения обновляет зависимости. Она может вызываться
deps.getилиdeps.update.
Типы
opts()
Спецификации
opts() :: keyword()
t()
Спецификации
t() :: module()
Модуль, реализующий поведение Mix.SCM.
Функции
append(mod)
Добавляет указанный SCM-модуль в список доступных SCM.
available()
Возвращает все доступные SCM. Каждый SCM будет проверен в порядке очереди, пока не будет найден совпадающий.
prepend(mod)
Добавляет указанный SCM-модуль в начало списка доступных SCM.
Обратные вызовы
accepts_options(app, opts)
Спецификации
accepts_options(app :: atom(), opts()) :: opts() | nil
Эта функция поведения получает список ключевых слов opts и должна возвращать обновлённый список в случае, если SCM использует доступные опции. Например, когда разработчик указывает зависимость:
{:foo, "0.1.0", github: "foo/bar"}
Каждый зарегистрированный SCM получит запрос, потребляет ли он эту зависимость, получив [github: "foo/bar"] в качестве аргумента. Поскольку эта опция имеет смысл для Git SCM, он вернёт обновлённый список опций, в то время как другие SCM просто вернут nil.
checked_out?(opts)
Спецификации
checked_out?(opts()) :: boolean()
Эта функция поведения возвращает булево значение, если зависимость доступна.
checkout(opts)
Спецификации
checkout(opts()) :: any()
Эта функция поведения проверяет зависимости.
Если зависимость заблокирована, блокировка передаётся в opts, и репозиторий должен быть проверен на блокировке. В противном случае блокировка не предоставляется, и репозиторий может быть проверен на последней версии.
Функция должна вернуть текущую блокировку.
equal?(opts1, opts2)
Спецификации
equal?(opts1 :: opts(), opts2 :: opts()) :: boolean()
Принимает две опции и должна вернуть true , если они ссылаются на один и тот же репозиторий. Опции гарантированно принадлежат одному и тому же SCM.
fetchable?()
Спецификации
fetchable?() :: boolean()
Возвращает булево значение, если зависимость может быть загружена или должна быть доступна предварительно в файловой системе.
Локальные зависимости (т.е. не загружаемые) автоматически перекомпилируются каждый раз при компиляции родительского проекта.
format(opts)
Спецификации
format(opts()) :: String.t()
Возвращает строку, представляющую SCM. Используется при выводе зависимости, а не для проверки, поэтому количество информации должно быть лаконичным и легко различимым.
format_lock(opts)
Спецификации
format_lock(opts()) :: String.t() | nil
Возвращает строку, представляющую SCM. Используется при выводе зависимости, а не для проверки, поэтому количество информации должно быть лаконичным и легко различимым.
Если возвращается nil, это означает, что информация о блокировке недоступна.
lock_status(opts)
Спецификации
lock_status(opts()) :: :mismatch | :outdated | :ok
Эта функция поведения проверяет состояние блокировки. В частности, она проверяет, совпадает ли ревизия, хранящаяся в блокировке, с текущим репозиторием.
Может возвращать:
:mismatch- если блокировка не совпадает, и нам нужно просто перейти к последней блокировке:outdated- опции репозитория устарели в блокировке, и нам нужно запустить полное обновление:ok- всё в порядке
Блокировка передаётся через opts[:lock], но она может не всегда быть доступна. В таких случаях, если SCM требует блокировки, он должен вернуть :mismatch, в противном случае просто :ok.
Обратите внимание, что блокировка может также принадлежать другому SCM, и поэтому требуется проверка структуры. Несоответствие структуры всегда должно возвращать :outdated.
managers(opts)
Спецификации
managers(opts()) :: [atom()]
Возвращает доступных менеджеров для зависимости. Это может быть использовано, если SCM обладает дополнительными знаниями о зависимости, в противном случае должно возвращать пустой список.
update(opts)
Спецификации
update(opts()) :: any()
Эта функция поведения обновляет зависимости. Она может вызываться deps.get или deps.update.
В первом случае блокировка передаётся в opts, и репозиторий должен быть обновлён до блокировки. Во втором случае блокировка не предоставляется, и репозиторий может быть обновлён свободно.
Функция должна вернуть текущую блокировку.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/mix/1.11.2/Mix.SCM.html