| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/usr/bin/env bash
- set -euox pipefail
- project="$1"
- root="/home/daytona/workspace"
- repo="$root/repo"
- localbin="/home/daytona/opencode"
- installbin="/home/daytona/.opencode/bin/opencode"
- printf "%s\n" "ipv4" > "$HOME/.curlrc"
- rm -rf "$repo"
- mkdir -p "$root"
- tar -xzf "$HOME/repo.tgz" -C "$HOME/workspace"
- ls -last "$HOME"
- if [ -f "$HOME/opencode" ]; then
- chmod +x "$HOME/opencode"
- exe="$localbin"
- else
- mkdir -p "$HOME/.opencode/bin"
- OPENCODE_INSTALL_DIR="$HOME/.opencode/bin" curl -4 -fsSL https://opencode.ai/install | bash
- exe="$installbin"
- fi
- echo "opencode: $exe"
- printf "%s\n" "$project" > "$repo/.git/opencode"
- cd "$repo"
- OPENCODE_WORKSPACE=true OPENCODE_EXPERIMENTAL_WORKSPACES=true nohup "$exe" serve --hostname 0.0.0.0 --port 3096 --print-logs > /tmp/opencode-server.log 2>&1 &
- for i in $(seq 1 60); do
- if curl -4 -fsS http://127.0.0.1:3096/global/health >/dev/null; then
- echo "ready"
- exit 0
- fi
- echo "waiting for server ($i/60)"
- sleep 1
- done
- echo "daytona workspace server did not become ready in time" >&2
- exit 1
|