update shell
This commit is contained in:
53
tools/update-clawd.sh
Normal file
53
tools/update-clawd.sh
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
REPO_DIR="/opt/clawd"
|
||||||
|
REMOTE="origin"
|
||||||
|
BRANCH="main"
|
||||||
|
SERVICE="clawd.service"
|
||||||
|
|
||||||
|
echo "==> clawd update start"
|
||||||
|
date
|
||||||
|
|
||||||
|
if [ ! -d "$REPO_DIR/.git" ]; then
|
||||||
|
echo "ERROR: $REPO_DIR is not a git repository"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$REPO_DIR"
|
||||||
|
|
||||||
|
echo "==> Fetching latest from $REMOTE/$BRANCH ..."
|
||||||
|
git fetch "$REMOTE"
|
||||||
|
|
||||||
|
LOCAL_COMMIT="$(git rev-parse HEAD)"
|
||||||
|
REMOTE_COMMIT="$(git rev-parse "$REMOTE/$BRANCH")"
|
||||||
|
|
||||||
|
echo "==> Local : $LOCAL_COMMIT"
|
||||||
|
echo "==> Remote: $REMOTE_COMMIT"
|
||||||
|
|
||||||
|
if [ "$LOCAL_COMMIT" = "$REMOTE_COMMIT" ]; then
|
||||||
|
echo "==> Already up to date. Skip upgrade."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
echo "==> Dependency files changed, running npm install ..."
|
||||||
|
npm install --prefix "$REPO_DIR"
|
||||||
|
else
|
||||||
|
echo "==> No dependency changes, skip npm install"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Restarting service: $SERVICE"
|
||||||
|
systemctl restart "$SERVICE"
|
||||||
|
|
||||||
|
echo "==> Service status:"
|
||||||
|
systemctl status "$SERVICE" --no-pager -l || true
|
||||||
|
|
||||||
|
echo "==> Current commit:"
|
||||||
|
git log --oneline -1
|
||||||
|
|
||||||
|
echo "==> clawd update done"
|
||||||
Reference in New Issue
Block a user