setup.sh 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/env bash
  2. # Setup script for OpenCode plugin tests
  3. # Creates an isolated test environment with proper plugin installation
  4. set -euo pipefail
  5. # Get the repository root (two levels up from tests/opencode/)
  6. REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
  7. # Create temp home directory for isolation
  8. export TEST_HOME
  9. TEST_HOME=$(mktemp -d)
  10. export HOME="$TEST_HOME"
  11. export XDG_CONFIG_HOME="$TEST_HOME/.config"
  12. export OPENCODE_CONFIG_DIR="$TEST_HOME/.config/opencode"
  13. # Standard install layout:
  14. # $OPENCODE_CONFIG_DIR/superpowers/ ← package root
  15. # $OPENCODE_CONFIG_DIR/superpowers/skills/ ← skills dir (../../skills from plugin)
  16. # $OPENCODE_CONFIG_DIR/superpowers/.opencode/plugins/superpowers.js ← plugin file
  17. # $OPENCODE_CONFIG_DIR/plugins/superpowers.js ← symlink OpenCode reads
  18. SUPERPOWERS_DIR="$OPENCODE_CONFIG_DIR/superpowers"
  19. SUPERPOWERS_SKILLS_DIR="$SUPERPOWERS_DIR/skills"
  20. SUPERPOWERS_PLUGIN_FILE="$SUPERPOWERS_DIR/.opencode/plugins/superpowers.js"
  21. # Install skills
  22. mkdir -p "$SUPERPOWERS_DIR"
  23. cp -r "$REPO_ROOT/skills" "$SUPERPOWERS_DIR/"
  24. # Install plugin
  25. mkdir -p "$(dirname "$SUPERPOWERS_PLUGIN_FILE")"
  26. cp "$REPO_ROOT/.opencode/plugins/superpowers.js" "$SUPERPOWERS_PLUGIN_FILE"
  27. # Register plugin via symlink (what OpenCode actually reads)
  28. mkdir -p "$OPENCODE_CONFIG_DIR/plugins"
  29. ln -sf "$SUPERPOWERS_PLUGIN_FILE" "$OPENCODE_CONFIG_DIR/plugins/superpowers.js"
  30. # Create test skills in different locations for testing
  31. # Personal test skill
  32. mkdir -p "$OPENCODE_CONFIG_DIR/skills/personal-test"
  33. cat > "$OPENCODE_CONFIG_DIR/skills/personal-test/SKILL.md" <<'EOF'
  34. ---
  35. name: personal-test
  36. description: Test personal skill for verification
  37. ---
  38. # Personal Test Skill
  39. This is a personal skill used for testing.
  40. PERSONAL_SKILL_MARKER_12345
  41. EOF
  42. # Create a project directory for project-level skill tests
  43. mkdir -p "$TEST_HOME/test-project/.opencode/skills/project-test"
  44. cat > "$TEST_HOME/test-project/.opencode/skills/project-test/SKILL.md" <<'EOF'
  45. ---
  46. name: project-test
  47. description: Test project skill for verification
  48. ---
  49. # Project Test Skill
  50. This is a project skill used for testing.
  51. PROJECT_SKILL_MARKER_67890
  52. EOF
  53. echo "Setup complete: $TEST_HOME"
  54. echo "OPENCODE_CONFIG_DIR: $OPENCODE_CONFIG_DIR"
  55. echo "Superpowers dir: $SUPERPOWERS_DIR"
  56. echo "Skills dir: $SUPERPOWERS_SKILLS_DIR"
  57. echo "Plugin file: $SUPERPOWERS_PLUGIN_FILE"
  58. echo "Plugin registered at: $OPENCODE_CONFIG_DIR/plugins/superpowers.js"
  59. echo "Test project at: $TEST_HOME/test-project"
  60. # Helper function for cleanup (call from tests or trap)
  61. cleanup_test_env() {
  62. if [ -n "${TEST_HOME:-}" ] && [ -d "$TEST_HOME" ]; then
  63. rm -rf "$TEST_HOME"
  64. fi
  65. }
  66. # Export for use in tests
  67. export -f cleanup_test_env
  68. export REPO_ROOT
  69. export SUPERPOWERS_DIR
  70. export SUPERPOWERS_SKILLS_DIR
  71. export SUPERPOWERS_PLUGIN_FILE