文件

51 行
2.2 KiB
Bash

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
#!/bin/bash
# 底板定点补线的服务器入口(CLAUDE.md:布线搜索一律上 10.5.5.13,本机只做快照 / 校验 / 下发)。
#
# bash .claude/r2/remote_repair.sh FAN_12V_SW FAN_IN_TACH_RAW FAN_OUT_TACH_RAW FAN_PWM_L
#
# 前置:本机已生成 .claude/r2/_base_fan_input.json(板上现有铜,见 repair_base.py 文件头)。
# 回来的是 .claude/r2/_base_fan_repair.json(**只有新增的**段与孔),下发前先跑 fan_check.py。
#
# `remote_route.ps1` 跑的是整板重算(--replan),会把板上手工改动整份覆盖;这里只补指定的几个网。
set -euo pipefail
SERVER="${SERVER:-10.5.5.13}"
INTERP="${INTERP:-/root/pypy/bin/pypy3}"
SSH="${SSH:-/c/Windows/System32/OpenSSH/ssh.exe}"
SCP="${SCP:-/c/Windows/System32/OpenSSH/scp.exe}"
HERE="$(cd "$(dirname "$0")" && pwd)"
REPO="$(cd "$HERE/../.." && pwd)"
NETS=("$@")
if [ ${#NETS[@]} -eq 0 ]; then
NETS=(FAN_12V_SW FAN_IN_TACH_RAW FAN_OUT_TACH_RAW FAN_PWM_L)
fi
if [ ! -f "$HERE/_base_fan_input.json" ]; then
echo "⛔ 缺 _base_fan_input.json(板上现有铜的快照)" >&2
exit 1
fi
ARCHIVE="$(mktemp -t dcdc-repair-XXXXXX)"
trap 'rm -f "$ARCHIVE"' EXIT
cd "$REPO"
tar --exclude='*.png' --exclude='*.bak' --exclude=__pycache__ --exclude='_remote_route.tgz' \
-czf "$ARCHIVE" .claude/r2 .claude/eda.py .claude/pcb_pour.py .claude/eda-parts.json
REMOTE="$("$SSH" "$SERVER" 'mktemp -d /tmp/dcdc-repair.XXXXXX' | tr -d '\r\n')"
case "$REMOTE" in
/tmp/dcdc-repair.*) ;;
*) echo "⛔ 远端工作目录不对: $REMOTE" >&2; exit 1 ;;
esac
cleanup() { rm -f "$ARCHIVE"; "$SSH" "$SERVER" "rm -rf -- '$REMOTE'" >/dev/null 2>&1 || true; }
trap cleanup EXIT
"$SCP" -q "$ARCHIVE" "$SERVER:$REMOTE/bundle.tgz"
"$SSH" "$SERVER" "tar -xzf '$REMOTE/bundle.tgz' -C '$REMOTE'"
echo "== 服务器 $SERVER 上补线:${NETS[*]} ${EXTRA:-} ${FAN_W:+FAN_W=$FAN_W} =="
"$SSH" "$SERVER" "cd '$REMOTE' && DCDC_ROUTE_SERVER=1 ${FAN_W:+FAN_W=$FAN_W} \
/usr/bin/time -f 'REMOTE_TIME=%e sec CPU=%P RSS=%M KB' \
$INTERP .claude/r2/repair_base.py ${NETS[*]} ${EXTRA:-}"
"$SCP" -q "$SERVER:$REMOTE/.claude/r2/_base_fan_repair.json" "$HERE/_base_fan_repair.json"
echo "已取回 $HERE/_base_fan_repair.json"