#!/usr/bin/bash
# -*- mode: sh -*-

if [ -d "$(dirname "$0")/lib" ] && [ -f "$(dirname "$0")/lib/mzk-lib-marker" ]; then
    export MZK_LIB="$(dirname "$0")/lib"
elif [ -d /usr/lib/mzk ]; then
    export MZK_LIB=/usr/lib/mzk
elif [ -d /usr/local/lib/mzk ]; then
    export MZK_LIB=/usr/local/lib/mzk
elif [ -d "$HOME/.local/lib/mzk" ]; then
    export MZK_LIB="$HOME/.local/lib/mzk"
else
    echo "Failed to find required support files; try reinstalling mzk."
    exit 1
fi


export MZK=$0

if [ "$(basename "$0")" == "mzk-cli" ]; then
    export MZK_UNFRIENDLY=1
fi

source "$MZK_LIB/console.sh"
source "$MZK_LIB/note.sh"
source "$MZK_LIB/list.sh"
source "$MZK_LIB/tags.sh"
source "$MZK_LIB/edit.sh"
source "$MZK_LIB/git.sh"
source "$MZK_LIB/add.bash"

if [[ -z "$MZK_PATH" ]]; then
    if [[ -d "$HOME/zettelkasten" ]]; then
        export MZK_PATH="$HOME/zettelkasten"
    elif [[ -d "$HOME/.local/share/mzk/notes" ]]; then
        export MZK_PATH="$HOME/.local/share/mzk/notes"
    else
        console__err mzk "no notes directory found"
        console__err mzk "try making a ~/zettelkasten directory"
        exit 1
    fi
fi

usage() {
    if which "mzk-$1" > /dev/null 2>&1; then
        "mzk-$1" "${@:1}"
    else
        console__err mzk "usage: mzk <command> [args...]"
        console__err mzk "man 1 mzk for more information"
    fi
}

declare -A COMMANDS=(
    [main]=usage

    [list]=list__all
    [list-one]=list__one_id
    [find]=list__find

    [search-tag]=tags__search

    [edit]=edit__edit

    [git]=git__git
    [ci]=git__ci

    [add]=add__parser

    [refs]=note__refs_id
)

source "$MZK_LIB/argparse.bash"
