# vim: set filetype=zsh:
# Put this on bottom of ~/.zshrc

# https://github.com/ohmyzsh/ohmyzsh/wiki/Settings#automatic-title
ZSH_THEME_TERM_TITLE_IDLE="%~"
ZSH_THEME_TERM_TAB_TITLE_IDLE="%~"

# https://github.com/romkatv/powerlevel10k#how-do-i-configure-instant-prompt
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off

# https://github.com/romkatv/powerlevel10k#mitigation
typeset -g POWERLEVEL9K_TERM_SHELL_INTEGRATION=true
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()

# Alias
alias g="git"
alias moe="make"
alias meo="make"

# https://wiki.archlinux.org/title/XDG_Base_Directory
export XDG_CONFIG_HOME=~/.config
export XDG_CACHE_HOME=~/.cache
export XDG_DATA_HOME=~/.local/share

# https://www.topbug.net/blog/2016/09/27/make-gnu-less-more-powerful/
export LESS="-RF -i -K -s -x2 --wordwrap"

# nvim
if command -v nvim &>/dev/null; then
    export EDITOR=nvim
    export VISUAL=nvim
    export GIT_EDITOR=nvim
    alias vi="nvim"
    alias vim="nvim"
fi

# go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# Depend on your company
# Please copy this manually to ~/.zshrc
# export GOPRIVATE=example.company.com

# fzf
# https://github.com/junegunn/fzf
if command -v fzf &>/dev/null; then
    export FZF_COMPLETION_TRIGGER='~~'

    if command -v fd &>/dev/null; then
        _fzf_compgen_path() {
            fd --type file . "$1"
        }

        _fzf_compgen_dir() {
            fd --type directory . "$1"
        }

        export FZF_DEFAULT_COMMAND="fd --type file --color=always"
        export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
        export FZF_ALT_C_COMMAND="fd --type directory --color=always"
    fi

    export FZF_DEFAULT_OPTS="\
        --ansi \
        --pointer='🔫' --prompt='🪓 ' \
        --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
        --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
        --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8"

    if command -v bat &>/dev/null; then
        export FZF_CTRL_T_OPTS="--preview 'bat --color=always --line-range=:500 {}'"
    fi

    if command -v eza &>/dev/null; then
        export FZF_ALT_C_OPTS="--preview 'eza --tree --level 1 {}'"
    fi
fi

# https://github.com/BurntSushi/ripgrep
if command -v rg &>/dev/null; then
    export RIPGREP_CONFIG_PATH="$HOME/.config/ripgrep/ripgreprc"
fi

# https://github.com/eza-community/eza
if command -v eza &>/dev/null; then
    alias ls="eza"
    alias la="eza -la"
    alias lt="eza --tree"
fi

# https://github.com/wilfred/difftastic
if command -v difft &>/dev/null; then
    export DFT_DISPLAY=inline
    export DFT_CONTEXT=5
    export DFT_TAB_WIDTH=2
fi

# https://restic.readthedocs.io/en/latest/manual_rest.html
if command -v restic &>/dev/null; then
    export RESTIC_PASSWORD_FILE=$HOME/.restic_password_file
fi

# https://github.com/sharkdp/vivid
if command -v vivid &>/dev/null; then
    export LS_COLORS="$(vivid generate catppuccin-mocha)"
fi

# https://github.com/ajeetdsouza/zoxide
if command -v zoxide &>/dev/null; then
    eval "$(zoxide init zsh)"
fi

# https://github.com/walles/moar
if command -v moar &>/dev/null; then
    export MOAR="-no-linenumbers -no-statusbar -quit-if-one-screen -wrap"
    export PAGER=moar
fi

# https://github.com/atuinsh/atuin
if command -v atuin &>/dev/null; then
    eval "$(atuin init zsh --disable-up-arrow)"
fi

# https://github.com/Schniz/fnm
if command -v fnm &>/dev/null; then
    eval "$(fnm env --use-on-cd)"
fi

# https://github.com/pyenv/pyenv
if command -v pyenv &>/dev/null; then
    export PYENV_ROOT="$HOME/.pyenv"
    [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
fi

# Depend on your company
# https://github.com/ankitpokhrel/jira-cli
# Remember to jira init local not cloud
export JIRA_AUTH_TYPE=bearer

# https://github.com/talwat/pokeget-rs
rand_poke=$((RANDOM % 6))
if [[ $rand_poke -eq 0 ]]; then
    cat ~/.config/pokeget/pikachu.txt
elif [[ $rand_poke -eq 1 ]]; then
    cat ~/.config/pokeget/clefairy.txt
elif [[ $rand_poke -eq 2 ]]; then
    cat ~/.config/pokeget/ditto.txt
elif [[ $rand_poke -eq 3 ]]; then
    cat ~/.config/pokeget/chikorita.txt
elif [[ $rand_poke -eq 4 ]]; then
    cat ~/.config/pokeget/eevee.txt
elif [[ $rand_poke -eq 5 ]]; then
    cat ~/.config/pokeget/squirtle.txt
fi
