daytonaWorkspaceBootstrap.sh 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. set -euox pipefail
  3. project="$1"
  4. root="/home/daytona/workspace"
  5. repo="$root/repo"
  6. localbin="/home/daytona/opencode"
  7. installbin="/home/daytona/.opencode/bin/opencode"
  8. printf "%s\n" "ipv4" > "$HOME/.curlrc"
  9. rm -rf "$repo"
  10. mkdir -p "$root"
  11. tar -xzf "$HOME/repo.tgz" -C "$HOME/workspace"
  12. ls -last "$HOME"
  13. if [ -f "$HOME/opencode" ]; then
  14. chmod +x "$HOME/opencode"
  15. exe="$localbin"
  16. else
  17. mkdir -p "$HOME/.opencode/bin"
  18. OPENCODE_INSTALL_DIR="$HOME/.opencode/bin" curl -4 -fsSL https://opencode.ai/install | bash
  19. exe="$installbin"
  20. fi
  21. echo "opencode: $exe"
  22. printf "%s\n" "$project" > "$repo/.git/opencode"
  23. cd "$repo"
  24. 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 &
  25. for i in $(seq 1 60); do
  26. if curl -4 -fsS http://127.0.0.1:3096/global/health >/dev/null; then
  27. echo "ready"
  28. exit 0
  29. fi
  30. echo "waiting for server ($i/60)"
  31. sleep 1
  32. done
  33. echo "daytona workspace server did not become ready in time" >&2
  34. exit 1