2 个不稳定版本

0.2.3 2023 年 8 月 20 日
0.1.0 2023 年 8 月 14 日

开发工具 中排名 1573

每月下载量 24

MPL-2.0 许可证

180KB
4K SLoC

Facti crates.io docs.rs 构建状态 审计状态

一个用于与 Factorio mod 以及通过 API 交互的 CLI 工具,并有助于 mod 开发。

[!重要]

Facti 处于早期阶段,非常处于开发中,且高度实验性。

在预发布期间,任何命令和 API 都可能更改。

贡献

GitHub 讨论 Matrix 房间

非常欢迎贡献者!

如果您想讨论该项目,可以在 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将在以下位置和顺序查找其配置文件

  1. $XDG_CONFIG_HOME/facti/config.toml
  2. $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 ...

配置层次结构

一般来说,设置的最“直接”应用是有效设置。

本质上,这意味着设置按以下顺序解析

  1. 命令行参数
  2. 环境变量
  3. 配置文件

首先遇到的一个“获胜”。

对于API密钥而言,在提供它的不同方式中也有优先级

  1. 直接值

    • --api-key命令行选项
    • FACTI_FACTORIO_API_KEY环境变量
    • api-key配置文件中的设置
  2. 通过--api-key-stdin从标准输入(stdin)提供

  3. 从文件提供

    • --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