cli: scaffold phase 1 asset release commands
Add metin-release CLI with argparse dispatcher, result envelope and error hierarchy, and the full Phase 1 release subcommand set: release inspect - scan source root release build-manifest - wraps make-manifest.py release sign - wraps sign-manifest.py, enforces mode 600 release diff-remote - HEAD each blob hash against a base URL release upload-blobs - rsync release dir minus manifest release promote - rsync manifest.json + signature release verify-public - GET + Ed25519 verify, optional blob sampling release publish - composite of the above with per-stage timings Respects --json / --verbose / --quiet. Exit codes follow the plan (1 validation, 2 remote, 3 integrity, 4 reserved for ERP).
This commit is contained in:
32
README.md
32
README.md
@@ -1,3 +1,33 @@
|
||||
# metin-release-cli
|
||||
|
||||
Python CLI for orchestrating Metin2 client releases (Phase 1 of metin-release-cli-plan)
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user