trictrac/justfile

134 lines
4.4 KiB
Makefile
Raw Normal View History

2024-10-01 17:48:10 +02:00
#!/usr/bin/env -S just --justfile
# ^ A shebang isn't required, but allows a justfile to be executed
# like a script, with `./justfile test`, for example.
2026-05-22 21:43:41 +02:00
# Bump the project version and start a git-flow release.
# Usage: just bump 0.2.12
# After running, finish with: git flow release finish <version>
bump version:
2026-05-22 22:15:10 +02:00
git flow release start {{version}}
2026-05-22 21:43:41 +02:00
sed -i '/^\[workspace\.package\]/,/^\[/{s/^version = ".*"/version = "{{version}}"/}' Cargo.toml
sed -i 's/version = "[0-9.]*"; # trictrac-version/version = "{{version}}"; # trictrac-version/' flake.nix
2026-06-08 14:45:17 +02:00
just frontend-flake-hash
2026-05-22 21:43:41 +02:00
git add Cargo.toml flake.nix
git commit -m "chore: bump version to {{version}}"
2026-06-08 14:45:17 +02:00
@echo "Done. Finish with: `git flow release finish {{version}}`"
# Get new trictrac front-end nix package hash and update flake.nix with it
frontend-flake-hash:
#!/usr/bin/env bash
set -euo pipefail
FAKE_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
# Match only non-commented hash lines (i.e. lines where 'hash' is the first non-space token)
CURRENT_HASH=$(grep -P '^\s+hash = "' flake.nix | grep -oP 'sha256-[^"]+' | head -1)
echo "Current hash: $CURRENT_HASH"
sed -i "s|$CURRENT_HASH|$FAKE_HASH|" flake.nix
set +e
OUTPUT=$(nix build .#trictrac-front --no-link 2>&1)
set -e
NEW_HASH=$(echo "$OUTPUT" | grep -oP 'got:\s+\Ksha256-\S+' || true)
if [ -n "$NEW_HASH" ]; then
sed -i "s|$FAKE_HASH|$NEW_HASH|" flake.nix
if [ "$NEW_HASH" = "$CURRENT_HASH" ]; then
echo "Hash already up to date: $CURRENT_HASH"
else
echo "Updated: $CURRENT_HASH$NEW_HASH"
fi
else
sed -i "s|$FAKE_HASH|$CURRENT_HASH|" flake.nix
printf "Unexpected build output (no hash mismatch found):\n%s\n" "$OUTPUT" >&2
exit 1
fi
2026-05-22 21:43:41 +02:00
2026-05-25 16:14:25 +02:00
# Sync pages content to production server
pages-deploy:
rsync -av clients/web/pages/ raspberry:/var/lib/trictrac/pages/
2024-10-01 17:48:10 +02:00
doc:
cargo doc --no-deps
2022-12-09 21:19:18 +01:00
shell:
2022-12-14 13:58:44 +01:00
devenv shell
2025-01-12 16:38:43 +01:00
runcli:
RUST_LOG=info cargo run --bin=client_cli
2026-03-25 20:16:46 +01:00
2026-05-19 20:35:13 +02:00
# example: fix-wasm-version 0.2.118
fix-wasm-version version:
cargo update \
-p wasm-bindgen --precise {{version}} \
-p wasm-bindgen-futures \
-p wasm-bindgen-test \
-p js-sys \
-p web-sys
2026-04-25 16:49:25 +02:00
[working-directory: 'clients/web']
dev:
trunk serve
2026-05-02 20:02:47 +02:00
test-web:
wasm-pack test --node clients/web
2026-04-25 16:49:25 +02:00
[working-directory: 'clients/web']
build:
trunk build --release
cp dist/index.html ../../deploy/index.html
cp dist/*.wasm ../../deploy/
cp dist/*.js ../../deploy/
cp dist/*.css ../../deploy/
[working-directory: 'deploy']
run-relay:
2026-05-25 16:14:25 +02:00
PAGES_DIR=../clients/web/pages ./relay-server
2026-04-25 16:49:25 +02:00
build-relay:
CARGO_PROFILE_RELEASE_OPT_LEVEL=3 cargo build -p relay-server --release
mkdir -p deploy
cp target/release/relay-server deploy
2026-04-23 20:54:52 +02:00
cp -u server/relay-server/GameConfig.json deploy/
2026-03-25 20:16:46 +01:00
# generate web stats report from the current nginx logs
stats:
ssh -t raspberry sudo goaccess /var/log/nginx/trictrac_access.log --log-format=COMBINED -o html > var/stats/report.html
2026-05-07 22:10:05 +02:00
# start a trictrac container with nixos-container
# `boot.enableContainers = true` must be set on local nixos system
local:
cd container && nix flake update nixpkgs trictrac && cd -
sudo nixos-container destroy trictrac
sudo nixos-container create trictrac --flake ./container/
nixos-container start trictrac
machinectl
docker-build:
nix build .#trictrac-docker
docker-run: docker-build
docker load < ./result
docker run mmai/trictrac -P
docker-publish: docker-build
docker push mmai/trictrac
2025-01-12 16:38:43 +01:00
runclibots:
2025-08-18 17:44:01 +02:00
cargo run --bin=client_cli -- --bot random,dqnburn:./bot/models/burnrl_dqn_40.mpk
2025-08-10 15:32:41 +02:00
#cargo run --bin=client_cli -- --bot dqn:./bot/models/dqn_model_final.json,dummy
2025-08-04 18:04:40 +02:00
# RUST_LOG=info cargo run --bin=client_cli -- --bot dummy,dqn
2025-08-01 20:45:57 +02:00
match:
cargo build --release --bin=client_cli
LD_LIBRARY_PATH=./target/release ./target/release/client_cli -- --bot dummy,dqn
2025-02-08 08:52:01 +01:00
profile:
echo '1' | sudo tee /proc/sys/kernel/perf_event_paranoid
cargo build --profile profiling
samply record ./target/profiling/client_cli --bot dummy,dummy
2025-08-21 17:39:45 +02:00
trainbot algo:
# cargo run --bin=train_dqn # ok
2025-08-12 21:56:52 +02:00
# ./bot/scripts/trainValid.sh
2025-08-21 17:39:45 +02:00
./bot/scripts/train.sh {{algo}}
plottrainbot algo:
./bot/scripts/train.sh plot {{algo}}
2025-07-28 09:22:33 +02:00
debugtrainbot:
cargo build --bin=train_dqn_burn
RUST_BACKTRACE=1 LD_LIBRARY_PATH=./target/debug ./target/debug/train_dqn_burn
profiletrainbot:
echo '1' | sudo tee /proc/sys/kernel/perf_event_paranoid
cargo build --profile profiling --bin=train_dqn_burn
2025-08-01 20:45:57 +02:00
LD_LIBRARY_PATH=./target/profiling samply record ./target/profiling/train_dqn_burn