Files
tkmind_go/ui/goose2/justfile
T
Jack Amadeo 482f1962c1 Move goose2 (#8516)
Signed-off-by: Jack Amadeo <jackamadeo@squareup.com>
Co-authored-by: block-open-source[bot] <201011344+block-open-source[bot]@users.noreply.github.com>
Co-authored-by: block-open-source[bot] <1159699+block-open-source[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: tulsi <tulsi@block.xyz>
Co-authored-by: morgmart <98432065+morgmart@users.noreply.github.com>
Co-authored-by: Bradley Axen <baxen@squareup.com>
Co-authored-by: Alex Hancock <alexhancock@block.xyz>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Nahiyan Khan <nahiyan.khan@gmail.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
2026-04-14 14:39:30 +00:00

151 lines
5.1 KiB
Makefile

# Default recipe
default:
@just --list
# ── Dev Environment ──────────────────────────────────────────
# Install dependencies
setup:
pnpm install
cd src-tauri && cargo build
# ── Build & Check ────────────────────────────────────────────
# Run all checks (lint, format, typecheck, file sizes)
check:
pnpm check
pnpm typecheck
# Format code
fmt:
pnpm format
cd src-tauri && cargo fmt
# Check formatting without modifying
fmt-check:
pnpm exec biome format .
cd src-tauri && cargo fmt --check
# Run clippy on Tauri backend
clippy:
cd src-tauri && cargo clippy -- -D warnings
# Build the frontend
build:
pnpm build
# Check Tauri Rust formatting
tauri-fmt-check:
cd src-tauri && cargo fmt --check
# Check Tauri Rust types
tauri-check:
cd src-tauri && cargo check
# Full CI gate
ci: check clippy test build tauri-check
# ── Test ─────────────────────────────────────────────────────
# Run unit/component tests
test:
pnpm test
# Run tests in watch mode
test-watch:
pnpm test:watch
# Run tests with coverage
test-coverage:
pnpm test:coverage
# Run E2E smoke tests (builds first)
test-e2e:
pnpm test:e2e:smoke
# Run all E2E tests (builds first)
test-e2e-all:
pnpm test:e2e
# ── Run ──────────────────────────────────────────────────────
# Start the desktop app in dev mode
dev:
#!/usr/bin/env bash
set -euo pipefail
# Derive a stable port from the working directory so the same worktree
# always gets the same port. This avoids changing TAURI_CONFIG between
# runs, which would invalidate Cargo's build cache and trigger a full
# Rust rebuild every time.
VITE_PORT=$(python3 -c "import hashlib,os; h=int(hashlib.sha256(os.getcwd().encode()).hexdigest(),16); print(10000 + h % 55000)")
export VITE_PORT
PROJECT_DIR=$(pwd)
TAURI_CONFIG="{\"build\":{\"devUrl\":\"http://localhost:${VITE_PORT}\",\"beforeDevCommand\":{\"script\":\"cd ${PROJECT_DIR} && exec pnpm exec vite --port ${VITE_PORT} --strictPort\",\"cwd\":\".\",\"wait\":false}}}"
# In worktrees, generate a labeled icon so you can tell instances apart
if git rev-parse --is-inside-work-tree &>/dev/null; then
GIT_DIR=$(git rev-parse --git-dir)
if [[ "$GIT_DIR" == *".git/worktrees/"* ]]; then
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
WORKTREE_LABEL="${BRANCH_NAME##*/}"
ICON_DIR="$(pwd)/src-tauri/target/dev-icons"
mkdir -p "$ICON_DIR"
DEV_ICON="$ICON_DIR/icon.icns"
if swift scripts/generate-dev-icon.swift src-tauri/icons/icon.icns "$DEV_ICON" "$WORKTREE_LABEL"; then
echo "🌳 Worktree: ${WORKTREE_LABEL}"
TAURI_CONFIG=$(python3 -c "import json,sys; a=json.loads(sys.argv[1]); a['bundle']={'icon':['$DEV_ICON']}; print(json.dumps(a))" "$TAURI_CONFIG")
fi
fi
fi
pnpm tauri dev --features app-test-driver --config "$TAURI_CONFIG"
# Start the desktop app with dev config
dev-debug:
#!/usr/bin/env bash
set -euo pipefail
VITE_PORT=$(python3 -c "import hashlib,os; h=int(hashlib.sha256(os.getcwd().encode()).hexdigest(),16); print(10000 + h % 55000)")
export VITE_PORT
EXTRA_CONFIG="--config {\"build\":{\"devUrl\":\"http://localhost:${VITE_PORT}\",\"beforeDevCommand\":{\"script\":\"exec ./node_modules/.bin/vite --port ${VITE_PORT} --strictPort\",\"cwd\":\"..\",\"wait\":false}}}"
# In worktrees, generate a labeled icon so you can tell instances apart
if git rev-parse --is-inside-work-tree &>/dev/null; then
GIT_DIR=$(git rev-parse --git-dir)
if [[ "$GIT_DIR" == *".git/worktrees/"* ]]; then
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
WORKTREE_LABEL="${BRANCH_NAME##*/}"
ICON_DIR="$(pwd)/src-tauri/target/dev-icons"
mkdir -p "$ICON_DIR"
DEV_ICON="$ICON_DIR/icon.icns"
if swift scripts/generate-dev-icon.swift src-tauri/icons/icon.icns "$DEV_ICON" "$WORKTREE_LABEL"; then
echo "🌳 Worktree: ${WORKTREE_LABEL}"
EXTRA_CONFIG="$EXTRA_CONFIG --config {\"bundle\":{\"icon\":[\"$DEV_ICON\"]}}"
fi
fi
fi
pnpm tauri dev --config src-tauri/tauri.dev.conf.json $EXTRA_CONFIG
# Start only the frontend dev server
dev-frontend:
pnpm dev
# ── Utilities ────────────────────────────────────────────────
# Clean build artifacts
clean:
cd src-tauri && cargo clean
rm -rf dist
rm -rf node_modules
# Cherry-pick commits from the goose2 repo into ui/goose2/
cherry-pick-goose2 *ARGS:
git fetch goose2
git format-patch -1 {{ARGS}} --stdout | git am --directory=ui/goose2