The tmc CLI - The Modding Community
tmc は、私たちの公開コンテンツ API のためのコマンドラインクライアントです。アセット、MOD、サーバー、記事、コミュニティ、コレクション、グループの作成・編集・削除ができ、API が実際に使われている用途そのものとして、ファイルのアップロードとリリースの公開を 1 コマンドで行えます。
tmc はまだリリースされていません。 PyPI にはなく、公開リポジトリもありません — 現時点ではソースのチェックアウトからインストールします。このページはローンチの告知ではなく、このツールがすでにできることを説明しています。
# 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 でリリースを切るには、決まった順序で 4 つのリクエストが要ります。ファイルをアップロードし、その id を集め、すでにあるリリース集合を読み、ほかを乱さずに新しいものを書き戻す。release publish はその一連の流れそのものです。
API にできることすべてを、明示的に
ブラウザでやるであろう操作ごとに 1 つのコマンド。そしてブラウザではやりたくないいくつか — 一括編集、パイプライン、スクリプト化したリリースも。
キー、プロファイル、そして公開鍵の側
一度ログインすれば、資格情報はモード 0600 で ~/.config/tmc/config.json に保存されます — あるいは環境変数で渡せば、ディスクには一切触れません。サイトごと・キーごとに 1 プロファイル。そして、そもそもキーの要らない半分の API 向けに --anon があります。
動作どおりの名前を持つ 4 つの動詞
危険なのは set です。この API では関連への PUT は「これが完全な集合である」という意味なので、メンバー 1 件の PUT はそのアイテムのほかすべてを削除します。CLI はこの 4 つを区別し、破壊的なものを送る前に警告します。
CI で生きるために作られました
プロジェクトをビルドし、リリースを切り、タグごとにファイルをアップロード。資格情報は環境変数から来るので、ランナーのディスクには何も書かれません。
