87 lines
2.6 KiB
Bash
Executable File
87 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Start the real Electron app in Daytona/headless Linux with CDP enabled.
|
|
# This centralizes the graphics-safe Chromium flags and optional secret-volume
|
|
# env loading used by Daytona evals.
|
|
|
|
cd "${OPENWORK_WORKSPACE_DIR:-/workspace}"
|
|
|
|
if [ "${1:-}" = "--detach" ]; then
|
|
shift
|
|
SCRIPT_PATH="${BASH_SOURCE[0]}"
|
|
LOG_PATH="${DAYTONA_ELECTRON_LOG:-/tmp/electron.log}"
|
|
python3 - "$SCRIPT_PATH" "$LOG_PATH" "$@" <<'PY'
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
script_path, log_path, *args = sys.argv[1:]
|
|
log = open(log_path, "ab", buffering=0)
|
|
subprocess.Popen(
|
|
["bash", script_path, *args],
|
|
cwd=os.environ.get("OPENWORK_WORKSPACE_DIR", "/workspace"),
|
|
env=os.environ.copy(),
|
|
stdin=subprocess.DEVNULL,
|
|
stdout=log,
|
|
stderr=subprocess.STDOUT,
|
|
start_new_session=True,
|
|
close_fds=True,
|
|
)
|
|
PY
|
|
exit 0
|
|
fi
|
|
|
|
DAYTONA_SECRETS_ENV="${DAYTONA_SECRETS_ENV:-/daytona-secrets}"
|
|
DAYTONA_ELECTRON_EXTRA_LAUNCH_ARGS="${DAYTONA_ELECTRON_EXTRA_LAUNCH_ARGS:---disable-gpu --disable-dev-shm-usage --enable-unsafe-swiftshader}"
|
|
|
|
source_secret_env_file() {
|
|
local env_file="$1"
|
|
if [ -f "$env_file" ]; then
|
|
set -a
|
|
# shellcheck disable=SC1090
|
|
source "$env_file"
|
|
set +a
|
|
fi
|
|
}
|
|
|
|
if [ -d "$DAYTONA_SECRETS_ENV" ]; then
|
|
shopt -s nullglob
|
|
for env_file in "$DAYTONA_SECRETS_ENV"/*.env; do
|
|
source_secret_env_file "$env_file"
|
|
done
|
|
shopt -u nullglob
|
|
elif [ -f "$DAYTONA_SECRETS_ENV" ]; then
|
|
set -a
|
|
# shellcheck disable=SC1090
|
|
source "$DAYTONA_SECRETS_ENV"
|
|
set +a
|
|
fi
|
|
|
|
export DISPLAY="${DISPLAY:-:99}"
|
|
export ELECTRON_DISABLE_SANDBOX="${ELECTRON_DISABLE_SANDBOX:-1}"
|
|
export ELECTRON_EXTRA_LAUNCH_ARGS="${ELECTRON_EXTRA_LAUNCH_ARGS:-$DAYTONA_ELECTRON_EXTRA_LAUNCH_ARGS}"
|
|
export OPENWORK_REACT_DEVTOOLS="${OPENWORK_REACT_DEVTOOLS:-0}"
|
|
export OPENWORK_DEV_MODE="${OPENWORK_DEV_MODE:-1}"
|
|
export OPENWORK_ELECTRON_REMOTE_DEBUG_PORT="${OPENWORK_ELECTRON_REMOTE_DEBUG_PORT:-9825}"
|
|
export OPENWORK_ELECTRON_FAKE_MEDIA="${OPENWORK_ELECTRON_FAKE_MEDIA:-0}"
|
|
if [ -n "${OPENWORK_ELECTRON_USERDATA:-}" ]; then
|
|
export OPENWORK_ELECTRON_USERDATA
|
|
fi
|
|
if [ -n "${OPENWORK_ELECTRON_APP_IDENTIFIER:-}" ]; then
|
|
export OPENWORK_ELECTRON_APP_IDENTIFIER
|
|
fi
|
|
if [ -n "${OPENWORK_ELECTRON_APP_NAME:-}" ]; then
|
|
export OPENWORK_ELECTRON_APP_NAME
|
|
fi
|
|
|
|
if [ -n "${OPENWORK_EVAL_ELECTRON_BINARY:-}" ]; then
|
|
if [ ! -x "$OPENWORK_EVAL_ELECTRON_BINARY" ]; then
|
|
echo "OPENWORK_EVAL_ELECTRON_BINARY is not an executable file: $OPENWORK_EVAL_ELECTRON_BINARY" >&2
|
|
exit 1
|
|
fi
|
|
exec "$OPENWORK_EVAL_ELECTRON_BINARY"
|
|
fi
|
|
|
|
exec pnpm --filter @openwork/desktop dev:electron
|