16个版本 (10个稳定版)
1.6.3 | 2024年5月1日 |
---|---|
1.3.0 | 2023年11月1日 |
1.1.0 | 2022年9月28日 |
1.0.5 | 2022年5月25日 |
0.3.0 | 2017年2月22日 |
34 在 游戏
每月265次下载
用于 irc-bot
145KB
3K SLoC
Foreman
Foreman是一个工具链管理器,帮助Roblox开发者管理他们的工具安装,如Rojo、Remodel、Tarmac、DarkLua、StyLua和Selene。
它在数百名工程师的生产环境中使用,但欢迎更多反馈!
安装
GitHub发行版
您可以从发行版页面下载预构建的Windows、macOS和Linux版本的Foreman。
GitHub Actions
您可以使用官方的setup-foreman操作来将Foreman作为GitHub Actions工作流程的一部分进行安装。
升级
首先,将当前的Foreman版本替换为GitHub发行版中的最新版本。如果您不记得可执行文件放在哪里,可以在Windows上运行where foreman
或在macOS和Linux上运行which foreman
来帮助您找到它。
另一个步骤是定位由 foreman 创建的 bin
目录并删除那里的文件。这就像打开位于用户目录下的 .foreman/bin
(在 Windows 上为 %homepath%
,在 macOS 和 Linux 上为 $HOME
)的路径。
从源代码
如果您已安装 Rust 1.53.0 或更高版本,您也可以通过 crates.io 安装它来编译 Foreman。
cargo install foreman
要升级,请重新运行 cargo install foreman
并按照上面章节所述清理 bin
目录。
设置
大多数用户可能需要做一些额外的设置才能开始通过 foreman 使用工具。
路径配置
首次运行时(尝试 foreman list
),Foreman 将在您的用户文件夹中创建一个 .foreman
目录(通常在 Unix 系统上为 $HOME/.foreman
,在 Windows 上为 %USERPROFILE%/.foreman
)。
建议您将 $HOME/.foreman/bin
添加到您的 PATH
中,以便在您的系统中访问 Foreman 为您安装的工具。如果您通过其他机制安装了工具(例如,您可能已经通过 cargo
直接安装了 rojo
),请确保 $HOME/.foreman/bin
在其他安装目录之前(例如,在 .cargo/bin
之前)位于您的 PATH 中,以确保它具有优先级。
如果您使用 bash 或 zsh,您可以将此行添加到您的 ~/.bash_profile
或您的 ~/.zprofile
文件中(分别)
export PATH=$HOME/.foreman/bin:$PATH
身份验证
要从私有 GitHub 存储库安装工具,Foreman 支持使用 个人访问令牌 进行身份验证。当在 GitHub 中创建令牌时
- 确保配置令牌以具有对
repo
范围的访问权限 - 创建后,您可能需要点击令牌旁边的
配置 SSO
按钮,以授权其用于 SSO。您是否需要这样做将取决于您需要访问的 GitHub 组织。
使用 foreman github-auth
将身份验证令牌传递给 Foreman,或打开 ~/.foreman/auth.toml
并按照其中包含的说明操作。
类似地,对于托管在 GitLab 存储库上的项目,使用 foreman gitlab-auth
将身份验证令牌传递给 Foreman,或打开 ~/.foreman/auth.toml
。
使用方法
Foreman 从 GitHub 或 GitLab 下载工具,并通过它们的 user/repo
名称引用它们,例如 Roblox/foreman
。
配置文件
Foreman 使用 TOML 作为其配置文件格式。它仅需要单个 tools
条目以及所需工具的枚举,其格式如下
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.0.0" }
darklua = { gitlab = "seaofvoices/darklua", version = "0.7.0" }
如您已注意到,工具名称位于 =
的左侧,右侧包含下载所需的信息。对于 GitHub 工具,使用 github = "用户/仓库名"
,对于 GitLab,使用 gitlab = "用户/仓库名"
。
以前,Foreman 只能从 GitHub 下载工具,格式为 source = "rojo-rbx/rojo"
。为了向后兼容,Foreman 仍然支持此格式。
主机(建设中)
foreman 默认支持 Github 和 Gitlab 作为主机,但您也可以使用单个 hosts
条目以及您想要下载工具的主机枚举来自定义主机,其格式如下。
[hosts]
# default hosts
# source = {source = "https://github.com", protocol = "github"}
# github = {source = "https://github.com", protocol = "github"}
# gitlab = {source = "https://gitlab.com", protocol = "gitlab"}
artifactory = {source = "https://artifactory.com", protocol = "artifactory"}
[tools]
tool = {artifactory = "tools/tool", version = "1.1.0"}
foreman 目前仅支持 github、gitlab 和 artifactory 作为协议。
系统工具
要开始使用 Foreman 管理系统默认工具,请创建文件 ~/.foreman/foreman.toml
。
一个列出 Rojo 的 Foreman 配置可能如下所示
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.0.0" }
在任何目录中运行 foreman install
,让 Foreman 检查并安装系统 Foreman 配置中列出的工具。
现在,如果在没有指定 Rojo 版本的目录中运行 rojo
,Foreman 将为您运行最新的 0.5.x 版本!
项目工具
使用 Foreman 管理项目工具与管理系统工具类似。只需在您的项目根目录中创建一个 foreman.toml
文件。
一个列出 Remodel 的 Foreman 配置可能如下所示
[tools]
remodel = { github = "rojo-rbx/remodel", version = "0.9.1" }
运行 foreman install
,让 Foreman 安装此配置文件中列出的任何新二进制文件。
在此目录内,remodel
命令将运行您系统上安装的最新 0.6.x 版本的 Remodel。
故障排除
Foreman 是一个正在开发中的工具,存在一些已知问题。请查看 问题跟踪器 以获取已知错误。
如果您的配置有问题,您可以删除 ~/.foreman
来删除所有缓存数据并从头开始。此目录包含 Foreman 安装的所有工具和配置。
Bad CPU type
错误
如果您在非 M1 Mac 上使用 foreman 版本 1.0.4 或更早版本,您可能会遇到类似以下错误
an error happened trying to run `github.com/some-org/some-tool@^1.2.3` at `/Users/some-user/.foreman/tools/some-org__some-tool-1.2.3` (this is an error in Foreman): Bad CPU type in executable (os error 86)
在这种情况下,由于 二进制文件选择逻辑中的错误,您的 foreman 安装错误地下载了工具二进制的兼容版本。
is not compatible with the version of Windows you're running
错误
如果您使用 foreman 版本 1.1.0 或更早版本,当现有项目为 aarch64
平台(例如 Windows Holographic OS 用于 HoloLens)添加 Windows 二进制文件时,您可能会遇到类似以下错误
在这种情况下,由于 二进制文件选择逻辑中的另一个错误,您的 foreman 安装错误地下载了工具二进制的兼容版本。
要修复这两种错误类型,请采取以下步骤
- 根据 上面的说明 升级您的
foreman
版本。 - 删除文件
~/.foreman/tool-cache.json
和文件夹~/.foreman/tools/
(及其内容),以及文件夹~/.foreman/bin
(如上所述的 升级 部分)。这应该会移除foreman缓存的任何无效的二进制文件。 - 运行
foreman install
重新下载所有相关工具。
您下载的工具现在应该可以正确工作。
许可
Foreman 在 MIT 许可下可用。有关详细信息,请参阅 LICENSE.txt 或 https://opensource.org/licenses/MIT。
依赖项
~17–35MB
~572K SLoC