From 5db25b513e388ea1d94cb6bfa54c28b18197fe4b Mon Sep 17 00:00:00 2001 From: zyl Date: Mon, 30 Mar 2026 02:30:34 +0800 Subject: [PATCH] fix: sync launcher rules for source checkout --- tests/browser_runtime_entrypoint_test.sh | 53 +++++++++++++++++++ tools/browser_runtime/sgclaw_browser_entry.sh | 7 +++ 2 files changed, 60 insertions(+) create mode 100644 tests/browser_runtime_entrypoint_test.sh diff --git a/tests/browser_runtime_entrypoint_test.sh b/tests/browser_runtime_entrypoint_test.sh new file mode 100644 index 0000000..9b4adcd --- /dev/null +++ b/tests/browser_runtime_entrypoint_test.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +set -euo pipefail + +TEST_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +CRATE_DIR="$(cd -- "${TEST_DIR}/.." && pwd)" +TMP_DIR="$(mktemp -d)" +trap 'rm -rf "${TMP_DIR}"' EXIT + +FAKE_CRATE_DIR="${TMP_DIR}/claw" +mkdir -p \ + "${FAKE_CRATE_DIR}/tools/browser_runtime" \ + "${FAKE_CRATE_DIR}/target/debug/resources" \ + "${FAKE_CRATE_DIR}/resources" \ + "${FAKE_CRATE_DIR}/src" \ + "${FAKE_CRATE_DIR}/third_party/zeroclaw/src" \ + "${TMP_DIR}/skill_lib" + +cp "${CRATE_DIR}/tools/browser_runtime/sgclaw_browser_entry.sh" \ + "${FAKE_CRATE_DIR}/tools/browser_runtime/sgclaw_browser_entry.sh" +chmod +x "${FAKE_CRATE_DIR}/tools/browser_runtime/sgclaw_browser_entry.sh" + +cat > "${FAKE_CRATE_DIR}/Cargo.toml" <<'EOF' +[package] +name = "sgclaw" +version = "0.1.0" +edition = "2021" +EOF + +cat > "${FAKE_CRATE_DIR}/Cargo.lock" <<'EOF' +# fake lockfile for launcher test +EOF + +cat > "${FAKE_CRATE_DIR}/target/debug/resources/rules.json" <<'EOF' +{"version":"1.0","domains":{"allowed":["www.zhihu.com"]},"pipe_actions":{"allowed":["click","type","navigate","getText"],"blocked":[]}} +EOF + +sleep 1 + +cat > "${FAKE_CRATE_DIR}/resources/rules.json" <<'EOF' +{"version":"1.0","domains":{"allowed":["www.zhihu.com"]},"pipe_actions":{"allowed":["click","type","navigate","getText","eval"],"blocked":[]}} +EOF + +cat > "${FAKE_CRATE_DIR}/target/debug/sgclaw" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +grep -q '"eval"' "${SCRIPT_DIR}/resources/rules.json" +EOF +chmod +x "${FAKE_CRATE_DIR}/target/debug/sgclaw" + +"${FAKE_CRATE_DIR}/tools/browser_runtime/sgclaw_browser_entry.sh" + +grep -q '"eval"' "${FAKE_CRATE_DIR}/target/debug/resources/rules.json" diff --git a/tools/browser_runtime/sgclaw_browser_entry.sh b/tools/browser_runtime/sgclaw_browser_entry.sh index cf0d585..c302015 100755 --- a/tools/browser_runtime/sgclaw_browser_entry.sh +++ b/tools/browser_runtime/sgclaw_browser_entry.sh @@ -5,6 +5,8 @@ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" CRATE_DIR="$(cd -- "${SCRIPT_DIR}/../.." && pwd)" BIN_PATH="${CRATE_DIR}/target/debug/sgclaw" MANIFEST_PATH="${CRATE_DIR}/Cargo.toml" +RULES_SRC_PATH="${CRATE_DIR}/resources/rules.json" +RULES_DEST_PATH="${CRATE_DIR}/target/debug/resources/rules.json" needs_build=0 if [[ ! -x "${BIN_PATH}" ]]; then @@ -25,4 +27,9 @@ if [[ "${needs_build}" -eq 1 ]]; then cargo build --manifest-path "${MANIFEST_PATH}" --bin sgclaw fi +if [[ ! -f "${RULES_DEST_PATH}" || "${RULES_SRC_PATH}" -nt "${RULES_DEST_PATH}" ]]; then + mkdir -p "$(dirname -- "${RULES_DEST_PATH}")" + cp "${RULES_SRC_PATH}" "${RULES_DEST_PATH}" +fi + exec "${BIN_PATH}" "$@"