# Justfile for Migrate Database Changes Workflow
# Docs: https://just.systems/man/en/

# ------------------------------------------------------------------------------
#  Global settings
# ------------------------------------------------------------------------------

# Load Env
set dotenv-load
set dotenv-required := true

# Use zsh
set shell := ["bash", "-cu"]

# ------------------------------------------------------------------------------
#  Default
# ------------------------------------------------------------------------------

# List all Available recipes
[private]
default:
  @just --list --unsorted

# ------------------------------------------------------------------------------
#  Snake Script helpers
# ------------------------------------------------------------------------------

run:
  "{{justfile_directory()}}/main.py"

# ------------------------------------------------------------------------------
#  Testing helpers
# ------------------------------------------------------------------------------

test-constrictor:
  #!/usr/bin/env bash
  set -euo pipefail

  BATTLESNAKE_CLI=battlesnake_cli_1.2.3_Linux_x86_64/battlesnake
  $BATTLESNAKE_CLI play -W 11 -H 11 --name 'Python Starter Project' --url http://localhost:8000 -g constrictor --browser --minimumFood 0

test-seed:
  #!/usr/bin/env bash
  set -euo pipefail

  BATTLESNAKE_CLI=battlesnake_cli_1.2.3_Linux_x86_64/battlesnake
  $BATTLESNAKE_CLI play -W 11 -H 11 --name 'Python Starter Project' --url http://localhost:8000 -g solo --browser --seed 1713099635738952360

# ------------------------------------------------------------------------------
#  Fataset helpers
# ------------------------------------------------------------------------------

export-dataset input="data" output="data/dataset/good_moves.jsonl":
  python -m server.DatasetExporter --input "{{input}}" --output "{{output}}"

curate-dataset input="good_moves-*.jsonl" output="data/dataset/best_moves.jsonl" min_turn="6" late_turn="20" max_safe_options="2" min_score="3" append="false" archive="false" archive_dir="":
  FLAGS=""; if [ "{{append}}" = "true" ]; then FLAGS="$FLAGS --append"; fi; if [ "{{archive}}" = "true" ]; then FLAGS="$FLAGS --archive-input"; fi; if [ -n "{{archive_dir}}" ]; then FLAGS="$FLAGS --archive-dir {{archive_dir}}"; fi; python -m server.DatasetCurator --input "{{input}}" --output "{{output}}" --min-turn "{{min_turn}}" --late-turn "{{late_turn}}" --max-safe-options "{{max_safe_options}}" --min-score "{{min_score}}" $FLAGS

analyze-dataset input="good_moves-*.jsonl" output="":
  if [ -n "{{output}}" ]; then python -m server.DatasetStats --input "{{input}}" --output "{{output}}"; else python -m server.DatasetStats --input "{{input}}"; fi
