# Build
cargo build
# Run tests
cargo test
# Format code (required before commits)
cargo fmt --all
# Lint (must pass with no warnings)
cargo clippy --all-targets --all-features -- -D warningsAll PRs must pass:
cargo fmt --all -- --check- Code formattingcargo clippy -- -D warnings- No clippy warnings allowedcargo test- All tests pass- Builds on Linux, macOS, and Windows
Popcorn CLI is a command-line tool for submitting GPU kernel optimization solutions to gpumode.com competitions.
src/
├── main.rs # Entry point, sets POPCORN_API_URL
├── cmd/ # Command handling
│ ├── mod.rs # CLI argument parsing (clap), config loading
│ ├── auth.rs # OAuth authentication (Discord/GitHub)
│ └── submit.rs # Submission logic, TUI app state machine
├── service/
│ └── mod.rs # HTTP client, API calls, SSE streaming
├── models/
│ └── mod.rs # Data structures (LeaderboardItem, GpuItem, AppState)
├── utils/
│ └── mod.rs # Directive parsing, text wrapping, ASCII art
└── views/
├── loading_page.rs # TUI loading screen with progress bar
└── result_page.rs # TUI results display with scrolling
-
Authentication (
cmd/auth.rs): User registers via Discord/GitHub OAuth. CLI ID stored in~/.popcorn.yaml. -
Submission (
cmd/submit.rs):- TUI mode: Interactive selection of leaderboard → GPU → mode
- Plain mode (
--no-tui): Direct submission with CLI flags - Reads solution file with optional
#!POPCORNdirectives for defaults
-
API Communication (
service/mod.rs):- Fetches available leaderboards and GPUs
- Submits solutions via multipart form POST
- Handles SSE (Server-Sent Events) streaming for real-time results
- Supports modes:
test,benchmark,leaderboard,profile
Users can embed defaults in their solution files:
#!POPCORN leaderboard amd-fp8-mm
#!POPCORN gpu MI300
def solution():
...Or C++ style:
//!POPCORN leaderboard nvidia-matmul
//!POPCORN gpu H100clap- CLI argument parsingratatui+crossterm- Terminal UIreqwest- HTTP client with SSE streamingtokio- Async runtimeserde/serde_yaml/serde_json- Serialization