2 个不稳定版本
0.2.3 | 2023 年 8 月 20 日 |
---|---|
0.1.0 | 2023 年 8 月 14 日 |
在 开发工具 中排名 1573
每月下载量 24
180KB
4K SLoC
Facti

一个用于与 Factorio mod 以及通过 API 交互的 CLI 工具,并有助于 mod 开发。
[!重要]
Facti 处于早期阶段,非常处于开发中,且高度实验性。
在预发布期间,任何命令和 API 都可能更改。
贡献
非常欢迎贡献者!
如果您想讨论该项目,可以在 GitHub 上的讨论 中进行,或者加入 Matrix 房间。
预期的 mod 布局
本工具期望您的 mod 按照以下图表所示的方式进行组织。
(.git 文件夹仅用于显示 Git 仓库的根目录。)
my-mod/
├── .git/
└── src/
├── locale/
│ └── en/
│ └── mod.cfg
├── info.json
├── changelog.txt
├── control.lua
├── data.lua
└── thumbnail.png
用法
有关CLI命令的帮助,您可以通过运行facti help <命令>
或facti <命令> --help
来获取。
[!警告]
此处概述的命令仍然是实验性的,并可能发生变化。此外,一些命令可能尚未实现。
创建新模块
Facti可以为您启动一个新的模块,放置一些占位符文件并设置预期的文件夹结构
facti new [mod-name]
在没有指定名称的情况下调用时,它将在当前目录中设置,如果目录为空,则使用目录名称作为模块名称。
打包
您可以使用facti通过facti pack
来打包您的模块,以便将其分发到模块门户(或其他地方)
facti pack
如果在此命令中使用Git仓库,它将检查项目布局是否与在预期的模块布局下描述的布局相匹配。
如果当前目录不是Git仓库,但包含一个info.json
文件,它将将其视为模块目录。
要覆盖模块目录,请将其作为pack
的参数传递
facti pack cool/path/to/mod
传递显式目录将禁用Git仓库检测,并且如果指定的目录不包含info.json
文件,则会失败。
模块门户
您可以通过使用facti portal
命令通过facti与Factorio模块门户交互。
以下是一些示例
# Search for mods that match the name "cybersyn-combinator"
facti portal search cybersyn-combinator
# Show information about the cybersyn-combinator mod
facti portal show cybersyn-combinator
# Show more detailed information about the cybersyn-combinator mod
facti portal show --full cybersyn-combinator
# By default, deprecated mods are excluded from search
# if you want to show them you have to specify the --deprecated flag
facti portal search --deprecated
# You can enable JSON output by supplying the --json flag.
# In a non-interactive context, this is the default
# and can be negated with --no-json
facti portal --json show --full cybersyn-combinator
# Checks if all listed mods are compatible with each other.
# Currently this just makes sure none of the mods have each other listed
# as "incompatible"
facti portal check cybersyn-combinator cybersyn
# By default the above command will check against the latest version of each
# mod, to check a specific version you can include a version requirement
facti portal check [email protected] [email protected]
配置
一些命令,如将模块包上传到模块门户,需要使用API密钥。
要获取此密钥,您必须在您的Factorio个人资料页面上生成API密钥。
[!重要]
您的API密钥非常敏感,不要将其存储在任何可能被其他人访问的地方。
Facti维护者绝不会要求您的API密钥。
任何获取到您的API密钥的人都可以根据密钥的权限在不经您同意的情况下发布和/或修改您的模块。
要使用facti的所有功能,您必须启用所有三个使用复选框
- 模块门户:上传模块
- 模块门户:发布模块
- 模块门户:编辑模块
当然,如果您知道您不会使用其中的一些,则可以禁用它们以避免授予不必要的权限。
您可以通过以下方式在每次调用facti时提供API密钥
# Directly as a parameter
facti --api-key <your-api-key> ...
# from stdin to avoid it showing up in shell history
$ facti --api-key-stdin ...
Please input your Factorio API key to continue:
>
# read it from a file
$ facti --api-key-file <path-to-file> ...
或将其保存在facti的配置文件中
[factorio]
api-key = "<your-api-key>"
facti将在以下位置和顺序查找其配置文件
$XDG_CONFIG_HOME/facti/config.toml
$HOME/.config/facti/config.toml
您可以在调用facti时手动指定配置文件的位置
facti --config <path-to-config-file> ...
您还可以通过环境变量提供API密钥
export FACTI_FACTORIO_API_KEY="<your-api-key>"
facti ...
以及配置文件的路径
export FACTI_CONFIG="<path-to-config-file>"
facti ...
配置层次结构
一般来说,设置的最“直接”应用是有效设置。
本质上,这意味着设置按以下顺序解析
- 命令行参数
- 环境变量
- 配置文件
首先遇到的一个“获胜”。
对于API密钥而言,在提供它的不同方式中也有优先级
-
直接值
--api-key
命令行选项FACTI_FACTORIO_API_KEY
环境变量api-key
配置文件中的设置
-
通过
--api-key-stdin
从标准输入(stdin)提供 -
从文件提供
--api-key-file
命令行选项FACTI_FACTORIO_API_KEY_FILE
环境变量api-key-file
配置文件中的设置
首先遇到者获胜,关于CLI参数的主要层次结构相对于环境变量和配置文件。
例如:如果您的配置文件中设置了api-key
的值,并且设置了环境变量FACTI_FACTORIO_API_KEY_FILE
,并且您还指定了--api-key-stdin
,那么stdin方法将获胜,因为它是通过命令行参数指定的,命令行参数具有最高优先级。
许可协议
版权所有 © 2023 Adam Hellberg。
此源代码形式受Mozilla公共许可证v. 2.0的条款约束。如果此文件未附带MPL副本,您可以在http://mozilla.org/MPL/2.0/获取。
依赖项
~23–40MB
~687K SLoC