fix: re-exec updated script after git pull so new logic runs; bump to 1.2.8
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
16
bin/clawd.js
16
bin/clawd.js
@@ -11,22 +11,6 @@ const config = require('../lib/config');
|
||||
const log = require('../lib/logger');
|
||||
const { pollSms } = require('../drivers/sim/sms-reader');
|
||||
|
||||
// 修复旧版 clawd.service:确保 ReadWritePaths 包含 /etc/hosts /etc/hostname
|
||||
const SERVICE_FILE = '/etc/systemd/system/clawd.service';
|
||||
const fs = require('fs');
|
||||
try {
|
||||
const svc = fs.readFileSync(SERVICE_FILE, 'utf8');
|
||||
if (svc.includes('ReadWritePaths=') && !svc.includes('/etc/hosts')) {
|
||||
const fixed = svc.replace(
|
||||
/ReadWritePaths=([^\n]*)/,
|
||||
(_, rest) => `ReadWritePaths=${rest.trimEnd()} /etc/hosts /etc/hostname`
|
||||
);
|
||||
fs.writeFileSync(SERVICE_FILE, fixed, 'utf8');
|
||||
exec('systemctl daemon-reload', () => {});
|
||||
log.info('clawd', 'clawd.service ReadWritePaths patched');
|
||||
}
|
||||
} catch (_) { /* not running under systemd or no permission */ }
|
||||
|
||||
// 每次启动绑定 Quectel 串口驱动(失败不影响主流程)
|
||||
const bindScript = path.join(__dirname, '..', 'tools', 'bind-quectel-serial.sh');
|
||||
exec(`bash "${bindScript}"`, (err, stdout, stderr) => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "clawd",
|
||||
"version": "1.2.7",
|
||||
"version": "1.2.8",
|
||||
"description": "Claw Box daemon - connects local Linux box to claw.cutos.ai via WebSocket",
|
||||
"main": "lib/client.js",
|
||||
"bin": {
|
||||
|
||||
@@ -6,10 +6,12 @@ REMOTE="origin"
|
||||
BRANCH="main"
|
||||
SERVICE="clawd.service"
|
||||
NO_RESTART=false
|
||||
NO_PULL=false
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--no-restart) NO_RESTART=true ;;
|
||||
--no-pull) NO_PULL=true ;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -23,6 +25,7 @@ fi
|
||||
|
||||
cd "$REPO_DIR"
|
||||
|
||||
if [ "$NO_PULL" = false ]; then
|
||||
# 如果 remote 仍指向 GitHub,迁移到 git.cutos.ai
|
||||
CURRENT_REMOTE=$(git remote get-url "$REMOTE" 2>/dev/null || echo "")
|
||||
if echo "$CURRENT_REMOTE" | grep -q "github.com"; then
|
||||
@@ -48,7 +51,17 @@ echo "==> Updating working tree to $REMOTE/$BRANCH ..."
|
||||
git reset --hard "$REMOTE/$BRANCH"
|
||||
git clean -fd
|
||||
|
||||
if git diff --name-only "$LOCAL_COMMIT" "$REMOTE_COMMIT" | grep -Eq '(^|/)(package.json|package-lock.json)$'; then
|
||||
# Re-exec the freshly pulled version of this script so all new logic runs
|
||||
echo "==> Re-executing updated script ..."
|
||||
exec bash "$REPO_DIR/tools/update-clawd.sh" --no-pull "$@"
|
||||
fi
|
||||
|
||||
# ── 以下由新版脚本执行(--no-pull 阶段)────────────────────────────────────────
|
||||
|
||||
LOCAL_COMMIT="$(git rev-parse HEAD)"
|
||||
REMOTE_COMMIT="$(git rev-parse "$REMOTE/$BRANCH" 2>/dev/null || echo "$LOCAL_COMMIT")"
|
||||
|
||||
if git diff --name-only HEAD~1 HEAD 2>/dev/null | grep -Eq '(^|/)(package.json|package-lock.json)$'; then
|
||||
echo "==> Dependency files changed, running npm install ..."
|
||||
npm install --prefix "$REPO_DIR"
|
||||
else
|
||||
@@ -58,11 +71,6 @@ fi
|
||||
echo "==> Current commit:"
|
||||
git log --oneline -1
|
||||
|
||||
if [ "$NO_RESTART" = true ]; then
|
||||
echo "==> --no-restart: skip systemctl restart (caller handles restart)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
NODE_BIN=$(command -v node)
|
||||
INSTALL_DIR="/opt/clawd"
|
||||
CONFIG_DIR="/etc/clawd"
|
||||
@@ -113,6 +121,11 @@ EOF
|
||||
systemctl daemon-reload
|
||||
echo "==> daemon-reload done"
|
||||
|
||||
if [ "$NO_RESTART" = true ]; then
|
||||
echo "==> --no-restart: skip systemctl restart (caller handles restart)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "==> Restarting service: $SERVICE"
|
||||
systemctl restart "$SERVICE"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user