Spec-Zone.ru › Elixir 1.11

Mix.SCM поведение

Этот модуль предоставляет вспомогательные функции и определяет поведение, необходимое для любого менеджера исходного кода (SCM), используемого Mix.

Краткое описание

Типы

opts()
t()

Модуль, реализующий поведение Mix.SCM.

Функции

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API