From 4f0a6e60979ee88968c203abf9248c560ffec0f1 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 14 Sep 2026 16:41:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(homeagent):=20=E6=9E=84=E5=BB=BA=E4=B8=8D?= =?UTF-8?q?=E8=AE=B8=E5=BC=84=E8=84=8F=E6=BA=90=E7=A0=81=E6=A0=91=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20hmapdev=20=E4=BC=9A=E9=87=8D=E5=86=99=20pl?= =?UTF-8?q?ugin.json=EF=BC=8C=E6=9E=84=E5=BB=BA=E5=90=8E=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E5=B9=B6=E5=87=BA=E5=A3=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实测:`hmapdev build` 会重写受版本管理的 `plugin.json`(只吃掉了文件末尾换行)。 "构建把树弄脏"这件事在 electron 那边刚定过规矩(脏树产物不得自称发布候选), 所以这里同样处理:构建前留快照,构建后若被改写就还原 + 打印一行说明 (不静默还原 —— 下一个人要知道这条工具会动源码)。 验证:`bash build.sh`(HOMEAGENT_SDK_DIR=…/sdk/v1.3.0)产出 build/plugin.bin(9018271 字节), 构建后 `git status plugins/homeagent-mail-bridge/` 只剩我自己改的 build.sh。 --- plugins/homeagent-mail-bridge/build.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/plugins/homeagent-mail-bridge/build.sh b/plugins/homeagent-mail-bridge/build.sh index 9470673..29ae908 100755 --- a/plugins/homeagent-mail-bridge/build.sh +++ b/plugins/homeagent-mail-bridge/build.sh @@ -79,7 +79,22 @@ export GOFLAGS="${GOFLAGS:-} -modfile=$TMP_MOD" # 注意:这个插件**没有** `func main()`(入口由 hmapdev 生成/包装), # 所以 `go build ./...` 会报 "function main is undeclared" —— 那是正常的, # 不能用它来数 API 兼容性错误;真正的编译在 hmapdev 那一步。 +# 这条工具会**重写 plugin.json/plg.json**(实测:只把文件末尾的换行吃掉了)。 +# 构建不该把源码树弄脏 —— 在 electron 那边我们刚为同一形状定过规矩 +# (脏树产物不得自称发布候选)。所以:先记哈希,构建后若被改就还原并出声。 +MANIFESTS=(plugin.json plg.json) +SNAP_DIR="$(mktemp -d)" +for f in "${MANIFESTS[@]}"; do [[ -f "$f" ]] && cp "$f" "$SNAP_DIR/$f"; done hmapdev build || die "hmapdev build 失败(编译错误见上;它才是真正的编译入口)" +for f in "${MANIFESTS[@]}"; do + [[ -f "$SNAP_DIR/$f" ]] || continue + if ! cmp -s "$SNAP_DIR/$f" "$f"; then + cp "$SNAP_DIR/$f" "$f" + echo "[build] 注意:hmapdev 改写了 $f(已还原)—— 构建工具不该动受版本管理的源码;" + echo "[build] 否则每次构建都把树弄脏,而'脏树'在别的端已经是'不是发布候选'的判据了。" + fi +done +rm -rf "$SNAP_DIR" # ── 3. 产物自报身份 ───────────────────────────────────────────────── BIN="build/plugin.bin"