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 log = require('../lib/logger');
|
||||||
const { pollSms } = require('../drivers/sim/sms-reader');
|
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 串口驱动(失败不影响主流程)
|
// 每次启动绑定 Quectel 串口驱动(失败不影响主流程)
|
||||||
const bindScript = path.join(__dirname, '..', 'tools', 'bind-quectel-serial.sh');
|
const bindScript = path.join(__dirname, '..', 'tools', 'bind-quectel-serial.sh');
|
||||||
exec(`bash "${bindScript}"`, (err, stdout, stderr) => {
|
exec(`bash "${bindScript}"`, (err, stdout, stderr) => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "clawd",
|
"name": "clawd",
|
||||||
"version": "1.2.7",
|
"version": "1.2.8",
|
||||||
"description": "Claw Box daemon - connects local Linux box to claw.cutos.ai via WebSocket",
|
"description": "Claw Box daemon - connects local Linux box to claw.cutos.ai via WebSocket",
|
||||||
"main": "lib/client.js",
|
"main": "lib/client.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ REMOTE="origin"
|
|||||||
BRANCH="main"
|
BRANCH="main"
|
||||||
SERVICE="clawd.service"
|
SERVICE="clawd.service"
|
||||||
NO_RESTART=false
|
NO_RESTART=false
|
||||||
|
NO_PULL=false
|
||||||
|
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
--no-restart) NO_RESTART=true ;;
|
--no-restart) NO_RESTART=true ;;
|
||||||
|
--no-pull) NO_PULL=true ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -23,6 +25,7 @@ fi
|
|||||||
|
|
||||||
cd "$REPO_DIR"
|
cd "$REPO_DIR"
|
||||||
|
|
||||||
|
if [ "$NO_PULL" = false ]; then
|
||||||
# 如果 remote 仍指向 GitHub,迁移到 git.cutos.ai
|
# 如果 remote 仍指向 GitHub,迁移到 git.cutos.ai
|
||||||
CURRENT_REMOTE=$(git remote get-url "$REMOTE" 2>/dev/null || echo "")
|
CURRENT_REMOTE=$(git remote get-url "$REMOTE" 2>/dev/null || echo "")
|
||||||
if echo "$CURRENT_REMOTE" | grep -q "github.com"; then
|
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 reset --hard "$REMOTE/$BRANCH"
|
||||||
git clean -fd
|
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 ..."
|
echo "==> Dependency files changed, running npm install ..."
|
||||||
npm install --prefix "$REPO_DIR"
|
npm install --prefix "$REPO_DIR"
|
||||||
else
|
else
|
||||||
@@ -58,11 +71,6 @@ fi
|
|||||||
echo "==> Current commit:"
|
echo "==> Current commit:"
|
||||||
git log --oneline -1
|
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)
|
NODE_BIN=$(command -v node)
|
||||||
INSTALL_DIR="/opt/clawd"
|
INSTALL_DIR="/opt/clawd"
|
||||||
CONFIG_DIR="/etc/clawd"
|
CONFIG_DIR="/etc/clawd"
|
||||||
@@ -113,6 +121,11 @@ EOF
|
|||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
echo "==> daemon-reload done"
|
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"
|
echo "==> Restarting service: $SERVICE"
|
||||||
systemctl restart "$SERVICE"
|
systemctl restart "$SERVICE"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user