Jan Nedbal 362bd6ae7c cli: accept --json/-v/-q on every subcommand, not only top level
Before this change, only the top-level parser defined --json, -v and -q.
Argparse processes arguments left-to-right and hands off to the subparser
after seeing the subcommand name, so the idiomatic

    metin-release release inspect --source X --json

failed with 'unrecognized arguments: --json'. Users had to write

    metin-release --json release inspect --source X

which is the opposite of what every modern CLI does. Attach a shared
--json/-v/-q flag set to every subparser via a small helper. Same dest
means the last occurrence on the command line wins, which is the intuitive
behaviour. Both placements are now accepted; tests unchanged.
2026-04-14 19:04:55 +02:00
2026-04-14 18:59:50 +02:00
2026-04-14 18:51:38 +02:00

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.

Description
Python CLI for orchestrating Metin2 client releases (Phase 1 of metin-release-cli-plan)
Readme MIT 116 KiB
2026-04-14 19:21:55 +02:00
Languages
Python 100%