# justfile for common household tasks

dotfiles_repo := "/home/jas/repos/codeberg.org/hyperreal/dotfiles"
homedir := "/home/jas"
configdir := "/home/jas/.config"

to-laptop:
    rsync -aAXP {{homedir}}/sync/ jas@laptop.lyrebird-marlin.ts.net:/home/jas/sync

to-desktop:
    rsync -aAXP {{homedir}}/sync/ jas@desktop.lyrebird-marlin.ts.net:/home/jas/sync

refresh-doom-emacs:
    rm -rf {{configdir}}/emacs
    git clone --depth 1 https://github.com/doomemacs/doomemacs {{configdir}}/emacs
    {{configdir}}/emacs/bin/doom install --force --verbose

deploy-dotfiles:
    cp -rfv {{dotfiles_repo}}/just/.justfile {{homedir}}
    cp -rfv {{dotfiles_repo}}/doom/.doom.d {{homedir}}
    cp -fv {{dotfiles_repo}}/zsh/.zshrc {{homedir}}
    cp -rfv {{dotfiles_repo}}/zsh/.zshrc.d {{homedir}}
    cp -rfv {{dotfiles_repo}}/config/.config/bat {{configdir}}
    cp -rfv {{dotfiles_repo}}/config/.config/git {{configdir}}
    cp -fv {{dotfiles_repo}}/config/.config/starship.toml {{configdir}}
    cp -rfv {{dotfiles_repo}}/config/.config/zellij {{configdir}}

save-dotfiles:
    cp -fv {{homedir}}/.justfile {{dotfiles_repo}}/just/
    cp -rfv {{homedir}}/.doom.d {{dotfiles_repo}}/doom/
    cp -fv {{homedir}}/.zshrc {{dotfiles_repo}}/zsh/
    cp -rfv {{homedir}}/.zshrc.d {{dotfiles_repo}}/zsh/
    cp -rfv {{configdir}}/bat {{dotfiles_repo}}/config/.config/
    cp -rfv {{configdir}}/git {{dotfiles_repo}}/config/.config/
    cp -fv {{configdir}}/starship.toml {{dotfiles_repo}}/config/.config/
    cp -rfv {{configdir}}/zellij {{dotfiles_repo}}/config/.config/

clean-dotfiles:
    rm -fv {{homedir}}/.justfile
    rm -rfv {{homedir}}/.doom.d
    rm -fv {{homedir}}/.zshrc
    rm -rfv {{homedir}}/.zshrc.d
    rm -rfv {{configdir}}/bat
    rm -rfv {{configdir}}/git
    rm -fv {{configdir}}/starship.toml
    rm -rfv {{configdir}}/zellij

dust:
    #!/usr/bin/env bash
    set -euo pipefail
    dl_url=$(curl -s "https://api.github.com/repos/bootandy/dust/releases/latest" | jq '.assets.[].browser_download_url' | grep "x86_64-unknown-linux-gnu.tar.gz" | tr -d '"')
    wget "$dl_url"
    filename=$(basename -s .tar.gz dust*)
    tar xvf "${filename}.tar.gz"
    sudo cp -v "${filename}/dust" /usr/local/bin/
    sudo chown root:root /usr/local/bin/dust
    rm -rf "$filename" "${filename}.tar.gz"

go-tools:
    go install golang.org/x/tools/gopls@latest
    go install github.com/fatih/gomodifytags@latest
    go install github.com/cweill/gotests/...@latest
    go install github.com/x-motemen/gore/cmd/gore@latest
    go install golang.org/x/tools/cmd/guru@latest

python-tools:
    pipx install --include-deps ansible --force
    pipx install black --force
    pipx install bpython --force
    pipx install pyflakes --force
    pipx install isort --force
    pipx install pipenv --force
    pipx install nose --force
    pipx install pytest --force
    pipx install uv --force
    pipx install get-def --force
    pipx install print-links --force
    pipx install print-wp-sources --force
    pipx inject bpython requests
    pipx inject bpython rich
    pipx inject bpython ollama
    pipx inject bpython qbittorrent-api

webdev-tools:
    sudo npm install -g @catppuccin/inkcat
    sudo npm install -g prettier
    sudo npm install -g js-beautify
    sudo npm install -g stylelint
    sudo dnf install -y tidy || sudo apt install -y tidy

rustup:
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

devilspie2:
    #!/usr/bin/env bash
    set -euo pipefail
    dl_url=$(curl --silent "https://api.github.com/repos/dsalt/devilspie2/releases/latest" | grep "tarball_url" | cut -d : -f 2,3 | tr -d '", ')
    wget "$dl_url" -O "$(basename $dl_url).tar.gz"
    filename="$(basename $dl_url).tar.gz"
    tar xvf "$filename"
    sudo dnf install -y glib2-devel lua-devel libwnck3-devel '@c-development' '@development-tools'
    cd dsalt-devilspie2*
    make
    sudo make install
    rm -rf "$filename" dsalt-devilspie2*

tailscale:
    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up

neovim:
    sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

    mkdir -p "${HOME}/.config/nvim"
    wget https://files.hyperreal.coffee/init.vim -O "${HOME}/.config/nvim/init.vim"

neovim-root:
    sudo sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

    sudo mkdir -p /root/.config/nvim
    sudo wget https://files.hyperreal.coffee/init.vim -O /root/.config/nvim/init.vim