Files
claw/tools/browser_runtime/sgclaw_browser_entry.sh

36 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
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
needs_build=1
elif [[ "${MANIFEST_PATH}" -nt "${BIN_PATH}" ]]; then
needs_build=1
elif [[ "${CRATE_DIR}/Cargo.lock" -nt "${BIN_PATH}" ]]; then
needs_build=1
elif find \
"${CRATE_DIR}/src" \
"${CRATE_DIR}/third_party/zeroclaw/src" \
"${CRATE_DIR}/../skill_lib" \
-type f -newer "${BIN_PATH}" -print -quit | grep -q .; then
needs_build=1
fi
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}" "$@"