#!/usr/bin/env sh

# Description: Navigate to directory using jump/autojump/zoxide
#
# Dependencies:
#   - jump - https://github.com/gsamokovarov/jump
#   - OR autojump - https://github.com/wting/autojump
#   - OR zoxide - https://github.com/ajeetdsouza/zoxide
#
# Note: The dependencies STORE NAVIGATION PATTERNS
#
# Shell: POSIX compliant
# Authors: Marty Buchaus, Dave Snider, Tim Adler

if [ ! -p "$NNN_PIPE" ]; then
    printf 'ERROR: NNN_PIPE is not set!'
    read -r _
    exit 2
fi

if type jump >/dev/null 2>&1; then
    printf "jump to : "
    read -r dir
    odir="$(jump cd "$dir")"
    printf "%s" "0c$odir" > "$NNN_PIPE"
elif type autojump >/dev/null 2>&1; then
    printf "jump to : "
    read -r dir
    odir="$(autojump "$dir")"
    printf "%s" "0c$odir" > "$NNN_PIPE"
elif type zoxide >/dev/null 2>&1; then
    if type fzf >/dev/null 2>&1; then
    	odir="$(zoxide query -i --)"
    	printf "%s" "0c$odir" > "$NNN_PIPE"
    else
	printf "jump to : "
    	read -r dir
    	odir="$(zoxide query -- "$dir")"
    	printf "%s" "0c$odir" > "$NNN_PIPE"
    fi
else
    printf "No supported autojump script found. (jump/autojump/zoxide are supported)"
    read -r _
fi