#!/bin/sh list_lists() { options=($(./target/debug/lm list) "[add]" "[remove]") selected_option=$(printf '%s\n' "${options[@]}" | fzf --prompt="select an option: ") if [ -n "$selected_option" ]; then case "$selected_option" in "[add]") add_list ;; "[remove]") delete_list ;; *) list_items "$selected_option" ;; esac fi } delete_list() { list_name=$(./target/debug/lm list | fzf --prompt="select a list to delete: ") if [ -n "$list_name" ]; then remove_list "$list_name" fi } remove_list() { list_name="$1" ./target/debug/lm remove "$list_name" } add_list() { new_list=$(read -p "[enter a name for the list]: " && echo "$REPLY") if [ -n "$new_list" ]; then ./target/debug/lm add "$new_list" list_items "$new_list" fi } list_items() { list_name="$1" while true; do options=($(./target/debug/lm list "$list_name") "[remove]" "[add]" "[back]") selected_option=$(printf '%s\n' "${options[@]}" | fzf --prompt="select an option: ") if [ -z "$selected_option" ]; then break elif [ "$selected_option" == "[add]" ]; then add_item "$list_name" elif [ "$selected_option" == "[remove]" ]; then delete_item "$list_name" elif [ "$selected_option" == "[back]" ]; then list_lists && break else edit_item "$list_name" "$selected_option" fi done } delete_item() { list_name="$1" item_content=$(./target/debug/lm list "$list_name" | fzf --prompt="select an item to delete: ") if [ -n "$item_content" ]; then remove_item "$list_name" "$item_content" fi } add_item() { list_name="$1" new_item=$(read -p "[enter a name for the item]: " && echo "$REPLY") if [ -n "$new_item" ]; then ./target/debug/lm add "$list_name" "$new_item" list_items "$list_name" fi } remove_item() { list_name="$1" item_content="$2" ./target/debug/lm remove "$list_name" "$item_content" } edit_item() { list_name="$1" item_content="$2" if [[ $item_content == *http*://* || $item_content == *https*://* ]]; then xdg-open "$item_content" edit_item "$list_name" "$item_content" "done" else new_status=$(printf "todo\ndoing\ndone" | fzf --prompt="select a status for the item: ") if [ -n "$new_status" ]; then ./target/debug/lm edit "$list_name" "$item_content" "$new_status" fi fi } list_lists