diff --git a/justfile b/justfile new file mode 100644 index 0000000..f036575 --- /dev/null +++ b/justfile @@ -0,0 +1,115 @@ +# Variables +image_name := "time-banner" +container_name := "time-banner-dev" +port := "3000" + +# Default recipe +default: + @just --list + +# Development server with hot reload +dev: + @echo "๐Ÿš€ Starting development server..." + cargo watch -x "run --bin time-banner" + +# Simple development server (no hot reload) +run: + @echo "๐Ÿš€ Starting server..." + cargo run --bin time-banner + +# Comprehensive check pipeline +check: format lint build test docker-build + @echo "โœ… All checks passed!" + +# Format code +format: + @echo "๐ŸŽจ Formatting code..." + cargo fmt --all + +# Check formatting +format-check: + @echo "๐Ÿ” Checking formatting..." + cargo fmt --all -- --check + +# Lint with clippy +lint: + @echo "๐Ÿ” Running clippy..." + cargo clippy --all-targets --all-features -- -D warnings + +# Build project +build: + @echo "๐Ÿ”จ Building project..." + cargo build --release + +# Run tests +test: + @echo "๐Ÿงช Running tests..." + cargo test + +# Build Docker image +docker-build: + @echo "๐Ÿณ Building Docker image..." + docker build -t {{image_name}}:latest . + +# Run Docker container +docker-run: docker-build + @echo "๐Ÿš€ Running Docker container..." + docker run --rm -d --name {{container_name}} -p {{port}}:{{port}} {{image_name}}:latest + @echo "Container started at http://localhost:{{port}}" + +# Stop Docker container +docker-stop: + @echo "๐Ÿ›‘ Stopping Docker container..." + docker stop {{container_name}} || true + +# Docker logs +docker-logs: + @echo "๐Ÿ“‹ Showing Docker logs..." + docker logs {{container_name}} + +# Follow Docker logs +docker-logs-follow: + @echo "๐Ÿ“‹ Following Docker logs..." + docker logs -f {{container_name}} + +# Clean Docker artifacts +docker-clean: docker-stop + @echo "๐Ÿงน Cleaning Docker artifacts..." + docker rmi {{image_name}}:latest || true + +# Full Docker development cycle +docker-dev: docker-clean docker-run + @echo "๐Ÿณ Docker development environment ready!" + +# Clean cargo artifacts +clean: + @echo "๐Ÿงน Cleaning cargo artifacts..." + cargo clean + +# Install development dependencies +install-deps: + @echo "๐Ÿ“ฆ Installing development dependencies..." + cargo install cargo-watch + +# Security audit +audit: + @echo "๐Ÿ”’ Running security audit..." + cargo audit + +# Check dependencies for updates +outdated: + @echo "๐Ÿ“… Checking for outdated dependencies..." + cargo outdated + +# Release build with optimizations +release: + @echo "๐Ÿš€ Building release version..." + cargo build --release + +# Full CI pipeline (like what would run in CI) +ci: format-check lint build test docker-build + @echo "๐ŸŽฏ CI pipeline completed!" + +# Quick development check (faster than full check) +quick: format lint + @echo "โšก Quick check completed!" \ No newline at end of file