* test: add Windows npm global install CI test (reproduces #262) This test packs the package and installs it globally with npm, then runs agent-browser --version. This reproduces the issue where npm-generated shims on Windows try to invoke /bin/sh which doesn't exist. The bin/agent-browser.js wrapper is added but not yet wired up, so this commit should fail CI to confirm the issue. * fix: Windows npm global install and npx support The shell script wrapper (bin/agent-browser) with #!/bin/sh shebang causes npm to generate Windows shims that try to invoke /bin/sh, which doesn't exist on Windows. This fix uses a hybrid approach: 1. Node.js wrapper (bin/agent-browser.js) as bin entry - Makes npx work on all platforms - ~100ms overhead (acceptable since npx has its own overhead) 2. postinstall patches bin entries for global installs - Windows: Overwrites .cmd/.ps1 shims to invoke .exe directly - Mac/Linux: Replaces symlink to point to native binary - Zero overhead for `npm i -g agent-browser` users on all platforms Also fixes PowerShell glob expansion in CI test. Fixes #262 * fix: Windows npm global install and npx support The shell script wrapper (bin/agent-browser) with #!/bin/sh shebang causes npm to generate Windows shims that try to invoke /bin/sh, which doesn't exist on Windows. This fix uses a hybrid approach: 1. Node.js wrapper (bin/agent-browser.js) as bin entry - Makes npx work on all platforms - ~100ms overhead (acceptable since npx has its own overhead) 2. postinstall patches bin entries for global installs - Windows: Overwrites .cmd/.ps1 shims to invoke .exe directly - Mac/Linux: Replaces symlink to point to native binary - Zero overhead for `npm i -g agent-browser` users on all platforms Also adds cross-platform CI tests for npm global install to catch regressions on all platforms (Ubuntu, macOS, Windows). Fixes #262 * test global install * remove dead code
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
#!/bin/sh
|
||||
# agent-browser CLI wrapper
|
||||
# Detects OS/arch and runs the appropriate native binary
|
||||
|
||||
SCRIPT="$0"
|
||||
while [ -L "$SCRIPT" ]; do
|
||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT")" && pwd)"
|
||||
SCRIPT="$(readlink "$SCRIPT")"
|
||||
case "$SCRIPT" in /*) ;; *) SCRIPT="$SCRIPT_DIR/$SCRIPT" ;; esac
|
||||
done
|
||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT")" && pwd)"
|
||||
|
||||
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||
ARCH=$(uname -m)
|
||||
case "$OS" in darwin) OS="darwin" ;; linux) OS="linux" ;; mingw*|msys*|cygwin*) OS="win32" ;; esac
|
||||
case "$ARCH" in x86_64|amd64) ARCH="x64" ;; aarch64|arm64) ARCH="arm64" ;; esac
|
||||
|
||||
BINARY="$SCRIPT_DIR/agent-browser-${OS}-${ARCH}"
|
||||
|
||||
if [ -f "$BINARY" ]; then
|
||||
# Ensure binary is executable (npm tarballs don't preserve execute bit)
|
||||
[ -x "$BINARY" ] || chmod +x "$BINARY" 2>/dev/null
|
||||
exec "$BINARY" "$@"
|
||||
fi
|
||||
|
||||
echo "Error: No binary found for ${OS}-${ARCH}" >&2
|
||||
echo "Run 'npm run build:native' to build for your platform" >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user