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