bin/nb

#!/usr/bin/env bash
# bin/nb — open or create today's note, optionally scoped to a topic.
# Notes live under $NOTES_ROOT (default: ~/notes) in YYYY/MM/YYYY-MM-DD.md.

set -euo pipefail

NOTES_ROOT="${NOTES_ROOT:-$HOME/notes}"
today=$(date +%Y-%m-%d)
yr=${today%%-*}
mo=${today:5:2}

if [[ $# -gt 0 ]]; then
  slug="${*// /-}"
  slug="${slug//[^A-Za-z0-9_-]/}"
  file="$NOTES_ROOT/topics/${slug}.md"
  mkdir -p "$(dirname "$file")"
  if [[ ! -f "$file" ]]; then
    printf '# %s\n\n' "$slug" > "$file"
  fi
else
  dir="$NOTES_ROOT/$yr/$mo"
  file="$dir/$today.md"
  mkdir -p "$dir"
  if [[ ! -f "$file" ]]; then
    {
      printf '# %s\n\n' "$today"
      printf '## today\n\n'
      printf '## notes\n'
    } > "$file"
  fi
fi

exec "${EDITOR:-nvim}" "$file"