# print the available options
help:
    just -l

# Installs Words! local as if was built for Flathub
flathub-install:
    cd ../page.codeberg.petsoi.words && flatpak run org.flatpak.Builder --force-clean --sandbox --user --install --install-deps-from=flathub --ccache --mirror-screenshots-url=https://dl.flathub.org/media/ --repo=repo builddir page.codeberg.petsoi.words.json

# Executes all linters for Flathub
flathub-lint:
    flatpak run --command=flatpak-builder-lint org.flatpak.Builder manifest ../page.codeberg.petsoi.words/page.codeberg.petsoi.words.json

# Update the flatpak dependencies
flathub-update-cargo-dependencies:
    python3 helper/flatpak-cargo-generator.py Cargo.lock -o ../page.codeberg.petsoi.words/cargo-sources.json

# Entering shell for python
enter-shell:
    poetry shell

# Get Word length of for file, consider header
word-lengths name:
    awk 'NR >= 5 {for (i=1; i<=NF; i++) print length($i)}' "data/resources/word-lists/{{ name }}" | sort -n | uniq | paste -sd,

# Freshly build and install Flatpak on machine
install:
    flatpak-builder --disable-rofiles-fuse --user --force-clean --install build-dir page.codeberg.petsoi.words.json

# Run program inside Flatpak
run:
    flatpak-builder --run build-dir page.codeberg.petsoi.words.json words

# Removes all words which are less the 4 and more than 12 letters, no header
remove-incorrect-words name:
    awk 'length($0) >= 4 && length($0) <= 11' "data/resources/word-lists/{{ name }}" > "data/resources/word-lists/tmp.txt"
    mv data/resources/word-lists/tmp.txt "data/resources/word-lists/{{ name }}"

update_pot_file:
    xtr src/main.rs -o po/words.pot
local_build_dir := "_build-local"
local_prefix := env_var('HOME') / ".local"

# Build and install Words! as a native (non-Flatpak) binary under ~/.local
local-install:
    #!/usr/bin/env sh
    set -eu
    if [ ! -d {{local_build_dir}} ]; then
        meson setup {{local_build_dir}} --prefix={{local_prefix}} -Dprofile=development
    else
        meson setup --reconfigure {{local_build_dir}} >/dev/null
    fi
    meson install -C {{local_build_dir}}

# Run the natively installed binary (run `just local-install` first)
local-run:
    XDG_DATA_DIRS="{{local_prefix}}/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" {{local_prefix}}/bin/words

# Kill any running instance, rebuild, and relaunch in the background
local-reload:
    #!/usr/bin/env sh
    set -eu
    export XDG_DATA_DIRS="{{local_prefix}}/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
    pkill -f '{{local_prefix}}/bin/words$' 2>/dev/null || true
    just local-install
    nohup {{local_prefix}}/bin/words > /tmp/words.log 2>&1 &
    disown
    sleep 1
    pgrep -af '{{local_prefix}}/bin/words$' || echo "words did not start - check /tmp/words.log"
