Files
nixos/home/.local/usr/bin/capture-note.sh
2025-08-15 17:44:24 -04:00

57 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# Set directory path for Vimwiki files
WIKI_DIR="$HOME/org/wiki" # Replace with the path to your Vimwiki directory
# Get the list of existing note titles, replacing underscores with spaces for display
EXISTING_TITLES=$(find "$WIKI_DIR/notes" -type f -name "*.wiki" -exec basename {} .wiki \; | tr '_' ' ')
# Use fzf to let the user select an existing title or type a new one
TITLE=$( (echo "$EXISTING_TITLES" && echo "[New Note]") | fzf --prompt="Select or enter title: " --print-query)
# Check if the user chose an existing title or opted for a new note
if [[ "$TITLE" = "[New Note]" || -z "$TITLE" ]]; then
# Prompt for a new title if "New Note" was selected
TITLE=$(echo "" | fzf --prompt="Enter title for new entry: ")
fi
# Exit if no title was entered
if [[ -z "$TITLE" ]]; then
echo "No title entered. Exiting."
exit 1
fi
# Format the filename by replacing spaces with underscores and lowercasing
FILENAME_TIMESTAMP=$(date +"%Y%m%d%H%M")
FILENAME="${FILENAME_TIMESTAMP}-$(echo "$TITLE" | tr ' ' '_' | tr '[:upper:]' '[:lower:]').wiki"
NEW_FILE="$WIKI_DIR/notes/$FILENAME"
# Check if a file with this title already exists
EXISTING_FILE=$(find "$WIKI_DIR/notes" -type f -name "$(echo "$TITLE" | tr ' ' '_' | tr '[:upper:]' '[:lower:]').wiki")
if [[ -n "$EXISTING_FILE" ]]; then
# Open the existing file in Neovim if found
nvim "$EXISTING_FILE"
else
# Create a new file with the specified template if it does not exist
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")
echo "= $TITLE =
*Created:* $TIMESTAMP
== Summary ==
== Tasks ==
== Notes ==
== Resources ==
* [[wiki link]] for additional content
* [[other wiki link|Desc]]
" > "$NEW_FILE"
# Add a link to the new file at the bottom of index.wiki
echo "- [[$FILENAME|$TITLE]]" >> "$WIKI_DIR/index.wiki"
# Open the new file in Neovim
nvim "$NEW_FILE"
fi