| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- # RackPeek Development Commands
- # Run `just` or `just --list` to see available recipes.
- # Environment Variables
- # ---------------------
- # Add .dotnet/tools to PATH for Playwright CLI
- export PATH := env_var('HOME') + "/.dotnet/tools:" + env_var_or_default('PATH', '')
- # Variables
- # ---------
- _dotnet := "dotnet"
- _dockerfile := "RackPeek.Web/Dockerfile"
- _image := "rackpeek:ci"
- _setup_guide := "docs/development/dev-setup.md"
- # ─── Helpers/Private ────────────────────────────────────────────────────────
- [doc("Check if dotnet is installed, show setup guide redirect if not found.")]
- [private]
- _check-dotnet:
- @command -v {{ _dotnet }} >/dev/null 2>&1 || (echo "dotnet not found. See {{ _setup_guide }} for setup instructions." && exit 1)
- # ─── Default ────────────────────────────────────────────────────────────────
- [default]
- [doc("List all recipes with documentation")]
- [private]
- default:
- @just --list --justfile {{ justfile() }}
- # ─── Build ──────────────────────────────────────────────────────────────────
- [doc("Build the full solution (Debug)")]
- [group("build")]
- build: _check-dotnet
- {{ _dotnet }} build RackPeek.sln
- [doc("Build the full solution in Release mode")]
- [group("build")]
- build-release: _check-dotnet
- {{ _dotnet }} build RackPeek.sln -c Release
- [doc("Publish CLI as self-contained single-file binary")]
- [group("build")]
- build-cli runtime="linux-x64": _check-dotnet
- {{ _dotnet }} publish RackPeek/RackPeek.csproj -c Release -r {{ runtime }} \
- --self-contained true \
- -p:PublishSingleFile=true
- [doc("Build Web Docker image (required before E2E tests)")]
- [group("build")]
- build-web:
- docker build -t {{ _image }} -f {{ _dockerfile }} .
- # ─── Test ───────────────────────────────────────────────────────────────────
- [doc("Run CLI tests (fast; no Docker required)")]
- [group("test")]
- test-cli: _check-dotnet
- {{ _dotnet }} test Tests/Tests.csproj
- [doc("Install Playwright + browsers for E2E (first-time only)")]
- [group("test")]
- e2e-setup: _check-dotnet
- cd Tests.E2e && {{ _dotnet }} tool install --global Microsoft.Playwright.CLI
- cd Tests.E2e && {{ _dotnet }} build
- cd Tests.E2e && playwright install
- [doc("Run E2E tests (depends on build-web; run e2e-setup once)")]
- [group("test")]
- test-e2e: _check-dotnet build-web
- cd Tests.E2e && {{ _dotnet }} test
- [doc("Run CLI + E2E tests (rebuilds Web image)")]
- [group("test")]
- test-all: _check-dotnet build-web e2e-setup test-cli test-e2e
- [doc("Run full test suite (alias for test-all; matches CI / pre-PR checklist)")]
- [group("test")]
- ci: test-all
- # ─── Demo ───────────────────────────────────────────────────────────────────
- [doc("Generate CLI demo with VHS (needs: vhs, imagemagick, chrome)")]
- [group("demo")]
- build-cli-demo:
- cd vhs && vhs ./rpk.tape
- [doc("Capture Web UI demo as GIF (needs: Chrome, ImageMagick)")]
- [group("demo")]
- build-web-demo:
- cd vhs && chmod +x webui_capture.sh && ./webui_capture.sh
- # ─── Release ────────────────────────────────────────────────────────────────
- [doc("Build and push multi-arch Docker image to registry")]
- [group("release")]
- docker-push version:
- docker buildx build \
- --platform linux/amd64,linux/arm64 \
- -f {{ _dockerfile }} \
- -t aptacode/rackpeek:{{ version }} \
- -t aptacode/rackpeek:latest \
- --push .
- # ─── Run ────────────────────────────────────────────────────────────────────
- [doc("Run the docker container")]
- [group("run")]
- run-docker: _check-dotnet
- docker build -t {{ _image }} -f {{ _dockerfile }} .
- docker run -d -p 8080:8080 {{ _image }}
- [doc("Use the locally built CLI")]
- [group("run")]
- rpk *args: _check-dotnet
- ./RackPeek/bin/Debug/net10.0/RackPeek {{ args }}
- # ─── Utility ────────────────────────────────────────────────────────────────
- [doc("Clean build artifacts (bin, obj)")]
- [group("utility")]
- clean: _check-dotnet
- {{ _dotnet }} clean RackPeek.sln
|