The tmc CLI - The Modding Community
尚未发布
tmc 是我们公开内容 API 的命令行客户端。它可以创建、编辑和删除你的素材、模组、服务器、文章、社区、合集与群组——而且,正因为这才是 API 的实际用途,它能用一条命令上传文件并发布版本。
Python 3.10+零依赖MIT 许可
tmc 尚未发布。 它不在 PyPI 上,也没有公开仓库——目前只能从源码检出安装,而本页描述的是这个工具已经能做的事,而不是在宣布上线。
install.sh
# From the source checkout — there is nothing to build
pip install .
pip install '.[fast]' # optional: cryptography, for faster signing
tmc --version # tmc 1.1.0
# Keys are made under Account → API Keys
tmc auth login --token tmc_xxxxxxxxxxxx
tmc auth whoami
# …or read public items with no key at all
tmc mod list --anon --app 4 -o json
只有一个纯标准库的包,因此既不用编译也没有依赖要解析——而且每一条命令、每一个参数和每一个退出码都写进了文档。
版本发布
需要一个工具的理由
用原始 API 发布一个版本,是按特定顺序发出的四个请求:上传文件、收集它们的 id、读取已有的版本集合,然后把新的写回去,并且不打扰其他版本。release publish 就是这一整套流程。
它能做什么
API 能做的一切,一一列明
你在浏览器里会做的每件事都有一条对应命令,还有几件你在浏览器里并不想做的事——批量编辑、流水线和脚本化发布。
凭据
密钥、配置档与公钥那一半
登录一次,凭据便会以 0600 权限保存在 ~/.config/tmc/config.json 中——或者通过环境变量传入,则完全不碰磁盘。每个站点或每把密钥一个配置档,而对于本来就不需要密钥的那一半 API,还有 --anon。
关联
四个名副其实的动词
危险的那个是 set:在这套 API 中,对关联发 PUT 意味着“现在这就是完整集合”,所以一次只带一个成员的 PUT 会删掉该条目上的其他全部内容。CLI 把这四者区分开,并在发送破坏性操作前发出警告。
自动化
为在 CI 中运行而生
构建你的项目,在每个标签上发布版本并上传其文件。凭据来自环境变量,因此不会在 runner 上写入任何磁盘内容。
