# metin-release-cli Python CLI that orchestrates Metin2 client releases — builds manifests, signs them, uploads content-addressed blobs, and promotes the new release atomically. Phase 1 wraps `make-manifest.py` and `sign-manifest.py` from the `m2dev-client` repo and adds remote diff, upload, promote, and public verification. ## Install ``` pip install -e .[dev] ``` ## Usage ``` metin-release --help metin-release release inspect --source /path/to/client metin-release release publish --source ... --version 2026.04.14-1 ... ``` Add `--json` to get a machine-parseable envelope on stdout. Exit codes: | Code | Meaning | |------|--------------------------------------| | 0 | success | | 1 | operator / validation error | | 2 | remote or network error | | 3 | signing or integrity error | | 4 | reserved (ERP sync, Phase 2+) | See `docs/cli.md` for the full command reference. ## m2pack commands Phase 4 adds a `metin-release m2pack …` command group that wraps the [`m2pack-secure`](https://gitea.jakubkadlec.dev/metin-server/m2pack-secure) binary for building, verifying, diffing, and runtime-key-exporting signed `.m2p` archives. The binary is not bundled — build it from the m2pack-secure repo and either put it on `PATH` or set `M2PACK_BINARY` to an absolute path. ``` metin-release m2pack build --input ... --output a.m2p --key ck --sign-secret-key sk metin-release m2pack verify --archive a.m2p --public-key pk ``` ## MCP server The `metin-release-mcp` console script (Phase 3) exposes each Phase 1 subcommand as an MCP tool over stdio. Install with the `mcp` extra: ``` pip install -e .[mcp] metin-release-mcp --help ``` See `docs/mcp.md` for tool list, client wiring, and error handling.