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:
Jan Nedbal
2026-04-14 18:59:50 +02:00
parent fb1e0cda87
commit e70fc300e2
22 changed files with 1344 additions and 1 deletions

View File

@@ -0,0 +1,23 @@
from __future__ import annotations
from . import (
build_manifest,
diff_remote,
inspect,
promote,
publish,
sign,
upload_blobs,
verify_public,
)
__all__ = [
"build_manifest",
"diff_remote",
"inspect",
"promote",
"publish",
"sign",
"upload_blobs",
"verify_public",
]