查看源代码 Mix.SCM 行为 (Mix v1.16.2)

此模块提供辅助函数并定义 Mix 使用的任何源代码管理器 (SCM) 所需的行为。

摘要

类型

t()

实现 Mix.SCM 行为的模块。

回调

此行为函数接收一个 opts 的关键字列表,如果 SCM 使用了可用选项,则应返回一个更新的列表。例如,当开发人员指定一个依赖项时

此行为函数返回一个布尔值,表示依赖项是否可用。

此行为函数签出依赖项。

接收两个选项,如果它们引用同一个存储库,则必须返回 true。保证选项属于同一个 SCM。

如果依赖项可以获取或它应该之前存在于文件系统中,则返回一个布尔值。

返回一个表示 SCM 的字符串。这在打印依赖项时使用,而不是用于检查,因此信息量应简洁易懂。

返回一个表示 SCM 的字符串。这在打印依赖项时使用,而不是用于检查,因此信息量应简洁易懂。

此行为函数检查锁的状态。特别是,它检查锁中存储的修订版是否与当前所在的存储库相同。

返回依赖项的可用管理器。如果 SCM 对依赖项有额外了解,则可以使用此功能,否则应返回一个空列表。

此行为函数更新依赖项。它可以由 deps.getdeps.update 调用。

函数

将给定的 SCM 模块追加到可用 SCM 列表中。

返回所有可用的 SCM。每个 SCM 都按顺序尝试,直到找到匹配的 SCM 为止。

从可用 SCM 列表中删除给定的 SCM。

将给定的 SCM 模块预添加到可用 SCM 列表中。

类型

@type opts() :: keyword()
@type t() :: module()

实现 Mix.SCM 行为的模块。

回调

链接到此回调

accepts_options(app, opts)

查看源代码
@callback accepts_options(app :: atom(), opts()) :: opts() | nil

此行为函数接收一个 opts 的关键字列表,如果 SCM 使用了可用选项,则应返回一个更新的列表。例如,当开发人员指定一个依赖项时

{:foo, "0.1.0", github: "foo/bar"}

每个注册的 SCM 都将被询问他们是否使用此依赖项,接收 [github: "foo/bar"] 作为参数。由于此选项对 Git SCM 很有意义,它将返回一个更新的选项列表,而其他 SCM 只会返回 nil

@callback checked_out?(opts()) :: boolean()

此行为函数返回一个布尔值,表示依赖项是否可用。

@callback checkout(opts()) :: any()

此行为函数签出依赖项。

如果依赖项被锁定,则在 opts 中接收一个锁,并且必须在锁处签出存储库。否则,不会给出锁,并且可以将存储库签出到最新版本。

它必须返回当前锁。

@callback equal?(opts1 :: opts(), opts2 :: opts()) :: boolean()

接收两个选项,如果它们引用同一个存储库,则必须返回 true。保证选项属于同一个 SCM。

@callback fetchable?() :: boolean()

如果依赖项可以获取或它应该之前存在于文件系统中,则返回一个布尔值。

本地依赖项(即不可获取的依赖项)在每次父项目编译时都会自动重新编译。

@callback format(opts()) :: String.t()

返回一个表示 SCM 的字符串。这在打印依赖项时使用,而不是用于检查,因此信息量应简洁易懂。

@callback format_lock(opts()) :: String.t() | nil

返回一个表示 SCM 的字符串。这在打印依赖项时使用,而不是用于检查,因此信息量应简洁易懂。

如果返回 nil,则意味着没有锁信息可用。

@callback lock_status(opts()) :: :mismatch | :outdated | :ok

此行为函数检查锁的状态。特别是,它检查锁中存储的修订版是否与当前所在的存储库相同。

它可能返回

  • :mismatch - 如果锁不匹配,我们需要简单地移动到最新的锁

  • :outdated - 存储库选项在锁中已过时,我们需要触发完全更新

  • :ok - 一切正常

锁通过 opts[:lock] 发送,但它可能并不总是可用。在这种情况下,如果 SCM 需要一个锁,它必须返回 :mismatch,否则简单地返回 :ok

请注意,锁也可能属于另一个 SCM,因此需要结构检查。结构不匹配应该始终返回 :outdated

@callback managers(opts()) :: [atom()]

返回依赖项的可用管理器。如果 SCM 对依赖项有额外了解,则可以使用此功能,否则应返回一个空列表。

@callback update(opts()) :: any()

此行为函数更新依赖项。它可以由 deps.getdeps.update 调用。

在第一种情况下,在 opts 中接收一个锁,并且必须将存储库更新到该锁。在第二种情况下,不会给出锁,并且可以自由更新存储库。

它必须返回当前锁。

函数

将给定的 SCM 模块追加到可用 SCM 列表中。

返回所有可用的 SCM。每个 SCM 都按顺序尝试,直到找到匹配的 SCM 为止。

链接到此函数

delete(mod)

查看源代码 (自 1.16.2 起)

从可用 SCM 列表中删除给定的 SCM。

将给定的 SCM 模块预添加到可用 SCM 列表中。