Files
openwork/.devcontainer/start-daytona-electron.sh

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