Skip to content

feat: add agent-friendly HAP deployment CLI - #5

Merged
guantw merged 4 commits into
guantw:masterfrom
yuhuailiu:codex/agent-friendly-hapsign-cli
Aug 28, 2026
Merged

guantw merged 4 commits into
guantw:masterfrom
yuhuailiu:codex/agent-friendly-hapsign-cli

Conversation

@yuhuailiu

@yuhuailiu yuhuailiu commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

变更

新增面向 Agent 的 HarmonyOS HAP 命令行工作流:

  • 增加 auth、auth status、devices list、sign、install 和 deploy 子命令。
  • 所有执行命令支持单行 JSON stdout、stderr 诊断日志、稳定退出码和脱敏错误。
  • 要求显式 HDC serial,并标记 USB 真机候选与本地模拟器候选。
  • 将签名与安装分离;deploy 负责端到端流程,安装后通过 bm dump 验证 bundle。
  • 当 bundle 切换目标设备时按 UDID 失效 Profile 缓存,同时继续复用有效账号 Token。
  • CLI 默认状态目录改为跨平台用户主目录 ~/.hapsign;Windows 使用用户主目录下的 .hapsign。
  • CLI 必须显式使用子命令,并为设备相关命令传入非空 --serial;不再兼容旧版 hapsign --hap ... 调用。
  • 新增仓库级 .agents/skills/hapsign-hap-deploy Skill,指导 Agent 使用 JSON 输出和显式设备 serial 调用 hapsign 完成认证、签名、安装及端到端部署,不重复实现底层签名或 HDC 安装流程。

Review 修复

  • 失败异常中的完整 64 位设备 UDID 会在 Pipeline 和 CLI 输出边界双重脱敏,避免进入 JSON stdout 或默认诊断日志。
  • 缺少 HDC 可执行文件现在归类为 operation_failed 并返回退出码 1,不再误报 invalid_input/退出码 2。
  • 空白 HDC serial 会作为 invalid_arguments 拒绝,不会退回 HDC 隐式目标选择。
  • auth 仅在 Token 缓存成功持久化后返回成功。
  • devices list 会识别退出码为 0 的 HDC [Fail]/错误输出并返回 operation_failed。

验证

  • python -m ruff format --check .
  • python -m ruff check .
  • python -m pytest --cov
  • hapsign-hap-deploy 通过 skill-creator quick_validate.py 校验
  • 新增或修复逻辑已有不依赖真实账号/设备的测试
  • 用户可见变化已写入 CHANGELOG.md
  • 未提交 token、证书、私钥、UDID、HAP、日志或本机配置
  • 新增依赖已更新 THIRD_PARTY_NOTICES.md(本次无新增依赖)
  • 涉及便携包时已检查 docs/OPEN_SOURCE_RELEASE.md(本次未改动便携构建产物)

测试结果:Windows Python 3.12 下 211 passed,1 skipped;总覆盖率 75.40%。跳过项为当前测试环境未安装 PySide6 的 GUI 样式测试。

手动测试

  • macOS Apple Silicon、Python 3.14 editable 安装:hapsign --help 与 hapsign auth --help 正常。
  • hapsign auth status --json 返回合法单行 JSON,默认缓存路径解析为用户主目录下的 .hapsign。
  • hapsign devices list --connected-only --json 能区分 USB 真机候选和 localhost 模拟器。
  • 本次 PR 验证未重复触发浏览器授权、签名或真机安装。

@yuhuailiu
yuhuailiu marked this pull request as draft August 28, 2026 09:00
@yuhuailiu
yuhuailiu marked this pull request as ready for review August 28, 2026 10:07
@guantw
guantw merged commit 37c4c3b into guantw:master Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants